96

Attacking Pipelines--Security meets Continuous Delivery

  • View
    1.231

  • Download
    1

Embed Size (px)

DESCRIPTION

Talk given at ISC2 Secure SDLC event in Austin, TX The release velocity for our applications is increasing, often leaving security testing behind. In some cases, the security team ends up being the bottleneck. That's bad. In an idyllic world, security testing would happen earlier in the development lifecycle, but lets do one better. Lets do security testing on every code change. Using automation tooling and DevOps practices, this talk will help you tune security testing to your release cadence and more importantly help you deliver more rugged software.

Citation preview

Page 1: Attacking Pipelines--Security meets Continuous Delivery
Page 2: Attacking Pipelines--Security meets Continuous Delivery

Goal: Equip you with the Theory, Examples and Tooling so that you can begin Your

rugged journey with an attacking pipeline you can lovingly call your very own

Page 3: Attacking Pipelines--Security meets Continuous Delivery
Page 4: Attacking Pipelines--Security meets Continuous Delivery

James [email protected]

Austin, TX

Gauntlt Core Team

DevOps Days Austin Organizer

Velocity, LASCON, ISC2, AppSecUSA, B-Sides, …

Page 5: Attacking Pipelines--Security meets Continuous Delivery

Why does this matter?

Page 6: Attacking Pipelines--Security meets Continuous Delivery
Page 7: Attacking Pipelines--Security meets Continuous Delivery

“I want to solve a problem so we can make awesome”

- Business

Page 8: Attacking Pipelines--Security meets Continuous Delivery

CIO say whut?

Page 9: Attacking Pipelines--Security meets Continuous Delivery
Page 10: Attacking Pipelines--Security meets Continuous Delivery

…in 2 years with an expensive, bloated project that is so fragile that we

can only make changes to it 4 times a year and only after the sacred upgrade

rituals are performed

Page 11: Attacking Pipelines--Security meets Continuous Delivery

CISO say whut?

Page 12: Attacking Pipelines--Security meets Continuous Delivery
Page 13: Attacking Pipelines--Security meets Continuous Delivery

Biz say whut?

Page 14: Attacking Pipelines--Security meets Continuous Delivery

Just Ship It!

Page 15: Attacking Pipelines--Security meets Continuous Delivery

SPOILER ALERT!

Page 16: Attacking Pipelines--Security meets Continuous Delivery

the business wins

Page 17: Attacking Pipelines--Security meets Continuous Delivery
Page 18: Attacking Pipelines--Security meets Continuous Delivery
Page 19: Attacking Pipelines--Security meets Continuous Delivery

How did we get here?

Page 20: Attacking Pipelines--Security meets Continuous Delivery

Software has Changed

Page 21: Attacking Pipelines--Security meets Continuous Delivery

Software as a Service

Page 22: Attacking Pipelines--Security meets Continuous Delivery

Software as

Bricolage

Page 23: Attacking Pipelines--Security meets Continuous Delivery

Bolt on Feature

Approach

Page 24: Attacking Pipelines--Security meets Continuous Delivery

Fragile Code as a Service

Page 25: Attacking Pipelines--Security meets Continuous Delivery

Deploy Timelines Have Changed

Page 26: Attacking Pipelines--Security meets Continuous Delivery

Dev and Ops have teamed up in this new world

Page 27: Attacking Pipelines--Security meets Continuous Delivery

http://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr

Page 28: Attacking Pipelines--Security meets Continuous Delivery

DevOps is 5 years old now

Page 29: Attacking Pipelines--Security meets Continuous Delivery

The security organization is stuck in 1997

… mostly

Page 30: Attacking Pipelines--Security meets Continuous Delivery

Why is that?

Page 31: Attacking Pipelines--Security meets Continuous Delivery

Compliance Driven Culture: PCI, SOX, …

Page 32: Attacking Pipelines--Security meets Continuous Delivery

Ratio Problem Devs / Ops / Security

100 / 10 / 1

Page 33: Attacking Pipelines--Security meets Continuous Delivery

Security Tools are run out-of-band

Page 34: Attacking Pipelines--Security meets Continuous Delivery

But, there is hope

Page 35: Attacking Pipelines--Security meets Continuous Delivery

https://speakerdeck.com/garethr/security-monitoring-penetration-testing-meets-monitoring

Page 36: Attacking Pipelines--Security meets Continuous Delivery

http://www.youtube.com/watch?v=jQblKuMuS0Y

Page 37: Attacking Pipelines--Security meets Continuous Delivery

The Society of Rugged Developers

!

ruggeddev.org

Page 38: Attacking Pipelines--Security meets Continuous Delivery
Page 39: Attacking Pipelines--Security meets Continuous Delivery

Rugged Journey

Quality

Transparency

Value Creation

Culture infusion

Page 40: Attacking Pipelines--Security meets Continuous Delivery

#RuggedDevOps

Page 41: Attacking Pipelines--Security meets Continuous Delivery

http://www.slideshare.net/wickett/putting-rugged-into-your-devops-toolchain

Page 42: Attacking Pipelines--Security meets Continuous Delivery

Pipelines!

Page 43: Attacking Pipelines--Security meets Continuous Delivery

Continuous Integration

Page 44: Attacking Pipelines--Security meets Continuous Delivery

commit -> test -> deploy

Page 45: Attacking Pipelines--Security meets Continuous Delivery

github -> travis -> s3

Page 46: Attacking Pipelines--Security meets Continuous Delivery

git -> jenkins -> rundeck

Page 47: Attacking Pipelines--Security meets Continuous Delivery

you can now answer the question of what is deployed and how it

was tested

Page 48: Attacking Pipelines--Security meets Continuous Delivery

Simple is better

Page 49: Attacking Pipelines--Security meets Continuous Delivery

Continuous Integration Options

On premise: Jenkins

Cloud hosted: Travis CI, Circle CI, CloudBees, Wercker, Shippable, Drone.io…

Or a mix: DotCI

Page 50: Attacking Pipelines--Security meets Continuous Delivery
Page 51: Attacking Pipelines--Security meets Continuous Delivery

Attacking Pipeline Guide

Check your app/service/thing into a github repo

Create some security tests

Setup Travis CI to talk to your repo

Create a .travis.yml file

Write code, write moar security tests…

Page 52: Attacking Pipelines--Security meets Continuous Delivery

Try this at home

Page 53: Attacking Pipelines--Security meets Continuous Delivery

github.com/gauntlt/gauntlt-demo

Fork This

Page 54: Attacking Pipelines--Security meets Continuous Delivery

What is gauntlt-demoContains vulnerable web apps written in python and ruby on rails

Easy hooks for spinning up the apps

Contains labs and examples for writing attacks

An attacking pipeline Travis CI to attack the web apps

Page 55: Attacking Pipelines--Security meets Continuous Delivery

Installation

$ git clone https://github.com/gauntlt/gauntlt-demo

$ cd ./gauntlt-demo

$ git submodule update --init --recursive

$ bundle

Page 56: Attacking Pipelines--Security meets Continuous Delivery

$ bundle exec start_services\ config/gruyere.rb

Page 57: Attacking Pipelines--Security meets Continuous Delivery

http://localhost:8008/

Page 58: Attacking Pipelines--Security meets Continuous Delivery

Attacking Pipeline Guide

Check your app/service/thing into a github repo

Create some security tests

Setup Travis CI to talk to your repo

Create a .travis.yml file

Write code, write moar security tests…

Page 59: Attacking Pipelines--Security meets Continuous Delivery

Security Testing

Static Code Analysis

Dynamic Testing

Virus Scanning

Code Signing Checks

Business logic/flow testing

Page 60: Attacking Pipelines--Security meets Continuous Delivery

convert thy pdf to tests!

Page 61: Attacking Pipelines--Security meets Continuous Delivery

Wouldn’t it be great if we could automate our

security tests…

Page 62: Attacking Pipelines--Security meets Continuous Delivery

http://static.hothdwallpaper.net/51b8e4ee5a5ae19808.jpg

Page 63: Attacking Pipelines--Security meets Continuous Delivery

Security + Cucumber = Gauntlt

Page 64: Attacking Pipelines--Security meets Continuous Delivery

Built on Cucumber

Page 65: Attacking Pipelines--Security meets Continuous Delivery

Gauntlt PhilosophyGauntlt comes with pre-canned steps that hook security testing tools

Gauntlt does not install tools

Gauntlt can be part of the CI/CD pipeline

Be a good citizen of exit status and stdout/stderr

MIT Open Source License

Page 66: Attacking Pipelines--Security meets Continuous Delivery

Who uses Gauntlt?

Page 67: Attacking Pipelines--Security meets Continuous Delivery

TLDR; !

Gauntlt automates security tools

Page 68: Attacking Pipelines--Security meets Continuous Delivery

Attack Logic

GIVENWHENTHEN

Page 69: Attacking Pipelines--Security meets Continuous Delivery
Page 70: Attacking Pipelines--Security meets Continuous Delivery

Let’s automate two attacks

Page 71: Attacking Pipelines--Security meets Continuous Delivery

Garmr is Mozilla Security policy distilled for the rest

of us

Page 72: Attacking Pipelines--Security meets Continuous Delivery
Page 73: Attacking Pipelines--Security meets Continuous Delivery

Check for XSS

Page 74: Attacking Pipelines--Security meets Continuous Delivery
Page 75: Attacking Pipelines--Security meets Continuous Delivery

Rakerequire 'gauntlt'

task :gauntlt do

sh "cd ./vendor/gruyere && ./manual_launch.sh && cd ../.."

sh "cd ./examples && bundle exec gauntlt --tags @final && cd .."

sh "cd ./vendor/gruyere && ./manual_kill.sh && cd ../.."

end

Page 76: Attacking Pipelines--Security meets Continuous Delivery

Attacking Pipeline Guide

Check your app/service/thing into a github repo

Create some security tests

Setup Travis CI to talk to your repo

Create a .travis.yml file

Write code, write moar security tests…

Page 77: Attacking Pipelines--Security meets Continuous Delivery

Let’s set up the pipeline

Page 78: Attacking Pipelines--Security meets Continuous Delivery

Setup Travis CI

Go to travis-ci.org, login with github credentials

Find the repo you cloned (might need to sync)

Flip the switch ‘on’

Page 79: Attacking Pipelines--Security meets Continuous Delivery
Page 80: Attacking Pipelines--Security meets Continuous Delivery

Attacking Pipeline Guide

Check your app/service/thing into a github repo

Create some security tests

Setup Travis CI to talk to your repo

Create a .travis.yml file

Write code, write moar security tests…

Page 81: Attacking Pipelines--Security meets Continuous Delivery

.travis.ymllanguage: ruby

rvm:

- 1.9.3

before_install:

- git submodule update --init --recursive

Page 82: Attacking Pipelines--Security meets Continuous Delivery

.travis.ymlbefore_script:

- sudo apt-get install nmap

- export SSLYZE_PATH="/home/travis/build/gauntlt/gauntlt-demo/vendor/sslyze/sslyze.py"

- export SQLMAP_PATH="/home/travis/build/gauntlt/gauntlt-demo/vendor/sqlmap/sqlmap.py"

- 'cd vendor/Garmr && sudo python setup.py install && cd ../..'

Page 83: Attacking Pipelines--Security meets Continuous Delivery

.travis.yml

script: bundle exec rake

Page 84: Attacking Pipelines--Security meets Continuous Delivery

.travis.ymlnotifications:

irc:

channels:

- “chat.freenode.net#gauntlt"

use_notice: true

Page 85: Attacking Pipelines--Security meets Continuous Delivery

.travis.ymldeploy:

provider: s3

access_key_id: ASDBDSABDASDBDSDASD

secret_access_key:

secure:dasjdkla;sdjsakdsadasd

bucket: build-artifacts

Page 86: Attacking Pipelines--Security meets Continuous Delivery
Page 87: Attacking Pipelines--Security meets Continuous Delivery
Page 88: Attacking Pipelines--Security meets Continuous Delivery
Page 89: Attacking Pipelines--Security meets Continuous Delivery

Sahweet!

Page 90: Attacking Pipelines--Security meets Continuous Delivery

Attacking Pipeline Guide

Check your app/service/thing into a github repo

Create some security tests

Setup Travis CI to talk to your repo

Create a .travis.yml file

Write code, write moar security tests…

Page 91: Attacking Pipelines--Security meets Continuous Delivery

https://speakerdeck.com/mkonda/appsecusa-2013-insecure-expectations

http://vimeo.com/75930344

Page 92: Attacking Pipelines--Security meets Continuous Delivery

more on gauntlt

• Google Group > https://groups.google.com/d/forum/gauntlt

• Wiki > https://github.com/gauntlt/gauntlt/wiki• Twitter > @gauntlt• IRC > #gauntlt on freenode• Issue tracking > http://github.com/gauntlt/gauntlt

Page 93: Attacking Pipelines--Security meets Continuous Delivery

https://vimeo.com/79797907

Page 94: Attacking Pipelines--Security meets Continuous Delivery

50% off Gauntlt Bookleanpub.com/hands-on-gauntlt/c/austin-sdlc

Caveat Emptor: Under

development!

Valid until June 15th

Page 95: Attacking Pipelines--Security meets Continuous Delivery
Page 96: Attacking Pipelines--Security meets Continuous Delivery

Questions? !

twitter: @wickett email: [email protected]