Top Banner
BE MEAN TO YOUR CODE RUGGED DEVELOPMENT & YOU MATT JOHANSEN JAMES WICKETT
69

Be Mean To Your Code: Rugged Development & You

Jul 07, 2015

Download

Software

James Wickett

Writing code that works is hard. Writing rugged code that can stand the test of time is even harder. This difficulty is often compounded by crunched timelines and fast cycles that prioritize new features. Add in evolving business needs and new technology and it becomes confusing to know what to do and how to integrate security into your application.

This talk brings some advice/tools of the top developers and application security practitioners to help you ruggedize your end-to-end development lifecycle from code commit to running system. You will learn pragmatic approaches and tooling that will affect your development processes, delivery pipelines and even the operational runtime. You will walk away with solutions you can put into practice right away and you will also be armed with rugged anti-patterns to help you identify what to change.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Be Mean To Your Code: Rugged Development & You

BE MEAN TO YOUR CODE RUGGED DEVELOPMENT & YOU

MATT JOHANSEN JAMES WICKETT

Page 2: Be Mean To Your Code: Rugged Development & You

@mattjay

The Beard of Destiny

Gauntlt Cheerleader

Head of WhiteHat Threat Research

Center

BlackHat, DEFCON, RSA, SXSW, more++

Page 3: Be Mean To Your Code: Rugged Development & You

@wickett

Gauntlt Project Lead

Founder of LASCON

Sr. Engineer at Signal Sciences

Page 4: Be Mean To Your Code: Rugged Development & You

We’re making AppSec effective and practical

signalsciences.com

Page 5: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

AUDIENCE SURVEY

Cloud or Metal?

DevOps? Agile? Flavors?

How does code get to production?

How often do you do code changes?

Do you do security testing in the build/deploy pipeline?

Page 6: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

PRINCIPLES FOR A MODERN SECURITY

TEAM

Page 7: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

OSSM

On Demand

Scalable

Self-Service

Measured

Source: Dave Neilsen

Page 8: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

OLD DECISION MATRIXFunction

Features

Gartner Magic Quadrant

Trial Eval

TCO

Page 9: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

NEW DECISION MATRIX

API and Integrations

Service Billing

Half Decent?

Page 10: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

PLAY NICE AND INTEGRATE WITH

OTHERS

PRINCIPLE #1

Page 11: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

PEOPLE PROCESS

TECHNOLOGY

Page 12: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

INFLUENCE THE PEOPLE

PRINCIPLE #2

Page 13: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

DEVOPS

Page 14: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

CAMSCulture

Lean*

Automation

Measurement

Sharing

Source: @botchagalupe @damonedwards

Page 15: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

Page 16: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

WHAT WE VALUE IS DETERMINED BY OUR

CULTURE

PRINCIPLE #3

Page 17: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

Page 18: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

CONTINUOUS DELIVERY IS KING

PRINCIPLE #4

Page 19: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

THERE ARE TWO PATHS TO WINNING FOR

SECURITY

Page 20: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

THE DEVELOPMENT AND BUILD PIPELINE

Page 21: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

OPERATIONAL RUNTIME STATE AND

MONITORING

Page 22: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

WE ARE FOCUSING ON DEV/BUILD PIPELINE IN

THIS PRESENTATION

Page 23: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

DETECT AND FIX IN DEVELOPMENT

Page 24: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

WHY DOES THIS MATTER?

VULNERABLE CODE IS EVERYWHERE

Page 25: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

Page 26: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

HOW DO I FIX XSS?

Page 27: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

GOOD: INPUT SANITIZATION

[XSS]

Page 28: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

BLACKLIST :( [XSS]

Page 29: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

WHITELIST :) [XSS]

Page 30: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

BETTER: OUTPUT ENCODING

[XSS]

Page 31: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

< > BECOME &LT; &GT; [XSS]

Page 32: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

SQL INJECTION [SQLi]

Page 33: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

Page 34: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

Page 35: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

CREDIT: XKCD

Page 36: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

HOW DO I FIX IT? [SQLi]

Page 37: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

PARAMETERIZED QUERIES

[SQLi]

Page 38: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

PARAMETERIZED QUERIES (PHP) [SQLi]

Page 39: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

PARAMETERIZED QUERIES (JAVA) [SQLi]

Page 40: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

CROSS SITE REQUEST FORGERY

[CSRF]

Page 41: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

Page 42: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

Page 43: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

HOW DO I FIX IT? [CSRF]

Page 44: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

Page 45: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

TOKENS! [CSRF]

Page 46: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE IMAGE CREDIT: DOTNETBIPS.COM

Page 47: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

AGAIN… VULNERABLE CODE IS EVERYWHERE

Page 48: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

GETS FIXED SLOWLY

Page 49: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE GETS FIXED SLOWLY

Page 50: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

…IF EVER

Page 51: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

OWASP TOP 10

Page 52: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

Page 53: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

YOU HAVE A BUILD PIPELINE

TELL ME MORE ABOUT HOW SPECIAL YOU ARE

Page 54: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

GAUNTLT

Page 55: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

BUILT ON CUCUMBER

Page 56: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

GAUNTLT PRINCIPLES AND PHILOSOPHY

Gauntlt comes with pre-canned steps that hook security testing toolsGauntlt does not install toolsGauntlt can be part of the CI/CD pipelineBe a good citizen of exit status and stdout/stderrMIT Open Source License

Page 57: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

Page 58: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

GAUNTLT RESOURCES

• 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 59: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

THE GAUNTLT BOOK

FREE FOR LASCON!

[email protected]

Page 60: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

Page 61: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

./velocity/lab_3/.travis.yml

Page 62: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

./velocity/lab_3/.travis.yml

Page 63: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

./Rakefile

Page 64: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

./test/attacks/email_leakage.attack

Page 65: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

./test/attacks/email_leakage.attack

Page 66: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

./test/attacks/backdoors.attack

Page 67: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

./test/attacks/sql_injection.attack

Page 68: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

DEMO

Page 69: Be Mean To Your Code: Rugged Development & You

#RUGGEDCODE

@MATTJAY @WICKETT