my little webap - devopssec is magic

162
My Little Webapp – DevOpsSec is Magic Apollo Clark @apolloclark apolloclark.com slideshare.net/ApolloClark/my-little-webap-devopssec-is-magic

Upload: apollo-clark

Post on 17-Jul-2015

705 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: My Little Webap - DevOpsSec is Magic

My Little Webapp – DevOpsSec is Magic

Apollo Clark

@apolloclark

apolloclark.com

slideshare.net/ApolloClark/my-little-webap-devopssec-is-magic

Page 2: My Little Webap - DevOpsSec is Magic
Page 3: My Little Webap - DevOpsSec is Magic

About Me• Originally from Maine• Lived in Milwaukee, Chicago, Atlanta• Web developer since 2001• PHP, Python, Java, C++, Perl, Visual Basic, etc.• MySQL, PostgreSQL, MongoDB, Redis• Kali Linux, Burpsuite, Gauntlt, SQLMap, XSSer, etc.• Got badly hacked in 2010, been learning since• I like making good software

Page 4: My Little Webap - DevOpsSec is Magic
Page 5: My Little Webap - DevOpsSec is Magic
Page 6: My Little Webap - DevOpsSec is Magic

What if we could fix anythingin 10 minutes?

Page 7: My Little Webap - DevOpsSec is Magic

With DevOpsSec, you can!

Page 8: My Little Webap - DevOpsSec is Magic

How does it feel?

Page 9: My Little Webap - DevOpsSec is Magic
Page 10: My Little Webap - DevOpsSec is Magic

Prepare for a meme filled ride.

Page 11: My Little Webap - DevOpsSec is Magic
Page 12: My Little Webap - DevOpsSec is Magic
Page 13: My Little Webap - DevOpsSec is Magic

How do we do things today?

Page 14: My Little Webap - DevOpsSec is Magic
Page 15: My Little Webap - DevOpsSec is Magic
Page 16: My Little Webap - DevOpsSec is Magic
Page 17: My Little Webap - DevOpsSec is Magic

We need to build QA and security in.

Page 18: My Little Webap - DevOpsSec is Magic

What can we do?

Page 19: My Little Webap - DevOpsSec is Magic
Page 20: My Little Webap - DevOpsSec is Magic
Page 21: My Little Webap - DevOpsSec is Magic
Page 22: My Little Webap - DevOpsSec is Magic
Page 23: My Little Webap - DevOpsSec is Magic

Dev vs. Ops

Page 24: My Little Webap - DevOpsSec is Magic
Page 25: My Little Webap - DevOpsSec is Magic

Dev vs. Ops

• Devs are paid to change code, high entropy

Page 26: My Little Webap - DevOpsSec is Magic

Dev vs. Ops

• Devs are paid to change code, high entropy

• Ops are paid to have stability, low entropy

Page 27: My Little Webap - DevOpsSec is Magic

Dev vs. Ops

• Devs are paid to change code, high entropy

• Ops are paid to have stability, low entropy

• Change != Stability

Page 28: My Little Webap - DevOpsSec is Magic

Dev vs. Ops

• Devs are paid to change code, high entropy

• Ops are paid to have stability, low entropy

• Change != Stability

• IE8 only supports loading 31 CSS files

Page 29: My Little Webap - DevOpsSec is Magic

"One line of code can break everything."

Page 30: My Little Webap - DevOpsSec is Magic

What do we do?

Page 31: My Little Webap - DevOpsSec is Magic
Page 32: My Little Webap - DevOpsSec is Magic
Page 33: My Little Webap - DevOpsSec is Magic

Climbing the Pyramid

Page 34: My Little Webap - DevOpsSec is Magic
Page 35: My Little Webap - DevOpsSec is Magic
Page 36: My Little Webap - DevOpsSec is Magic

"The worst thing that can happen to a system is that it doesn't run. The second worse thing is that it runs very slowly."

Page 37: My Little Webap - DevOpsSec is Magic

Performance

• stress testing: "how many concurrent users?"

Page 38: My Little Webap - DevOpsSec is Magic
Page 39: My Little Webap - DevOpsSec is Magic

Performance

• stress testing: "how many concurrent users?"

• server latency: "how long is the response wait?"

Page 40: My Little Webap - DevOpsSec is Magic

Performance

• stress testing: "how many concurrent users?"

• server latency: "how long is the response wait?"

• initial client-side load latency: "time to first tweet"

Page 41: My Little Webap - DevOpsSec is Magic
Page 42: My Little Webap - DevOpsSec is Magic

Performance

• stress testing: "how many concurrent users?"

• server latency: "how long is the response wait?"

• initial client-side load latency: "time to first tweet"

• client latency: "how long does action take?"

Page 43: My Little Webap - DevOpsSec is Magic

Performance

• stress testing: "how many concurrent users?"

• server latency: "how long is the response wait?"

• initial client-side load latency: "time to first tweet"

• client latency: "how long does action take?"

Page 44: My Little Webap - DevOpsSec is Magic

Don’t forget to DDoS yourself.

Page 45: My Little Webap - DevOpsSec is Magic
Page 46: My Little Webap - DevOpsSec is Magic
Page 47: My Little Webap - DevOpsSec is Magic

What we got:

Page 48: My Little Webap - DevOpsSec is Magic
Page 49: My Little Webap - DevOpsSec is Magic

What we want:

Page 50: My Little Webap - DevOpsSec is Magic
Page 51: My Little Webap - DevOpsSec is Magic

Code quality testing IS security testing.

Page 52: My Little Webap - DevOpsSec is Magic

Security Testing without Code Quality Checks:

Page 53: My Little Webap - DevOpsSec is Magic
Page 54: My Little Webap - DevOpsSec is Magic

Code Quality

• linting, correct formatting

Page 55: My Little Webap - DevOpsSec is Magic
Page 56: My Little Webap - DevOpsSec is Magic

Code Quality

• linting, correct formatting

• copy + paste, easily refactor

Page 57: My Little Webap - DevOpsSec is Magic

Code Quality

• linting, correct formatting

• copy + paste, easily refactor

• complexity, refactoring target

Page 58: My Little Webap - DevOpsSec is Magic
Page 59: My Little Webap - DevOpsSec is Magic

2^6 possible code pathways

Page 60: My Little Webap - DevOpsSec is Magic

64 possible outcomes from 1 function.

Page 61: My Little Webap - DevOpsSec is Magic

Code Quality

• linting, correct formatting

• copy + paste, easily refactor

• complexity, refactoring target

• unsafe calls, change implementation

Page 62: My Little Webap - DevOpsSec is Magic
Page 63: My Little Webap - DevOpsSec is Magic

Code Quality

• linting, correct formatting

• copy + paste, easily refactor

• complexity, refactoring target

• unsafe calls, change implementation

• e2e tests, detect regressions

Page 64: My Little Webap - DevOpsSec is Magic

Code Quality

• linting, correct formatting

• copy + paste, easily refactor

• complexity, refactoring target

• unsafe calls, change implementation

• e2e tests, detect regressions

• unit tests, detect integration issues

Page 65: My Little Webap - DevOpsSec is Magic

Code Quality

• linting, correct formatting

• copy + paste, easily refactor

• complexity, refactoring target

• unsafe calls, change implementation

• e2e tests, detect regressions

• unit tests, detect integration issues

• coverage, testing thoroughness

Page 66: My Little Webap - DevOpsSec is Magic

Code Quality

• linting, correct formatting

• copy + paste, easily refactor

• complexity, refactoring target

• unsafe calls, change implementation

• e2e tests, detect regressions

• unit tests, detect integration issues

• coverage, testing thoroughness

• mocks, speed up testing

Page 67: My Little Webap - DevOpsSec is Magic
Page 68: My Little Webap - DevOpsSec is Magic

Unit Testing

Page 69: My Little Webap - DevOpsSec is Magic
Page 70: My Little Webap - DevOpsSec is Magic

Ready to try some Unit Testing?

Page 71: My Little Webap - DevOpsSec is Magic
Page 72: My Little Webap - DevOpsSec is Magic

Unit Testing

GET /users/<account_name>

• happy path: "aclark"

• missing entry: "aclark2"

• lower bounds: "a"

• upper bounds: "aaaaaaaaa"

• empty: "account_name" : ""

• null: (null)

• fuzzing: "a2$@o9(@1"

Page 73: My Little Webap - DevOpsSec is Magic
Page 74: My Little Webap - DevOpsSec is Magic

"a2$@o9(@1" eventually becomes "a or 1=1; --"

Page 75: My Little Webap - DevOpsSec is Magic
Page 76: My Little Webap - DevOpsSec is Magic
Page 77: My Little Webap - DevOpsSec is Magic
Page 78: My Little Webap - DevOpsSec is Magic
Page 79: My Little Webap - DevOpsSec is Magic

Supported

Page 80: My Little Webap - DevOpsSec is Magic

Supported

• define supported devices, resolutions,

browsers, and versions

Page 81: My Little Webap - DevOpsSec is Magic

You can’t support everything:

Page 82: My Little Webap - DevOpsSec is Magic
Page 83: My Little Webap - DevOpsSec is Magic

Supported

• define supported devices, resolutions,

browsers, and versions

• use Selenium WebDriver

Page 84: My Little Webap - DevOpsSec is Magic

Supported

• define supported devices, resolutions,

browsers, and versions

• use Selenium WebDriver

• test locally in VM images

Page 85: My Little Webap - DevOpsSec is Magic
Page 86: My Little Webap - DevOpsSec is Magic

Supported

• define supported devices, resolutions,

browsers, and versions

• use Selenium WebDriver

• test locally in VM images

• test on the cloud

Page 87: My Little Webap - DevOpsSec is Magic

Supported

• define supported devices, resolutions,

browsers, and versions

• use Selenium WebDriver

• test locally in VM images

• test on the cloud

Page 88: My Little Webap - DevOpsSec is Magic

Try using unsupported systems. Hopefully fail gracefully. Might even find something…

Page 89: My Little Webap - DevOpsSec is Magic

Pro-tip: Try setting your browser User-Agent to iPhone 3.0 when visiting news websites :P

Page 90: My Little Webap - DevOpsSec is Magic
Page 91: My Little Webap - DevOpsSec is Magic
Page 92: My Little Webap - DevOpsSec is Magic
Page 93: My Little Webap - DevOpsSec is Magic

Deployable

• atomic base box VM

Page 94: My Little Webap - DevOpsSec is Magic
Page 95: My Little Webap - DevOpsSec is Magic

Deployable

• atomic base box VM

• provisioning scripts

Page 96: My Little Webap - DevOpsSec is Magic
Page 97: My Little Webap - DevOpsSec is Magic

Deployable

• atomic base box VM

• provisioning scripts

• deploy to local, AWS, Rackspace, etc.

Page 98: My Little Webap - DevOpsSec is Magic

Deployable

• atomic base box VM

• provisioning scripts

• deploy to local, AWS, Rackspace, etc.

• scan dependency list

Page 99: My Little Webap - DevOpsSec is Magic
Page 100: My Little Webap - DevOpsSec is Magic

Deployable

• atomic base box VM

• provisioning scripts

• deploy to local, AWS, Rackspace, etc.

• scan dependency list

• scan server setup

Page 101: My Little Webap - DevOpsSec is Magic

#!/bin/bash

HOST="192.168.1.4"

PATTERN="443/tcp\s+open"

if nmap -p 80,443 $HOST | grep $PATTERN > /dev/null

then

echo "ERROR: Port 443 open!"

exit 1

else

echo "SUCCESS: No unauthorized ports open."

exit 0

fi

Bash Test

Page 102: My Little Webap - DevOpsSec is Magic

Gauntlt Test

@slow

Feature: simple nmap attack (sanity check)

Background:

Given "nmap" is installed

And the following profile:

| name | value |

| hostname | 192.168.1.4 |

Scenario: Verify server is available on standard web ports

When I launch an "nmap" attack with:

"""

nmap -p 80,443 <hostname>

"""

Then the output should match /80.tcp\s+open/

And the output should not match:

"""

443/tcp\s+open

"""

Page 103: My Little Webap - DevOpsSec is Magic

Deployable

• atomic base box VM

• provisioning scripts

• deploy to local, AWS, Rackspace, etc.

• scan dependency list

• scan server setup

Page 104: My Little Webap - DevOpsSec is Magic
Page 105: My Little Webap - DevOpsSec is Magic
Page 106: My Little Webap - DevOpsSec is Magic
Page 107: My Little Webap - DevOpsSec is Magic

My personal websites:

Page 108: My Little Webap - DevOpsSec is Magic
Page 109: My Little Webap - DevOpsSec is Magic
Page 110: My Little Webap - DevOpsSec is Magic

Monitoring

• request origin

Page 111: My Little Webap - DevOpsSec is Magic

If you’re a ‘Murican only company, why are you letting your server talk

to Russia?

Page 112: My Little Webap - DevOpsSec is Magic

Monitoring

• request origin

• request scans

Page 113: My Little Webap - DevOpsSec is Magic
Page 114: My Little Webap - DevOpsSec is Magic
Page 115: My Little Webap - DevOpsSec is Magic

Monitoring

• request origin

• request scans

• invalid requests

Page 116: My Little Webap - DevOpsSec is Magic
Page 117: My Little Webap - DevOpsSec is Magic

Monitoring

• request origin

• request scans

• invalid requests

• request flood

Page 118: My Little Webap - DevOpsSec is Magic
Page 119: My Little Webap - DevOpsSec is Magic

Monitoring

• request origin

• request scans

• invalid requests

• request flood

• response flood

Page 120: My Little Webap - DevOpsSec is Magic
Page 121: My Little Webap - DevOpsSec is Magic

Monitoring

• request origin

• request scans

• invalid requests

• request flood

• response flood

• server uptime

Page 122: My Little Webap - DevOpsSec is Magic

Monitoring

• request origin

• request scans

• invalid requests

• request flood

• response flood

• server uptime

• latency

Page 123: My Little Webap - DevOpsSec is Magic

Monitoring

• request origin

• request scans

• invalid requests

• request flood

• response flood

• server uptime

• latency

• cpu load

Page 124: My Little Webap - DevOpsSec is Magic

Monitoring

• request origin

• request scans

• invalid requests

• request flood

• response flood

• server uptime

• latency

• cpu load

Page 125: My Little Webap - DevOpsSec is Magic

My startup has < 100 users. It gets scanned and attacked every day.

Page 126: My Little Webap - DevOpsSec is Magic

Your live servers are gettinghammered all the time.

Page 127: My Little Webap - DevOpsSec is Magic
Page 128: My Little Webap - DevOpsSec is Magic
Page 129: My Little Webap - DevOpsSec is Magic
Page 130: My Little Webap - DevOpsSec is Magic

Security

• what to test?

Page 131: My Little Webap - DevOpsSec is Magic

This is your attack surface:

Page 132: My Little Webap - DevOpsSec is Magic
Page 133: My Little Webap - DevOpsSec is Magic
Page 134: My Little Webap - DevOpsSec is Magic
Page 135: My Little Webap - DevOpsSec is Magic

You can't know where those red dots are, so protect everything.

Page 136: My Little Webap - DevOpsSec is Magic

Security

• what to test?

• how to test?

Page 137: My Little Webap - DevOpsSec is Magic
Page 138: My Little Webap - DevOpsSec is Magic

Security

• what to test?

• how to test?

• monitor issues

Page 139: My Little Webap - DevOpsSec is Magic

Security

• what to test?

• how to test?

• monitor issues

• aggregate reports

Page 140: My Little Webap - DevOpsSec is Magic

Security

• what to test?

• how to test?

• monitor issues

• aggregate reports

• prioritize issues

Page 141: My Little Webap - DevOpsSec is Magic

Security

• what to test?

• how to test?

• monitor issues

• aggregate reports

• prioritize issues

• automate tests

Page 142: My Little Webap - DevOpsSec is Magic

Security

• what to test?

• how to test?

• monitor issues

• aggregate reports

• prioritize issues

• automate tests

Page 143: My Little Webap - DevOpsSec is Magic

Give and request automated tests,not PDF docs.

Page 144: My Little Webap - DevOpsSec is Magic

Write "Malicious User Stories"

Page 145: My Little Webap - DevOpsSec is Magic
Page 146: My Little Webap - DevOpsSec is Magic

IF YOU SEE SOMETHING,

SAY SOMETHING.

Page 147: My Little Webap - DevOpsSec is Magic

... but, at least write a test.

Page 148: My Little Webap - DevOpsSec is Magic
Page 149: My Little Webap - DevOpsSec is Magic
Page 150: My Little Webap - DevOpsSec is Magic

Common Concerns:

Page 151: My Little Webap - DevOpsSec is Magic

DevOpsSec is free, you can do it today.

Page 152: My Little Webap - DevOpsSec is Magic

Automation does not replace people.Know why?

Page 153: My Little Webap - DevOpsSec is Magic
Page 154: My Little Webap - DevOpsSec is Magic

Automation is people.

Page 155: My Little Webap - DevOpsSec is Magic

Automation helps them focus on more difficult problems.

Page 156: My Little Webap - DevOpsSec is Magic
Page 157: My Little Webap - DevOpsSec is Magic

Repeat after me:

Page 158: My Little Webap - DevOpsSec is Magic

"I am DevOpsSec ..."

Page 159: My Little Webap - DevOpsSec is Magic

"... and so can you!"

Page 160: My Little Webap - DevOpsSec is Magic
Page 161: My Little Webap - DevOpsSec is Magic

Infosec Taylor Swift@SwiftOnSecurity

Page 162: My Little Webap - DevOpsSec is Magic

Apollo Clark@apolloclark

apolloclark.com

slideshare.net/ApolloClark/my-little-webap-devopssec-is-magicgithub.com/apolloclark/py-jenkins-ci