SlideShare a Scribd company logo
Securing the Continuous
Integration
Irene Michlin
People, process, and technology
Step 1: make sure your CI does not harm your security
Step 2: only then it can be used to improve your security
People
ProcessTechnology
Image from https://www.blazemeter.com/blog/ultimate-devops-tools-ecosystem-tutorial-part-1
Basic CI cycle
Developer Development machine Version Control repo CI Server
Write code +
tests
Pull latest code + tests
Local
build +
test run
Commit
Poll
Generate feedback
Feedback
Dashboard or gadget
“Continuous Integration assumes a high degree of tests
which are automated into the software”, Martin Fowler
Isolate your environment
• Phishing link in email => keylogger installed => source code gone (or backdoor
deployed)
• Experimenting with development network => accounting department affected before
EOY
• Extra challenges: remote work or BYOD
Basic CI cycle
Developer Development machine Version Control repo CI Server
Write code +
tests
Pull latest code + tests
Local
build +
test run
Commit
Poll
Generate feedback
Feedback
Dashboard or gadget
Version control server
• It has one job only – remove or disable everything else
• No shared or generic accounts
• Matching business process to close accounts
Basic CI cycle
Developer Development machine Version Control repo CI Server
Write code +
tests
Pull latest code + tests
Local
build +
test run
Commit
Poll
Generate feedback
Feedback
Dashboard or gadget
Integration build server
• Who is responsible for keeping it up to date?
• Where do external components come from?
• Check vendor advice on compiler and linker options
On September 18, 2014, RiskIQ
detected credential-stealing malware
being loaded onto users’ computers
through a drive-by download at
jQuery.com.
Not too long ago, news
broke about a malicious
version of Xcode dubbed
XcodeGhost that had been
surreptitiously injecting
malicious code into iOS
developers’ apps.
SK-CSIRT identified malicious software libraries in the
official Python package
repository, PyPI, posing as well known libraries. A
prominent example is a fake
package urllib-1.21.1.tar.gz, based upon a well known
package
urllib3-1.21.1.tar.gz.
Basic CI cycle
Developer Development machine Version Control repo CI Server
Write code +
tests
Pull latest code + tests
Local
build +
test run
Commit
Poll
Generate feedback
Feedback
Dashboard or gadget
Feedback mechanism
• IoT electronic toys are notoriously insecure
• Custom integration scripts - are you cutting corners?
Do no harm
• Do not acquire CI components « by accident »
• Not everything is secure out of the box
• Dormant account today is an attacker-controlled account tomorrow
- Compromising a staging continuous integration server (Jenkins) from a developer's
machine, which then gave us access to the company's production Chef repository,
allowing us to push a reverse shell to a production server.
- Using access to a dev/staging Jenkins server to modify code in repositories after they've
been through code review, which were then replicated to production.
https://www.blackhat.com/us-17/briefings.html#developing-trust-and-gitting-betrayed
Treat people right
• Don’t leave new starters to figure out CI rules on their own
• Controls are safety net, not surveillance
• Anyone on security team?
• Help devs to automate “boring” things
• Learn to say “yes”
• Security goals must support business goals
• Anyone in management?
• Don’t abuse metrics
Stop blaming developers
• Technology
• People
• Process
Securing the continuous integration
Code reviews
• No change too small
• Leave trivial checks to tools
• Not a separate task, but in DoD for each task
• Reject & rework is part of “normal”
Root-cause analysis
• What happens to externally reported issues?
• The first security feedback to introduce
• What was missing in our CI process? => Improve
Chain of custody
• Can you trust your release notes?
• Has every “unit of work” in the release gone through all the checks?
• Was it modified since “time of check”?
Reference implementations
• Give dev teams libraries / tools that are secure by default
• Leverage frameworks (e.g. output encoding)
• Build your own
• Potential areas to consider:
• Managing secrets
• Anything related to crypto
• Authentication / authorization
• SQL, file system access, shell exec()
Core takeaway:
• “<X> is hard to do securely, have to be aware of threats 1, 2, and …”
• Build a secure by default implementation
• Automate the tests
Static analysis
If you didn’t laugh at the previous one…
• Static analysis – reason about code based on looking at it
• Dynamic analysis – run code and observe how it behaves
• Fundamental trade-offs:
• Static analysis – high coverage, imprecise (false positives)
• Dynamic analysis – code coverage is a challenge, but precise (the issues it finds are true
positives)
Pick your poison
Grep
• Localized
• Not syntax-aware
• Regex
Lint/AST
• Syntax aware
• Some semantics
• Can express rules that use
code constructs
SAST
• Builds detailed model of
code
• Complex rules that rely
on control and/or data
flow
Static analysis
• Run on dev machine needs to be fast, low to no false positives
• Ideally – integrated with IDE
• Run in CI needs to provide fast feedback
• Can be implemented with git hooks or as a part of the test suite
• Integration with version control is useful
• Integration with bug tracker is useful (but…)
• Ability to enable analysis by defect type is very useful
Securing the continuous integration
“On commit” is your best friend
• Automated coding standards checks
• Code complexity / code duplication
• Banned functions / APIs
• Dynamic analysis
• Static analysis
• Fuzzing
• https://www.nccgroup.trust/uk/our-research/securing-the-continuous-integration-process/
• https://www.nccgroup.trust/uk/our-research/best-practices-for-the-use-of-static-code-analysis-
within-a-real-world-secure-development-lifecycle/
Points of contact
Irene Michlin
Principal Security Consultant
M: +44 (0) 7972 333 148
E: irene.michlin@nccgroup.trust
T: @IreneMichlin
Thanks and credit to Clint Gibler - @clintgibler and Antti Vähä-Sipilä - @@anttivs
https://www.nccgroup.trust/uk/our-research/securing-the-continuous-integration-
process/
https://www.nccgroup.trust/uk/our-research/best-practices-for-the-use-of-static-code-
analysis-within-a-real-world-secure-development-lifecycle/

More Related Content

What's hot (19)

PDF
Vulnerabilities are bugs, Let's Test For Them!
VAddy
 
PDF
Is Your Mobile App Secure?
Sam Bowne
 
PDF
Customer Case Study: ScienceLogic - Many Paths to Compliance
Black Duck by Synopsys
 
PPTX
Ryan Elkins - Simple Security Defense to Thwart an Army of Cyber Ninja Warriors
Ryan Elkins
 
PPTX
Agile and Secure SDLC
Nazar Tymoshyk, CEH, Ph.D.
 
PDF
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Denim Group
 
PDF
Quickstart for continuous integration
Fabricio Epaminondas
 
PDF
Myths and Misperceptions of Open Source Security
Black Duck by Synopsys
 
PDF
Making the Transition from Suite to the Hub
Black Duck by Synopsys
 
PDF
BlueHat v18 || Improving security posture through increased agility with meas...
BlueHat Security Conference
 
PDF
Just Enough Threat Modeling
Stephen de Vries
 
PDF
Java Card Security
Riscure
 
PPTX
Application Security within Agile
Netlight Consulting
 
PDF
Building a Modern Security Engineering Organization
Zane Lackey
 
PPTX
DevOps Security Coffee - Lazy hackers who think out of the box, but stay in t...
Freek Kauffmann
 
PDF
The Continuous delivery value - Funaro
Codemotion
 
PDF
Ibm עמרי וייסמן
lihig
 
ODP
Effective DevSecOps
Pawel Krawczyk
 
PDF
Building Security Controls around Attack Models
SeniorStoryteller
 
Vulnerabilities are bugs, Let's Test For Them!
VAddy
 
Is Your Mobile App Secure?
Sam Bowne
 
Customer Case Study: ScienceLogic - Many Paths to Compliance
Black Duck by Synopsys
 
Ryan Elkins - Simple Security Defense to Thwart an Army of Cyber Ninja Warriors
Ryan Elkins
 
Agile and Secure SDLC
Nazar Tymoshyk, CEH, Ph.D.
 
Threat Modeling the CI/CD Pipeline to Improve Software Supply Chain Security ...
Denim Group
 
Quickstart for continuous integration
Fabricio Epaminondas
 
Myths and Misperceptions of Open Source Security
Black Duck by Synopsys
 
Making the Transition from Suite to the Hub
Black Duck by Synopsys
 
BlueHat v18 || Improving security posture through increased agility with meas...
BlueHat Security Conference
 
Just Enough Threat Modeling
Stephen de Vries
 
Java Card Security
Riscure
 
Application Security within Agile
Netlight Consulting
 
Building a Modern Security Engineering Organization
Zane Lackey
 
DevOps Security Coffee - Lazy hackers who think out of the box, but stay in t...
Freek Kauffmann
 
The Continuous delivery value - Funaro
Codemotion
 
Ibm עמרי וייסמן
lihig
 
Effective DevSecOps
Pawel Krawczyk
 
Building Security Controls around Attack Models
SeniorStoryteller
 

Similar to Securing the continuous integration (20)

KEY
DevOpsSec: Appling DevOps Principles to Security, DevOpsDays Austin 2012
Nick Galbreath
 
PPTX
Webinar: "DBMaestro: Database Enforced Change Management (DECM) tool"
Emerasoft, solutions to collaborate
 
PDF
DevSecOps: Taking a DevOps Approach to Security
Alert Logic
 
PPTX
In (database) automation we trust
DBmaestro - Database DevOps
 
PPTX
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro - Database DevOps
 
PDF
ProdSec: A Technical Approach
Jeremy Brown
 
PPTX
Alexey Sintsov- SDLC - try me to implement
DefconRussia
 
PDF
Owasp tds
snyff
 
PPT
Code Quality - Security
sedukull
 
PPTX
Sailing through devlopment with legacy code
prasadkunte
 
PDF
AI-assisted development: how to build and ship with confidence
Maxim Salnikov
 
PPTX
Security at Greenhouse
Michael O'Neil
 
PDF
Controlling Access to IBM i Systems and Data
Precisely
 
PDF
Continuous delivery @wcap 5-09-2013
David Funaro
 
PDF
The Continuous delivery Value @ codemotion 2014
David Funaro
 
PDF
4 florin coada - dast automation, more value for less work
Ievgenii Katsan
 
PPTX
Jason Kent - AppSec Without Additional Tools
centralohioissa
 
PDF
Expand Your Control of Access to IBM i Systems and Data
Precisely
 
PPTX
Continuous Integration (& Mr Jenkins)
Ciro Donato Caiazzo
 
PPTX
Application security meetup k8_s security with zero trust_29072021
lior mazor
 
DevOpsSec: Appling DevOps Principles to Security, DevOpsDays Austin 2012
Nick Galbreath
 
Webinar: "DBMaestro: Database Enforced Change Management (DECM) tool"
Emerasoft, solutions to collaborate
 
DevSecOps: Taking a DevOps Approach to Security
Alert Logic
 
In (database) automation we trust
DBmaestro - Database DevOps
 
DBmaestro's State of the Database Continuous Delivery Survey- Findings Revealed
DBmaestro - Database DevOps
 
ProdSec: A Technical Approach
Jeremy Brown
 
Alexey Sintsov- SDLC - try me to implement
DefconRussia
 
Owasp tds
snyff
 
Code Quality - Security
sedukull
 
Sailing through devlopment with legacy code
prasadkunte
 
AI-assisted development: how to build and ship with confidence
Maxim Salnikov
 
Security at Greenhouse
Michael O'Neil
 
Controlling Access to IBM i Systems and Data
Precisely
 
Continuous delivery @wcap 5-09-2013
David Funaro
 
The Continuous delivery Value @ codemotion 2014
David Funaro
 
4 florin coada - dast automation, more value for less work
Ievgenii Katsan
 
Jason Kent - AppSec Without Additional Tools
centralohioissa
 
Expand Your Control of Access to IBM i Systems and Data
Precisely
 
Continuous Integration (& Mr Jenkins)
Ciro Donato Caiazzo
 
Application security meetup k8_s security with zero trust_29072021
lior mazor
 
Ad

Recently uploaded (20)

PPTX
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PDF
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
PPTX
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PDF
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PPTX
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
PPTX
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
PDF
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
PDF
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
PPTX
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
PDF
IDM Crack with Internet Download Manager 6.42 Build 43 with Patch Latest 2025
bashirkhan333g
 
PPTX
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
PDF
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
Hardware(Central Processing Unit ) CU and ALU
RizwanaKalsoom2
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
유니티에서 Burst Compiler+ThreadedJobs+SIMD 적용사례
Seongdae Kim
 
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
IDM Crack with Internet Download Manager 6.42 Build 43 with Patch Latest 2025
bashirkhan333g
 
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
Open Chain Q2 Steering Committee Meeting - 2025-06-25
Shane Coughlan
 
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
Ad

Securing the continuous integration

  • 2. People, process, and technology Step 1: make sure your CI does not harm your security Step 2: only then it can be used to improve your security People ProcessTechnology
  • 4. Basic CI cycle Developer Development machine Version Control repo CI Server Write code + tests Pull latest code + tests Local build + test run Commit Poll Generate feedback Feedback Dashboard or gadget “Continuous Integration assumes a high degree of tests which are automated into the software”, Martin Fowler
  • 5. Isolate your environment • Phishing link in email => keylogger installed => source code gone (or backdoor deployed) • Experimenting with development network => accounting department affected before EOY • Extra challenges: remote work or BYOD
  • 6. Basic CI cycle Developer Development machine Version Control repo CI Server Write code + tests Pull latest code + tests Local build + test run Commit Poll Generate feedback Feedback Dashboard or gadget
  • 7. Version control server • It has one job only – remove or disable everything else • No shared or generic accounts • Matching business process to close accounts
  • 8. Basic CI cycle Developer Development machine Version Control repo CI Server Write code + tests Pull latest code + tests Local build + test run Commit Poll Generate feedback Feedback Dashboard or gadget
  • 9. Integration build server • Who is responsible for keeping it up to date? • Where do external components come from? • Check vendor advice on compiler and linker options On September 18, 2014, RiskIQ detected credential-stealing malware being loaded onto users’ computers through a drive-by download at jQuery.com. Not too long ago, news broke about a malicious version of Xcode dubbed XcodeGhost that had been surreptitiously injecting malicious code into iOS developers’ apps. SK-CSIRT identified malicious software libraries in the official Python package repository, PyPI, posing as well known libraries. A prominent example is a fake package urllib-1.21.1.tar.gz, based upon a well known package urllib3-1.21.1.tar.gz.
  • 10. Basic CI cycle Developer Development machine Version Control repo CI Server Write code + tests Pull latest code + tests Local build + test run Commit Poll Generate feedback Feedback Dashboard or gadget
  • 11. Feedback mechanism • IoT electronic toys are notoriously insecure • Custom integration scripts - are you cutting corners?
  • 12. Do no harm • Do not acquire CI components « by accident » • Not everything is secure out of the box • Dormant account today is an attacker-controlled account tomorrow - Compromising a staging continuous integration server (Jenkins) from a developer's machine, which then gave us access to the company's production Chef repository, allowing us to push a reverse shell to a production server. - Using access to a dev/staging Jenkins server to modify code in repositories after they've been through code review, which were then replicated to production. https://www.blackhat.com/us-17/briefings.html#developing-trust-and-gitting-betrayed
  • 13. Treat people right • Don’t leave new starters to figure out CI rules on their own • Controls are safety net, not surveillance • Anyone on security team? • Help devs to automate “boring” things • Learn to say “yes” • Security goals must support business goals • Anyone in management? • Don’t abuse metrics
  • 14. Stop blaming developers • Technology • People • Process
  • 16. Code reviews • No change too small • Leave trivial checks to tools • Not a separate task, but in DoD for each task • Reject & rework is part of “normal”
  • 17. Root-cause analysis • What happens to externally reported issues? • The first security feedback to introduce • What was missing in our CI process? => Improve
  • 18. Chain of custody • Can you trust your release notes? • Has every “unit of work” in the release gone through all the checks? • Was it modified since “time of check”?
  • 19. Reference implementations • Give dev teams libraries / tools that are secure by default • Leverage frameworks (e.g. output encoding) • Build your own • Potential areas to consider: • Managing secrets • Anything related to crypto • Authentication / authorization • SQL, file system access, shell exec() Core takeaway: • “<X> is hard to do securely, have to be aware of threats 1, 2, and …” • Build a secure by default implementation • Automate the tests
  • 21. If you didn’t laugh at the previous one… • Static analysis – reason about code based on looking at it • Dynamic analysis – run code and observe how it behaves • Fundamental trade-offs: • Static analysis – high coverage, imprecise (false positives) • Dynamic analysis – code coverage is a challenge, but precise (the issues it finds are true positives)
  • 22. Pick your poison Grep • Localized • Not syntax-aware • Regex Lint/AST • Syntax aware • Some semantics • Can express rules that use code constructs SAST • Builds detailed model of code • Complex rules that rely on control and/or data flow
  • 23. Static analysis • Run on dev machine needs to be fast, low to no false positives • Ideally – integrated with IDE • Run in CI needs to provide fast feedback • Can be implemented with git hooks or as a part of the test suite • Integration with version control is useful • Integration with bug tracker is useful (but…) • Ability to enable analysis by defect type is very useful
  • 25. “On commit” is your best friend • Automated coding standards checks • Code complexity / code duplication • Banned functions / APIs • Dynamic analysis • Static analysis • Fuzzing • https://www.nccgroup.trust/uk/our-research/securing-the-continuous-integration-process/ • https://www.nccgroup.trust/uk/our-research/best-practices-for-the-use-of-static-code-analysis- within-a-real-world-secure-development-lifecycle/
  • 26. Points of contact Irene Michlin Principal Security Consultant M: +44 (0) 7972 333 148 E: [email protected] T: @IreneMichlin Thanks and credit to Clint Gibler - @clintgibler and Antti Vähä-Sipilä - @@anttivs https://www.nccgroup.trust/uk/our-research/securing-the-continuous-integration- process/ https://www.nccgroup.trust/uk/our-research/best-practices-for-the-use-of-static-code- analysis-within-a-real-world-secure-development-lifecycle/

Editor's Notes

  • #3: On people, I only have one piece of advice - Hire the right people and treat them right. The rest of the talk is on process and technology.
  • #4: The choice is enormous, not going to say “This is the recommended toolchain”. Not on the agenda, not on the hidden agenda. It’s rather what to look for in my tools, and how to put them together so that first of all I’m not harming my organisation’s security. And the secondary goal – I have this neat CI pipeline going, can I use it to improve my software’s security, amongst other things.
  • #5: To ensure we are on the same page for the rest of the talk.
  • #6: What happens in dev, stays in dev Physical or virtual, dev machines must be segregated from the main corporate environment.
  • #7: Let’s talk about version control server
  • #8: The choice of the version control pattern depends on multiple factors, such as frequency of releases, number of teams, structure of the code base etc. Generally speaking, patterns that require frequent commits to a shared branch are more suited for implementing CI. SSO is better than proliferation of accounts per each tool. RBAC with as much granularity as does not interfere with your work. Needs administrative component to terminate the accounts as required.
  • #9: Integration server
  • #10: It only needs R/O access to source control Set local repo for external libraries. Use scanners. Standard builds remove chasing the “it worked on my machine” problems
  • #11: Feedback mechanism
  • #12: Who is listening? Unless it is a low-tech mechanism “All the developers are in the same room and they look at a physical dashboard when they feel like it”, you have to consider the security of the mechanism. The tools are held together with what is often called “glue skills” – the developers are putting together ad hoc scripts, punching holes in firewalls, hardcode passwords. Even if the script itself isn’t dangerous, if it’s world-writable but runs at high privilege, it has a high potential to become dangerous. Glue skills are great to have in your team, but they can also be dangerous. Treat these scripts as first class citizens – under source control and under the same security standard as everything else. My example is not an attack on a particular tool, literally I’ve searched for “broken build gadgets” and picked a first example.
  • #13: CI environments are rarely planned upfront. The tools are introduced one by one and sometimes people only learn about everything they have during an audit, which is a bit too late. Secure system lifecycle. The product choice and evaluation can be quick and informal, but it has to be a conscious choice. Installation and configuration – don’t enable features you don’t need Ensure account management lifecycle covers all the CI tools.
  • #14: Luckily the industry is moving on from the “people are the weakest link” concept.
  • #15: Luckily the industry is moving on from the “people are the weakest link” concept. ©Giuseppe Colarusso http://www.gianlucagimini.it/prototypes/velocipedia.html Via AREyouKIDDINGmi And now we are to level 2 of this game: how to actually do good in security terms using CI.
  • #16: The figure above is based on several popular maturity matrices for continuous integration, as well as NCC Group experience with variety of clients. Won’t have time to go through them all, only couple. There is now understanding in the software development industry that security features are not enough for building a secure product. To achieve an acceptable level of overall security, the product needs all the features to be secure: the whole attack surface of the product must be considered from a security point of view, not only features that are directly security related, such as login functionality. The same is true for securing continuous integration. In the matrix above, the dedicated Security row lists explicit security related activities that must happen at some point towards CI maturity. However, every cell on the other rows needs to be evaluated for the security of its tools and processes as well.
  • #17: Frequently asked “are manual code reviews waste of time”? Not if done well. If your decision has only one possible outcome, then why bother with the decision? It’s waste of time. Another source of waste of time in review is “saving up” to end of week/end of iteration. It’s all about quick feedback.
  • #18: People like to rush into bug bounty programs Don't trouble trouble until trouble troubles you
  • #19: Whether you release each change individually in CD, or in batches, the same questions apply
  • #20: I’ve seen a company with a checklist for each api function – authentication, authorisation, input, output. Makes code reivew expensive, boring, and error prone. They’ve moved all the “boilerplate” to be given to developers for free. Test case that automatically checks for missing access controls and goes through the checklists
  • #21: Everybody’s favourite, right? https://78.media.tumblr.com/tumblr_m09u09jyo31qzrlhgo4_250.gif
  • #22: Either you love dogs very much, or you haven’t come across static analysis
  • #23: There is a range of complexity in “light-weight” vs “heavy-weight” static analysis approaches From simple text matching to understanding code syntax, semantics, and can reason about data and control flow Each of these have strengths and contexts in which they are useful
  • #25: The figure above is based on several popular maturity matrices for continuous integration, as well as NCC Group experience with variety of clients. Won’t have time to go through them all, only couple. There is now understanding in the software development industry that security features are not enough for building a secure product. To achieve an acceptable level of overall security, the product needs all the features to be secure: the whole attack surface of the product must be considered from a security point of view, not only features that are directly security related, such as login functionality. The same is true for securing continuous integration. In the matrix above, the dedicated Security row lists explicit security related activities that must happen at some point towards CI maturity. However, every cell on the other rows needs to be evaluated for the security of its tools and processes as well.
  • #26: Don’t throw all the tools at the dev team at the same time. Fuzzers, static analysis, dynamic analysis all take time to learn and configure and initially will bring the productivity down, not up Start with “new” code, ensure your debt isn’t growing. No two journeys towards maturity are the same. It may make sense for your organisation to take a practice from Intermediate or Advanced before doing everything in Beginner. It meant to inform, not to restrict. Hard to come with good questions on the spot, so I won’t force you. I’m here today, obviously, and if you have questions later, find me on twitter or by email.