SlideShare a Scribd company logo
Building an AppSec
Program
From the Ground Up:
An Honest Retrospective
John Melton
@_jtmelton
slides
@_jtmelton
whoami
- Past: Dev/Security engineering in defense, finance, technology companies
- Current: Leading AppSec at technology company (Oracle NetSuite)
- Side: OWASP*, AppSensor, Manna
- Opinions are my own, not my employers
@_jtmelton
mumble, mumble, mumble …
Jim is great
Neil is great, Jer is great, Ron is great
Thanks to all the organizers and
sponsors
@_jtmelton
Agenda:
An honest retrospective of
the last ~2 years building
an appsec program from
scratch: the good, the bad,
and the ugly ...
With an eye towards
immediate applicability of
lessons learned ...
And wrapping up with my
observations and beliefs
about what I would do if I
had it to do all over again
@_jtmelton
@_jtmelton
@_jtmelton
Gather round y’all, it’s ...
@_jtmelton
story time
@_jtmelton
Context Matters
@_jtmelton
Context
Environment
15yr old (acquired)
startup
Very smart engineers
No “security” people
CI/CD µServices /
DevOps
Very culture-protective
~350 people
Management
20yr old (acquirer)
startup
Very smart engineers
Full security team
Monolith, traditional ops
Broad, varied culture
~5,500 people
Me
The new guy
meh
“The” security team
I’ve done both
Need to get stuff done
1 person
@_jtmelton
Tasks
ToDo List (Aiming for 2yr
timeline)
● Learn environment
● Embed into team / culture
● Translate
● Secure everything
● Prep for compliance
● Share / leverage successes upstream
Resources
● Tooling
● Training material
● “Policies”
@_jtmelton
Day 0
@_jtmelton
Day 1
@_jtmelton
● Be humble
@_jtmelton
Lessons
Learned
Week 1
@_jtmelton
@_jtmelton
@_jtmelton
@_jtmelton
@_jtmelton
@_jtmelton
@_jtmelton
@_jtmelton
@_jtmelton
@_jtmelton
The First Weekend
@_jtmelton
● The business is still running
● They wouldn’t be paying you
if all the work was already
done
● Take a breath
@_jtmelton
Lessons
Learned
Q1
Proposed deliverables
Introductions
● Get to know people
● Get to know tech/processes
Update Training
● I’ve written training before
● We have a pretty good base to start from
Dependency Analysis ● DependencyCheck is awesome
● I’ve written training before
● We have a pretty good base to start from
@_jtmelton
Results
Introductions (100%)
● People are great
● Tech is great, Processes are good /
maturing
Update Training
(30%)
● Updated team HR training
● Made a dent in tech training
Dependency Analysis ● DependencyCheck is awesome
● I’ve written training before
● We have a pretty good base to start from
@_jtmelton
● Find key stakeholders
● Learn existing processes
● Learn the environment /
tools
@_jtmelton
Lessons
Learned
Q2
Proposed deliverables
Static Analysis
● We already have a tool
● I built one - setting one up should be easy!
Dynamic Analysis
● ZAP is awesome
● It’s just a script right?
Dependency Analysis
● DependencyCheck is awesome
● Need to get a handle on these 3rd party libs
Update Training
● I’ve written training before
● We have a pretty good base to start from
@_jtmelton
Results
Static Analysis (80%)
● A factory is hard work (especially on * apps)
● Oh yeah, we should vet and explain results
Dynamic Analysis (0%)
● ZAP is still awesome
● No time
Dependency Analysis
(100%)
● DependencyCheck is still awesome
● There’s a lot of low-hanging fruit here
Update Training (-10%)
● Way more stakeholders than I thought
● More work to do than initially planned
@_jtmelton
● Start to formulate questions
you want to answer (metrics)
(fail)
● Start an application
inventory (hard fail!)
● Tools _may_ not be the right
place to start (fail)
● CI/CD is security’s friend
● Get a handle on 3rd party
libraries - it’s low hanging
(often rotten) fruit
@_jtmelton
Lessons
Learned
Q3
Proposed deliverables
Credential Storage
● Need to clean this up
● Like Vault as a base
Dynamic Analysis
● Work with QA / Selenium
● Need help from project leader
Champions
● Extend relationship with interested folks
● Offer extra training and security info
Update SDLC
● The existing SDLC is restrictive
● Need to separate policy from standard
@_jtmelton
Results
Credential Storage
(100%)
● Good planning, coordination
● Vault operationally works in our env
Dynamic Analysis (100%)
● ZAP/Selenium/QA automation are powerful
● Project leaders want to help you succeed
Champions (50%)
● People are interested in security
● No formal program, small sharing network
Update SDLC (20%)
● This is complex, and needs high-level
approval
● SDLC touches everything
@_jtmelton
● Pick operationally
compatible tools for your
env (work with eng team for
input)
● Leverage open source where
possible (also contribute
back code, docs, stories,
etc.)
● Reach out to people on
github, twitter, phone, etc. -
they will actually help (fail,
see BSIMM)
● Share security knowledge
freely (fail)
● Policies matter *
@_jtmelton
Lessons
Learned
Q4
Proposed deliverables
Metrics
● Need to measure progress on desired goals
● Should be easy to collect and drive change
Threat Modeling
● We should fix arch/design issues too
● Aiming to start simply
Track Attack Surface
● Lots of micro-services
● How are they changing?
Update SDLC
● Work is now scoped
● Know stakeholders for approval
@_jtmelton
Results
Metrics (20%)
● There are lots of bad metrics
● Lots of stakeholders with significant input
Threat Modeling (100%)
● Starting small was key
● A picture and a list of threats
Track Attack Surface (75%)
● Surprisingly simple to support
● Really helpful over time and good signal
Update SDLC (100%)
● This was a lot of work
● A solid, clear policy is really helpful
@_jtmelton
● Measuring what you are
doing is critical.
Communicating that
information well is a
challenge.
● Security talks about the
“what’s wrong” all the time,
but rarely about proactive
controls (fail)
● People like threat modeling
(be the attacker)
● Threat modeling gives
developers power to
communicate and address
what keeps them up at night
(fail)@_jtmelton
Lessons
Learned
@_jtmelton
Progress Report
ToDo List
● Learn environment - Done
● Embed into team / culture - Done, solid champions core team
● Translate - Mostly done
● Secure everything - Basics are in place, still plenty of room for
improvement
● Prep for compliance - A little bit done
● Share / leverage successes upstream - Very little upstreamed
@_jtmelton
@_jtmelton
Q5
(Acquired)
Proposed deliverables
App Deployment Tool
● Needs a refresh
● Let’s upgrade security at the same time
Containers
● Chance to affect greenfield deployment
● Aim for reasonable default security bump
Runtime Intelligence
● Get runtime feedback about security
● Empower / delegate developers to monitor
Operational Tasks
● Integrate with other teams
● Produce / consume useful data
@_jtmelton
Results
App Deployment Tool (90%)
● Awesome tooling people are awesome
● Platform defaults matter
Containers (75%)
● Set strong, safe defaults for great bump
● Security features not always well-tested
Runtime Intelligence
(10%)
● Introduced the idea and tools
● Needs a “light bulb” moment
Operational Tasks (100%)
● This data is really valuable
● We don’t think about this enough
@_jtmelton
● Vault useful in many
contexts, operational ability
is important*
● Reminder: availability is part
of CIA triad - it is a security
issue
● We need more runtime intel
in our applications (fail)
● AppSec <--> OpSec is an
area ripe for exploration and
exploitation (fail)
● Went to BSIMM (world
changing moment) (fail)
@_jtmelton
Lessons
Learned
@_jtmelton
* http://blog.bronto.com/engineering/tooling-microservices-for-scale-and-
access/
http://blog.bronto.com/engineering/microservices-deployment-security-
flexibility/
Q6
Proposed deliverables
Core Security
Libraries
● Stop squashing individual bugs
● Need consistent mechanisms for devs
Source Code Attestation
● Verify steps from commit -> ops
● Auditability
Training Refresh
● Function-specific training
● Continue simplification
CI Upgrade
● Tooling upgrade & apis
● Versioned CI configuration
@_jtmelton
Results
Core Security Library
(50%)
● Built/extended core systems
● Partial custom rules to match
Src Code Attestation (100%)
● Requires integration work
● Audit log is powerful
Training Refresh (25%) ● Customization benefits from modularity
CI Upgrade (75%)
● Config versioning is powerful
● Declarative CI is powerful
@_jtmelton
● ** Killing bug classes is the
useful engineering work
(Fail)
● (git/web) Hooks are great
integration points (Fail)
@_jtmelton
Lessons
Learned
Q7
Proposed deliverables
Tool Additions
● Need broader coverage
● Tool vendors always behind
Immutable Infra
● Joint effort with eng
● Increase stability & security
Compliance
● Has to happen
● Supports business
Fast/Slow Checks
● Faster feedback on high confidence issues
● Block certain classes of issues
@_jtmelton
Results
Tool Additions
(100%)
● Lots of tools available these days
● Single purpose tools are nice
Immutable Infra (80%)
● Big eng win
● Big security win
Compliance (100%)
● Sanity check
● Low bar
Fast/Slow Checks
(100%)
● Further left
● Lots of low-hanging fruit here
@_jtmelton
● Completely fixing and
forever preventing an issue
(even a small one) is a win -
combine these to get
momentum
● Create minimum assertions
and raise the bar
● Config mgmt / Infra mgmt are
powerful
● The faster devs see the issue
relative to coding it, the
faster (and better!) the fix
(Fail)
@_jtmelton
Lessons
Learned
Q8
Proposed deliverables
Refresh SDLC
● Maturity step
● Chance to move left / increase visibility
App Portfolio
● Do a better job collecting metadata / metrics
● Single, consistent view
Compliance ● More, more, more
Fast/Slow Checks
● Faster feedback on high confidence issues
● Block certain classes of issues
@_jtmelton
Proposed deliverables
Refresh SDLC (100%)
● Tailor to different stakeholders
● Talk about privacy alongside security
App Portfolio (20%)
● Complex area
● Missing tool support
Compliance (100%) ● More, more, more
Fast/Slow Checks
● Faster feedback on high confidence issues
● Block certain classes of issues
@_jtmelton
● Privacy is something
everybody cares about (Fail)
● App Portfolio is ripe for a
solution, many people are
struggling in that area
● Hard to secure what you
don’t know about
@_jtmelton
Lessons
Learned
Progress Report
ToDo List
● Learn environment - Done
● Embed into team / culture - Done, solid champions core team
● Translate - Done
● Secure everything – We’re further, but always room for improvement
● Prep for compliance – Oh boy … did we ever
● Share / leverage successes upstream – Good progress
@_jtmelton
@_jtmelton
@_jtmelton
TODOs - People
● Work with the best people you
can
● Do small, focused, context-
sensitive training
● Connect with tribal knowledge
owners
● Build a real champions program
● Say “no” rarely
● Know your place and stay
humble - security is not the only
business concern
● Connect with others doing your
job in security at cons, social
media, etc. Ask them questions.
● Talk about security in regular life
(e.g. https://securityplanner.org/)
● Talk about security often (chat,
email, presentations, etc.)
● Talk about privacy
● Talk issues at the highest level
possible - exec buy-in is critical
@_jtmelton
TODOs - Process
● Have office hours, chatops,
email list - be available
● Never start with “no”. Default to
“how can we get to yes”?
● Use the champions program
● Actively build relationships with
other teams
● Collect useful data to improve
and build a data-driven process
● Live and breathe threat modeling
● Inject into the standard SDLC
(not as a blocker though)
● Reqs > Arch > Design > Code
● Use consistent terminology
(words matter)
● Develop method for ranking
apps
● Develop method for ranking
vulns
● Meet customers where they are
(chat, email, wiki, bugtracker,
etc.)@_jtmelton
TODOs - Technology
● Don’t have tech envy
● Isolate security services (e.g.
encryption as a service)
● Exploit CI (fast/slow lanes)
● Squash bug classes, not bugs
(bug of the month/quarter, top
“1”)
● Support / amplify good tech from
devs (containers, cloud, etc.)
● Build a solid app inventory
● Focus on and invest in self-
service
● Spend time on the “big” things
(cloud, 2/MFA, IAM, Authn/z,
crypto)
● Limit crypto primitives (e.g. nacl)
● Support primary tech stacks well
● Work with dev and ops to get
runtime info, and create a
feedback loop
● Build self-defending apps
(appsensor)
@_jtmelton
Some Homework
● “Starting Up Security” by Ryan McGeehan (https://medium.com/starting-up-
security)
● “Preventing Security Bugs Through Software Design” by Christoph Kern
(https://www.youtu.be/ccfEu-Jj0as)
● Measuring End-to-End Security Engineering by Garrett Held
(https://www.youtu.be/MLmQ4uSi4EU)
● “Software Security Metrics” (https://youtu.be/50vOxExpAOU) and “Effective
AppSec Metrics (https://youtu.be/dY8IuQ8rUd4), by Caroline Wong
● Starting a Metrics Program by Marcus Ranum
(https://youtu.be/yW7kSVwucSk)
● Enabling Product Security with Culture and Cloud by Astha Singhal and
Patrick Thomas (https://youtu.be/L1WaMzN4dhY)
@_jtmelton
@_jtmelton
Summary
This I Believe
@_jtmelton
This I Believe
You can’t do appsec effectively and
not understand code. You should be
able to read & write it. Same with
design & architecture.
@_jtmelton
This I Believe
Security teams don’t scale
effectively, even with significant
automation efforts. Build a
champions program, and move to
self-service.
@_jtmelton
This I Believe
We need more focus on detection
and response, not just prevention.
@_jtmelton
This I Believe
Certain solutions (executive
support/buy-in, 2FA, CI/CD
automation, threat modeling) move
the needle _much_ farther - focus on
those.
@_jtmelton
This I Believe
You cannot protect what you don’t
know about - build an app inventory.
@_jtmelton
@_jtmelton
@_jtmelton
@_jtmelton
Open Source
● We don’t all have huge teams
● Most/all of us use open source
docs, software
● Many of us build useful things
● Some of us can contribute at
work
● Many of us can contribute at
home
● You benefit the community
● You grow
● You build awareness of issues
● You help drive solutions
● You benefit personally and
professionally
@_jtmelton
Introducing …
@_jtmelton
Manna
@_jtmelton
@_jtmelton
@_jtmelton
@_jtmelton
This I Believe
We all have something useful to
contribute to the community.
@_jtmelton
This I Believe
@_jtmelton
● Docs - https://medium.com/starting-up-security
● Talks - https://www.youtube.com/watch?v=ccfEu-Jj0as
● Scripts - https://github.com/jgamblin/AWSScripts
● Code - https://github.com/jeremylong/DependencyCheck
● Organization - https://github.com/sbilly/awesome-security and
https://github.com/paragonie/awesome-appsec
● Work - https://github.com/nccgroup/Scout2 and
https://www.nccgroup.trust/us/our-research/understanding-and-hardening-
linux-containers/
This I Believe
@_jtmelton
● https://github.com/manna-
security
● Open Source (Apache 2)
● Alpha release (only 1 rule)
● Please contribute!
@_jtmelton
Manna
Simple static analysis &
automatic remediation
@_jtmelton
Building an AppSec Program From the Ground Up:  An Honest Retrospective
@_jtmelton
Questions ?

More Related Content

PPT
AiTi Education Software Testing Session 01 b
PDF
Management Issues in Test Automation
PDF
MeManagement Issues in Test Automation
PDF
Management Issues in Test Automation
PDF
Software Testing
PDF
Managing Successful Test Automation
PPT
Acceptance testing for rome
PPT
Niels Malotaux - Help We Have a QA Problem!
AiTi Education Software Testing Session 01 b
Management Issues in Test Automation
MeManagement Issues in Test Automation
Management Issues in Test Automation
Software Testing
Managing Successful Test Automation
Acceptance testing for rome
Niels Malotaux - Help We Have a QA Problem!

What's hot (20)

PPTX
Develop a Defect Prevention Strategy—or Else!
PPTX
How to make Automation an asset for Organization
PPT
Derk jan de Grood - ET, Best of Both Worlds
PPT
'Houston We Have A Problem' by Rien van Vugt & Maurice Siteur
PDF
Methodology: IT test
PPT
Agile Development For Rte Systems
PDF
Tactical Application Security: Getting Stuff Done - Black Hat Briefings 2015
PDF
Christian Bk Hansen - Agile on Huge Banking Mainframe Legacy Systems - EuroST...
PPTX
Metrics for Mofel-Based Systems Development
PPT
AiTi Education Software Testing Session 01 a
PPT
Peter Zimmerer - Establishing Testing Knowledge and Experience Sharing at Sie...
PPT
Michael Bolton - Two Futures of Software Testing
PPT
Darius Silingas - From Model Driven Testing to Test Driven Modelling
PDF
Defect Prevention & Predictive Analytics - XBOSoft Webinar
PPT
'Acceptance Testing' by Erik Boelen
PPTX
Machine Learning in Software Engineering
PPS
PDF
Henrik Andersson - Exploratory Testing Champions - EuroSTAR 2010
PDF
Fredrik Rydberg - Can Exploratory Testing Save Lives - EuroSTAR 2010
PPT
Risk management lec. 06
Develop a Defect Prevention Strategy—or Else!
How to make Automation an asset for Organization
Derk jan de Grood - ET, Best of Both Worlds
'Houston We Have A Problem' by Rien van Vugt & Maurice Siteur
Methodology: IT test
Agile Development For Rte Systems
Tactical Application Security: Getting Stuff Done - Black Hat Briefings 2015
Christian Bk Hansen - Agile on Huge Banking Mainframe Legacy Systems - EuroST...
Metrics for Mofel-Based Systems Development
AiTi Education Software Testing Session 01 a
Peter Zimmerer - Establishing Testing Knowledge and Experience Sharing at Sie...
Michael Bolton - Two Futures of Software Testing
Darius Silingas - From Model Driven Testing to Test Driven Modelling
Defect Prevention & Predictive Analytics - XBOSoft Webinar
'Acceptance Testing' by Erik Boelen
Machine Learning in Software Engineering
Henrik Andersson - Exploratory Testing Champions - EuroSTAR 2010
Fredrik Rydberg - Can Exploratory Testing Save Lives - EuroSTAR 2010
Risk management lec. 06
Ad

Similar to Building an AppSec Program From the Ground Up: An Honest Retrospective (20)

PDF
AppSec in an Agile World
PPTX
Owasp summit slides day 2
PPTX
HouSecCon 2019: Offensive Security - Starting from Scratch
ODP
Making security-agile matt-tesauro
ODP
Building an Open Source AppSec Pipeline - 2015 Texas Linux Fest
PDF
Owasp summit debrief v1.0 (jun 2017)
ODP
Building an Open Source AppSec Pipeline
PPTX
Дмитро Терещенко, "How to secure your application with Secure SDLC"
ODP
Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austin
PDF
Including security in devops
PPT
Software security engineering
PPT
Software security engineering
PPTX
Application Security from the Inside Out
PDF
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
PDF
ProdSec: A Technical Approach
PDF
Security's DevOps Transformation
PDF
DevSecOps: essential tooling to enable continuous security 2019-09-16
PPTX
Devops - Accelerating the Pace and Securing Along the Way - Thaddeus Walsh
PPT
Software Security Engineering
PDF
[DevSecOps Live] DevSecOps: Challenges and Opportunities
AppSec in an Agile World
Owasp summit slides day 2
HouSecCon 2019: Offensive Security - Starting from Scratch
Making security-agile matt-tesauro
Building an Open Source AppSec Pipeline - 2015 Texas Linux Fest
Owasp summit debrief v1.0 (jun 2017)
Building an Open Source AppSec Pipeline
Дмитро Терещенко, "How to secure your application with Secure SDLC"
Dev ops ci-ap-is-oh-my_security-gone-agile_ut-austin
Including security in devops
Software security engineering
Software security engineering
Application Security from the Inside Out
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
ProdSec: A Technical Approach
Security's DevOps Transformation
DevSecOps: essential tooling to enable continuous security 2019-09-16
Devops - Accelerating the Pace and Securing Along the Way - Thaddeus Walsh
Software Security Engineering
[DevSecOps Live] DevSecOps: Challenges and Opportunities
Ad

More from jtmelton (8)

PDF
Watch How The Giants Fall: Learning from Bug Bounty Results
PPTX
AllDayDevOps 2019 AppSensor
PDF
Watch How the Giants Fall
PDF
Towards Securing Micro-Services
PDF
AppSensor CodeMash 2017
PDF
Building Self-Defending Applications With OWASP AppSensor JavaOne 2016
PDF
AppSensor Near Real-Time Event Detection and Response - DevNexus 2016
PDF
AppSensor - Near Real Time Event Detection and Response
Watch How The Giants Fall: Learning from Bug Bounty Results
AllDayDevOps 2019 AppSensor
Watch How the Giants Fall
Towards Securing Micro-Services
AppSensor CodeMash 2017
Building Self-Defending Applications With OWASP AppSensor JavaOne 2016
AppSensor Near Real-Time Event Detection and Response - DevNexus 2016
AppSensor - Near Real Time Event Detection and Response

Recently uploaded (20)

PDF
Encapsulation theory and applications.pdf
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Approach and Philosophy of On baking technology
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
A comparative analysis of optical character recognition models for extracting...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
MYSQL Presentation for SQL database connectivity
Encapsulation theory and applications.pdf
Assigned Numbers - 2025 - Bluetooth® Document
sap open course for s4hana steps from ECC to s4
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Chapter 3 Spatial Domain Image Processing.pdf
Approach and Philosophy of On baking technology
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Encapsulation_ Review paper, used for researhc scholars
Big Data Technologies - Introduction.pptx
Programs and apps: productivity, graphics, security and other tools
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
NewMind AI Weekly Chronicles - August'25-Week II
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
A comparative analysis of optical character recognition models for extracting...
“AI and Expert System Decision Support & Business Intelligence Systems”
Building Integrated photovoltaic BIPV_UPV.pdf
Network Security Unit 5.pdf for BCA BBA.
MYSQL Presentation for SQL database connectivity

Building an AppSec Program From the Ground Up: An Honest Retrospective

  • 1. Building an AppSec Program From the Ground Up: An Honest Retrospective John Melton @_jtmelton
  • 3. whoami - Past: Dev/Security engineering in defense, finance, technology companies - Current: Leading AppSec at technology company (Oracle NetSuite) - Side: OWASP*, AppSensor, Manna - Opinions are my own, not my employers @_jtmelton
  • 4. mumble, mumble, mumble … Jim is great Neil is great, Jer is great, Ron is great Thanks to all the organizers and sponsors @_jtmelton
  • 5. Agenda: An honest retrospective of the last ~2 years building an appsec program from scratch: the good, the bad, and the ugly ...
  • 6. With an eye towards immediate applicability of lessons learned ...
  • 7. And wrapping up with my observations and beliefs about what I would do if I had it to do all over again
  • 11. Gather round y’all, it’s ... @_jtmelton story time
  • 14. Context Environment 15yr old (acquired) startup Very smart engineers No “security” people CI/CD µServices / DevOps Very culture-protective ~350 people Management 20yr old (acquirer) startup Very smart engineers Full security team Monolith, traditional ops Broad, varied culture ~5,500 people Me The new guy meh “The” security team I’ve done both Need to get stuff done 1 person @_jtmelton
  • 15. Tasks ToDo List (Aiming for 2yr timeline) ● Learn environment ● Embed into team / culture ● Translate ● Secure everything ● Prep for compliance ● Share / leverage successes upstream Resources ● Tooling ● Training material ● “Policies” @_jtmelton
  • 16. Day 0
  • 18. Day 1
  • 34. ● The business is still running ● They wouldn’t be paying you if all the work was already done ● Take a breath @_jtmelton Lessons Learned
  • 35. Q1
  • 36. Proposed deliverables Introductions ● Get to know people ● Get to know tech/processes Update Training ● I’ve written training before ● We have a pretty good base to start from Dependency Analysis ● DependencyCheck is awesome ● I’ve written training before ● We have a pretty good base to start from @_jtmelton
  • 37. Results Introductions (100%) ● People are great ● Tech is great, Processes are good / maturing Update Training (30%) ● Updated team HR training ● Made a dent in tech training Dependency Analysis ● DependencyCheck is awesome ● I’ve written training before ● We have a pretty good base to start from @_jtmelton
  • 38. ● Find key stakeholders ● Learn existing processes ● Learn the environment / tools @_jtmelton Lessons Learned
  • 39. Q2
  • 40. Proposed deliverables Static Analysis ● We already have a tool ● I built one - setting one up should be easy! Dynamic Analysis ● ZAP is awesome ● It’s just a script right? Dependency Analysis ● DependencyCheck is awesome ● Need to get a handle on these 3rd party libs Update Training ● I’ve written training before ● We have a pretty good base to start from @_jtmelton
  • 41. Results Static Analysis (80%) ● A factory is hard work (especially on * apps) ● Oh yeah, we should vet and explain results Dynamic Analysis (0%) ● ZAP is still awesome ● No time Dependency Analysis (100%) ● DependencyCheck is still awesome ● There’s a lot of low-hanging fruit here Update Training (-10%) ● Way more stakeholders than I thought ● More work to do than initially planned @_jtmelton
  • 42. ● Start to formulate questions you want to answer (metrics) (fail) ● Start an application inventory (hard fail!) ● Tools _may_ not be the right place to start (fail) ● CI/CD is security’s friend ● Get a handle on 3rd party libraries - it’s low hanging (often rotten) fruit @_jtmelton Lessons Learned
  • 43. Q3
  • 44. Proposed deliverables Credential Storage ● Need to clean this up ● Like Vault as a base Dynamic Analysis ● Work with QA / Selenium ● Need help from project leader Champions ● Extend relationship with interested folks ● Offer extra training and security info Update SDLC ● The existing SDLC is restrictive ● Need to separate policy from standard @_jtmelton
  • 45. Results Credential Storage (100%) ● Good planning, coordination ● Vault operationally works in our env Dynamic Analysis (100%) ● ZAP/Selenium/QA automation are powerful ● Project leaders want to help you succeed Champions (50%) ● People are interested in security ● No formal program, small sharing network Update SDLC (20%) ● This is complex, and needs high-level approval ● SDLC touches everything @_jtmelton
  • 46. ● Pick operationally compatible tools for your env (work with eng team for input) ● Leverage open source where possible (also contribute back code, docs, stories, etc.) ● Reach out to people on github, twitter, phone, etc. - they will actually help (fail, see BSIMM) ● Share security knowledge freely (fail) ● Policies matter * @_jtmelton Lessons Learned
  • 47. Q4
  • 48. Proposed deliverables Metrics ● Need to measure progress on desired goals ● Should be easy to collect and drive change Threat Modeling ● We should fix arch/design issues too ● Aiming to start simply Track Attack Surface ● Lots of micro-services ● How are they changing? Update SDLC ● Work is now scoped ● Know stakeholders for approval @_jtmelton
  • 49. Results Metrics (20%) ● There are lots of bad metrics ● Lots of stakeholders with significant input Threat Modeling (100%) ● Starting small was key ● A picture and a list of threats Track Attack Surface (75%) ● Surprisingly simple to support ● Really helpful over time and good signal Update SDLC (100%) ● This was a lot of work ● A solid, clear policy is really helpful @_jtmelton
  • 50. ● Measuring what you are doing is critical. Communicating that information well is a challenge. ● Security talks about the “what’s wrong” all the time, but rarely about proactive controls (fail) ● People like threat modeling (be the attacker) ● Threat modeling gives developers power to communicate and address what keeps them up at night (fail)@_jtmelton Lessons Learned
  • 52. Progress Report ToDo List ● Learn environment - Done ● Embed into team / culture - Done, solid champions core team ● Translate - Mostly done ● Secure everything - Basics are in place, still plenty of room for improvement ● Prep for compliance - A little bit done ● Share / leverage successes upstream - Very little upstreamed @_jtmelton
  • 55. Proposed deliverables App Deployment Tool ● Needs a refresh ● Let’s upgrade security at the same time Containers ● Chance to affect greenfield deployment ● Aim for reasonable default security bump Runtime Intelligence ● Get runtime feedback about security ● Empower / delegate developers to monitor Operational Tasks ● Integrate with other teams ● Produce / consume useful data @_jtmelton
  • 56. Results App Deployment Tool (90%) ● Awesome tooling people are awesome ● Platform defaults matter Containers (75%) ● Set strong, safe defaults for great bump ● Security features not always well-tested Runtime Intelligence (10%) ● Introduced the idea and tools ● Needs a “light bulb” moment Operational Tasks (100%) ● This data is really valuable ● We don’t think about this enough @_jtmelton
  • 57. ● Vault useful in many contexts, operational ability is important* ● Reminder: availability is part of CIA triad - it is a security issue ● We need more runtime intel in our applications (fail) ● AppSec <--> OpSec is an area ripe for exploration and exploitation (fail) ● Went to BSIMM (world changing moment) (fail) @_jtmelton Lessons Learned
  • 59. Q6
  • 60. Proposed deliverables Core Security Libraries ● Stop squashing individual bugs ● Need consistent mechanisms for devs Source Code Attestation ● Verify steps from commit -> ops ● Auditability Training Refresh ● Function-specific training ● Continue simplification CI Upgrade ● Tooling upgrade & apis ● Versioned CI configuration @_jtmelton
  • 61. Results Core Security Library (50%) ● Built/extended core systems ● Partial custom rules to match Src Code Attestation (100%) ● Requires integration work ● Audit log is powerful Training Refresh (25%) ● Customization benefits from modularity CI Upgrade (75%) ● Config versioning is powerful ● Declarative CI is powerful @_jtmelton
  • 62. ● ** Killing bug classes is the useful engineering work (Fail) ● (git/web) Hooks are great integration points (Fail) @_jtmelton Lessons Learned
  • 63. Q7
  • 64. Proposed deliverables Tool Additions ● Need broader coverage ● Tool vendors always behind Immutable Infra ● Joint effort with eng ● Increase stability & security Compliance ● Has to happen ● Supports business Fast/Slow Checks ● Faster feedback on high confidence issues ● Block certain classes of issues @_jtmelton
  • 65. Results Tool Additions (100%) ● Lots of tools available these days ● Single purpose tools are nice Immutable Infra (80%) ● Big eng win ● Big security win Compliance (100%) ● Sanity check ● Low bar Fast/Slow Checks (100%) ● Further left ● Lots of low-hanging fruit here @_jtmelton
  • 66. ● Completely fixing and forever preventing an issue (even a small one) is a win - combine these to get momentum ● Create minimum assertions and raise the bar ● Config mgmt / Infra mgmt are powerful ● The faster devs see the issue relative to coding it, the faster (and better!) the fix (Fail) @_jtmelton Lessons Learned
  • 67. Q8
  • 68. Proposed deliverables Refresh SDLC ● Maturity step ● Chance to move left / increase visibility App Portfolio ● Do a better job collecting metadata / metrics ● Single, consistent view Compliance ● More, more, more Fast/Slow Checks ● Faster feedback on high confidence issues ● Block certain classes of issues @_jtmelton
  • 69. Proposed deliverables Refresh SDLC (100%) ● Tailor to different stakeholders ● Talk about privacy alongside security App Portfolio (20%) ● Complex area ● Missing tool support Compliance (100%) ● More, more, more Fast/Slow Checks ● Faster feedback on high confidence issues ● Block certain classes of issues @_jtmelton
  • 70. ● Privacy is something everybody cares about (Fail) ● App Portfolio is ripe for a solution, many people are struggling in that area ● Hard to secure what you don’t know about @_jtmelton Lessons Learned
  • 71. Progress Report ToDo List ● Learn environment - Done ● Embed into team / culture - Done, solid champions core team ● Translate - Done ● Secure everything – We’re further, but always room for improvement ● Prep for compliance – Oh boy … did we ever ● Share / leverage successes upstream – Good progress @_jtmelton
  • 74. TODOs - People ● Work with the best people you can ● Do small, focused, context- sensitive training ● Connect with tribal knowledge owners ● Build a real champions program ● Say “no” rarely ● Know your place and stay humble - security is not the only business concern ● Connect with others doing your job in security at cons, social media, etc. Ask them questions. ● Talk about security in regular life (e.g. https://securityplanner.org/) ● Talk about security often (chat, email, presentations, etc.) ● Talk about privacy ● Talk issues at the highest level possible - exec buy-in is critical @_jtmelton
  • 75. TODOs - Process ● Have office hours, chatops, email list - be available ● Never start with “no”. Default to “how can we get to yes”? ● Use the champions program ● Actively build relationships with other teams ● Collect useful data to improve and build a data-driven process ● Live and breathe threat modeling ● Inject into the standard SDLC (not as a blocker though) ● Reqs > Arch > Design > Code ● Use consistent terminology (words matter) ● Develop method for ranking apps ● Develop method for ranking vulns ● Meet customers where they are (chat, email, wiki, bugtracker, etc.)@_jtmelton
  • 76. TODOs - Technology ● Don’t have tech envy ● Isolate security services (e.g. encryption as a service) ● Exploit CI (fast/slow lanes) ● Squash bug classes, not bugs (bug of the month/quarter, top “1”) ● Support / amplify good tech from devs (containers, cloud, etc.) ● Build a solid app inventory ● Focus on and invest in self- service ● Spend time on the “big” things (cloud, 2/MFA, IAM, Authn/z, crypto) ● Limit crypto primitives (e.g. nacl) ● Support primary tech stacks well ● Work with dev and ops to get runtime info, and create a feedback loop ● Build self-defending apps (appsensor) @_jtmelton
  • 77. Some Homework ● “Starting Up Security” by Ryan McGeehan (https://medium.com/starting-up- security) ● “Preventing Security Bugs Through Software Design” by Christoph Kern (https://www.youtu.be/ccfEu-Jj0as) ● Measuring End-to-End Security Engineering by Garrett Held (https://www.youtu.be/MLmQ4uSi4EU) ● “Software Security Metrics” (https://youtu.be/50vOxExpAOU) and “Effective AppSec Metrics (https://youtu.be/dY8IuQ8rUd4), by Caroline Wong ● Starting a Metrics Program by Marcus Ranum (https://youtu.be/yW7kSVwucSk) ● Enabling Product Security with Culture and Cloud by Astha Singhal and Patrick Thomas (https://youtu.be/L1WaMzN4dhY) @_jtmelton
  • 80. This I Believe You can’t do appsec effectively and not understand code. You should be able to read & write it. Same with design & architecture. @_jtmelton
  • 81. This I Believe Security teams don’t scale effectively, even with significant automation efforts. Build a champions program, and move to self-service. @_jtmelton
  • 82. This I Believe We need more focus on detection and response, not just prevention. @_jtmelton
  • 83. This I Believe Certain solutions (executive support/buy-in, 2FA, CI/CD automation, threat modeling) move the needle _much_ farther - focus on those. @_jtmelton
  • 84. This I Believe You cannot protect what you don’t know about - build an app inventory. @_jtmelton
  • 88. Open Source ● We don’t all have huge teams ● Most/all of us use open source docs, software ● Many of us build useful things ● Some of us can contribute at work ● Many of us can contribute at home ● You benefit the community ● You grow ● You build awareness of issues ● You help drive solutions ● You benefit personally and professionally @_jtmelton
  • 94. This I Believe We all have something useful to contribute to the community. @_jtmelton
  • 95. This I Believe @_jtmelton ● Docs - https://medium.com/starting-up-security ● Talks - https://www.youtube.com/watch?v=ccfEu-Jj0as ● Scripts - https://github.com/jgamblin/AWSScripts ● Code - https://github.com/jeremylong/DependencyCheck ● Organization - https://github.com/sbilly/awesome-security and https://github.com/paragonie/awesome-appsec ● Work - https://github.com/nccgroup/Scout2 and https://www.nccgroup.trust/us/our-research/understanding-and-hardening- linux-containers/
  • 97. ● https://github.com/manna- security ● Open Source (Apache 2) ● Alpha release (only 1 rule) ● Please contribute! @_jtmelton Manna Simple static analysis & automatic remediation

Editor's Notes

  • #39: Should have started all these things earlier
  • #43: Should have started all these things earlier
  • #45: Learned a little about the QA tools, and found a champion who wanted to work on this - used their expertise to build out some of the zap integrations (also bugged Simon)
  • #47: Simon spoke to me on the phone for an hour getting us setup Sometimes policies don’t matter, but as an org grows, there needs to be consistency Sharing knowledge more openly helped us get more people talking about security, and resources in the teams thinking about it (delegated)
  • #51: Need to give proactive patterns that are helpful (always use prepared statements, don’t concatenate strings in a loop, do centralized access control, etc.) Missed covering threat modeling earlier - gives them more control
  • #57: Containers - Nomad docker support story
  • #58: All delay failures
  • #63: All delay failures
  • #67: All delay failures
  • #71: All delay failures
  • #98: All delay failures