Top Banner
Booking.com WE ARE HIRING Work @ Booking: http://grnh.se/seomt7
161

Security Theatre - Confoo

Jan 20, 2017

Download

Technology

xsist10
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: Security Theatre - Confoo

Booking.comW

E ARE HIRING

Work @ Booking: http://grnh.se/seomt7

Page 3: Security Theatre - Confoo

Illusion

Page 4: Security Theatre - Confoo

Denial

Page 5: Security Theatre - Confoo

I know about OWASP!

Page 6: Security Theatre - Confoo

If you are hacked via OWASP Top 10, you’re not allowed to call it “advanced” or “sophisticated”

@thegrugq

Reference: https://twitter.com/thegrugq/status/658991205816995840

Page 7: Security Theatre - Confoo

My app is secure... I think

Wim GoddenFebruary 26, 2016 @ 14:00

Hampstead

Page 8: Security Theatre - Confoo

But I use antivirus!

Page 9: Security Theatre - Confoo

Crypting services makes most antivirus techniques useless

Reference: http://krebsonsecurity.com/2014/05/antivirus-is-dead-long-live-antivirus/

Page 10: Security Theatre - Confoo
Page 11: Security Theatre - Confoo

Let us put an unsecured node.js server on your personal

computer

TrendMicro Antivirus on WindowsJan 2016

https://code.google.com/p/google-security-research/issues/detail?id=693

Page 12: Security Theatre - Confoo

Remote code-executions via your mail client downloading an

email

Sophos AntivirusJune 2015

https://lock.cmpxchg8b.com/sophailv2.pdf

Page 13: Security Theatre - Confoo
Page 14: Security Theatre - Confoo

Internet of Things

Page 15: Security Theatre - Confoo
Page 16: Security Theatre - Confoo
Page 17: Security Theatre - Confoo

Reference: https://www.yahoo.com/tech/dutch-consumer-group-demands-samsung-151703102.html

Page 18: Security Theatre - Confoo

Reference: http://www.troyhunt.com/2016/02/controlling-vehicle-features-of-nissan.html

Page 19: Security Theatre - Confoo

We’re all bad at security

Page 20: Security Theatre - Confoo

Users are bad at security

➢ Weak passwords➢ Password reset questions➢ Human verification sucks➢ Clickbait and phishing➢ Attachments➢ URL mistype➢ Routine and workarounds➢ Convenience trumps security

Page 21: Security Theatre - Confoo

Developers are bad at security

Reference: https://github.com/

Page 22: Security Theatre - Confoo

Hackers are bad at security

Page 23: Security Theatre - Confoo

A study in scarlet

Page 24: Security Theatre - Confoo

43 applications, libraries or frameworksover 4,800 versionsover 10 million files

Page 25: Security Theatre - Confoo

Quick DemoHow the fingerprinting works

Page 26: Security Theatre - Confoo

255,000 scansAbout 6k/month from June 2012 till now

Page 27: Security Theatre - Confoo

ResultsJuly 2015

Page 28: Security Theatre - Confoo

Most popular softwareIt’s not what you think

Page 29: Security Theatre - Confoo
Page 30: Security Theatre - Confoo
Page 31: Security Theatre - Confoo
Page 32: Security Theatre - Confoo

How bad is it?

Page 33: Security Theatre - Confoo
Page 34: Security Theatre - Confoo
Page 35: Security Theatre - Confoo
Page 36: Security Theatre - Confoo

Why is it so bad?

Page 37: Security Theatre - Confoo
Page 38: Security Theatre - Confoo
Page 39: Security Theatre - Confoo
Page 40: Security Theatre - Confoo
Page 41: Security Theatre - Confoo
Page 42: Security Theatre - Confoo

I have seen thingsPh'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn

Page 43: Security Theatre - Confoo
Page 44: Security Theatre - Confoo

Versioning Hell1.3-final-beta6-pre-patch3

Page 45: Security Theatre - Confoo

OpenXBackdoored for almost a year

Page 46: Security Theatre - Confoo
Page 47: Security Theatre - Confoo

Lessons Learnt

Page 48: Security Theatre - Confoo

VersioningProjects with bad versioning also have some

of the worst security issues

Page 49: Security Theatre - Confoo

Automatic PatchingIf your software comes with automatic

upgrading, people will use it

Page 50: Security Theatre - Confoo

Plugins and TemplatesIf an update needs manual changes for

plugins or template, no one updates

Page 51: Security Theatre - Confoo

Patch Fatigue Exists

Image by Aaaron Jacobs released under CC BY-SA 2.0

Page 52: Security Theatre - Confoo

Anger

Image by Josh Janssen released under CC BY-ND 2.0

Page 53: Security Theatre - Confoo

Why doesn’t someone do something about it?

Page 54: Security Theatre - Confoo

Private industry keep threatening security researchers

Page 55: Security Theatre - Confoo

"How many Fortune 500 companies are hacked right now?

Answer, 500."Mikko Hypponen, CRO of F-Secure

Reference: https://twitter.com/mikko/status/184329161257652227

Page 56: Security Theatre - Confoo

Why don’t we have some form of standard?

Page 57: Security Theatre - Confoo

We have ISO 27001/2, ISO 15408, RFC 2196, PCI DSS, NIST, …

Reference: https://en.wikipedia.org/wiki/Cyber_security_standards

Page 58: Security Theatre - Confoo

Why doesn’t the government do something about it?

Page 59: Security Theatre - Confoo

A Ukrainian power plant was hacked & shutdown because

someone had macros enabled in Excel

Reference: https://t.co/PA7cDQC9EI

Page 60: Security Theatre - Confoo
Page 61: Security Theatre - Confoo

NSA: We’re just upgrading your megaflops, promise.

Page 62: Security Theatre - Confoo

Reference: https://t.co/PA7cDQC9EIImage by Unknown released into the Public Domain

Page 63: Security Theatre - Confoo

Bargaining

Image by Jeroen Moes released under CC BY-SA 2.0

Page 64: Security Theatre - Confoo

But what if we installed advanced IDSs, WAFs and

specialised network hardware

Page 65: Security Theatre - Confoo

We probably only knew about one of the two backdoors in our

system

Juniper NetworksDec 2015

http://www.wired.com/2015/12/juniper-networks-hidden-backdoors-show-the-risk-of-government-backdoors/

Page 66: Security Theatre - Confoo

IDSs produce reports. Managers likes reports: it helps them feel like they can "manage" security

http://security.stackexchange.com/questions/12164/how-effective-is-an-ids-at-catching-targeted-attacks

Page 67: Security Theatre - Confoo

We’ll start following prescribed security standards

Page 68: Security Theatre - Confoo

That’s great for your insurance premiums

Page 69: Security Theatre - Confoo

Depression

Page 70: Security Theatre - Confoo

Ninety percent of everything is crap.

Sturgeon's law

Reference: https://en.wikipedia.org/wiki/Sturgeon%27s_law

Page 71: Security Theatre - Confoo

Acceptance

Image by Stephan Brunet released under CC BY-SA 3.0

Page 72: Security Theatre - Confoo

Effective?

Page 73: Security Theatre - Confoo

Most of our security practices are ineffective

Page 74: Security Theatre - Confoo

We do security in isolation

Page 75: Security Theatre - Confoo

Holistic

Page 76: Security Theatre - Confoo

Hardware

Drivers

Services

Your Dependencies

Operating System

Your Software

Humans

Network / Internet

Area of Influence

Page 77: Security Theatre - Confoo

Drivers

Services

Operating System203.5M LoC

Area of Influence

Hardware

Disclaimer: Numbers generated using cloc (Service LoC limited to latest releases of MySQL, Apache and PHP)

Page 78: Security Theatre - Confoo

Operating SystemArea of Influence

Humans DNA7B LoC

Source: http://www.examiner.com/article/dna-the-ultimate-source-code

Page 79: Security Theatre - Confoo

Hardware

Drivers

Services

Your Dependencies

Operating System

Your Software

Humans

Network / Internet

HR/Training

System Administrators

Downstream Providers

Page 81: Security Theatre - Confoo

Image by Albert Bridge released under CC BY-SA 2.0

Surface Area

Page 83: Security Theatre - Confoo

Mitigation

Image by Pivari.com released under CC BY-SA 3.0

Page 84: Security Theatre - Confoo

Trust

Page 85: Security Theatre - Confoo

Trust?

Page 86: Security Theatre - Confoo

Be aware of what you’re trusting

Page 87: Security Theatre - Confoo

The hardest part of security is not writing

secure code

Page 88: Security Theatre - Confoo

It’s understanding where you misplace

your trust

Page 89: Security Theatre - Confoo

Trust is a chain

Page 90: Security Theatre - Confoo

I trust my computer is not compromised

Up-to-date patches

TRUST

Page 91: Security Theatre - Confoo

I trust that the software is without vulnerability

Vulnerability research and security updates

TRUST

Page 92: Security Theatre - Confoo

I trust that the software is configured properly

Automated provisioning

TRUST

Page 93: Security Theatre - Confoo

I trust that the network is configured properly and secure

Good system administrators

TRUST

Page 94: Security Theatre - Confoo

I trust you are who you say you are

TLS Certificate Peer Verification or Authentication

TRUST

Page 95: Security Theatre - Confoo

I trust you are allowed to talk to me about this topic

Authorization

TRUST

Page 96: Security Theatre - Confoo

I trust that what you send me hasn’t been tampered with

Hashes or signatures

TRUST

Page 97: Security Theatre - Confoo

I trust that what we talk about is just between us

Public and private keys

TRUST

Page 98: Security Theatre - Confoo

I trust your computer is not compromised

????

TRUST

Page 99: Security Theatre - Confoo

I trust that what we talk about won’t be share with others

Contracts, Legalities, Terms of use, ????

TRUST

Page 100: Security Theatre - Confoo

I trust that the user won’t be the weak link

Training and procedures

TRUST

Page 101: Security Theatre - Confoo

Turn your chain into a mesh

Image by ineverfinishanyth released under CC BY-NC-SA 2.5

Page 102: Security Theatre - Confoo

Common Mistakes

Page 103: Security Theatre - Confoo

WeakeningCompromising encryption or hashing is

about reducing time to crack

Page 104: Security Theatre - Confoo

ImplementationA bad implementation helps reduce the time

to crack

Page 105: Security Theatre - Confoo

Authentication

Page 106: Security Theatre - Confoo

2 Factor Authenticationcomposer require pragmarx/google2fa

Page 107: Security Theatre - Confoo

OAuth2composer require league/oauth2-client

Page 108: Security Theatre - Confoo

Sessions

Page 109: Security Theatre - Confoo

Image by Wouter van Emmerik released under CC BY-SA 3.0

Never roll your own

Page 110: Security Theatre - Confoo

if (strstr($_SERVER['QUERY_STRING'],'session_to_unset') != false){ parse_str($_SERVER['QUERY_STRING']); session_write_close(); session_id($session_to_unset); session_start(); $_SESSION = array(); session_write_close(); session_destroy(); exit;}

MistakesDeep understanding of the language

CODE SAMPLE

Reference: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-2505

Page 111: Security Theatre - Confoo

if (strstr($_SERVER['QUERY_STRING'],'session_to_unset') != false){ parse_str($_SERVER['QUERY_STRING']); session_write_close(); session_id($session_to_unset); session_start(); $_SESSION = array(); session_write_close(); session_destroy(); exit;}

MistakesDeep understanding of the language

CODE SAMPLE

Reference: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-2505

Writes $_SESSION to disk

Page 112: Security Theatre - Confoo

if (strstr($_SERVER['QUERY_STRING'],'session_to_unset') != false){ parse_str($_SERVER['QUERY_STRING']); session_write_close(); session_id($session_to_unset); session_start(); $_SESSION = array(); session_write_close(); session_destroy(); exit;}

MistakesDeep understanding of the language

CODE SAMPLE

Extracts URL parameters into the namespace.

session_to_unset=a becomes $session_to_unset = “a”;

Reference: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-2505

Page 113: Security Theatre - Confoo

Encryption

Page 114: Security Theatre - Confoo

Image by Wouter van Emmerik released under CC BY-SA 3.0

Never roll your own

Page 115: Security Theatre - Confoo
Page 116: Security Theatre - Confoo

Avoid old tutorials on encryption

https://gist.github.com/paragonie-scott/e9319254c8ecbad4f227

Page 117: Security Theatre - Confoo

Failed: Error Number: 60. Reason: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

// Many old tutorials and posts suggest disabling peer verificationscurl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

// Thankfully PHP 5.6+ handles CA certificate location automatically// now thanks to https://wiki.php.net/rfc/improved-tls-defaults and// Daniel Lowrey

Avoid advice like thisWeakening security for convenience

CODE SAMPLE

Page 118: Security Theatre - Confoo

Hashing

Page 119: Security Theatre - Confoo

Image by Wouter van Emmerik released under CC BY-SA 3.0

Never roll your own

Page 120: Security Theatre - Confoo

One way encodingComparisons / Integrity Checks

Page 121: Security Theatre - Confoo

278,362,281Number of accounts publicly leaked

Reference: https://haveibeenpwned.com/

Page 122: Security Theatre - Confoo

Weak hash functions+/- 690GB rainbow tables

Page 123: Security Theatre - Confoo

$password = 'rasmuslerdorf';$hash = '$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a';

// Is this call safe?if (crypt($password, $hash) === $hash) { echo 'Password is correct';}// What about this one?if (password_verify($password, $hash)) { echo 'Password is correct';}

Bad implementationWhere is the weakness?

CODE SAMPLE

Page 124: Security Theatre - Confoo

Timing AttacksBrute forcing cryptographic functions via

time taken to execute

Page 125: Security Theatre - Confoo

$string1 = 'abcd';$string2 = 'abce';$string3 = 'acde';

for ($i=0; $i<10000; $i++) { ($string1 === $string2); }// Time taken: 0.008344

for ($i=0; $i<10000; $i++) { ($string1 === $string3); }// Time taken: 0.006923

Timing AttacksHow it works

CODE SAMPLE

Page 126: Security Theatre - Confoo

Timing attacks can be used to work out if an account exists [...].

@troyhunt, haveibeenpwned.com

Reference: https://t.co/5WkQ48suj7

Page 127: Security Theatre - Confoo

Well actuallyAmount of randomness matters

Reference: http://blog.ircmaxell.com/2012/12/seven-ways-to-screw-up-bcrypt.html

Page 128: Security Theatre - Confoo

$password = 'rasmuslerdorf';$hash = '$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a';

// Check the passwordif (password_verify($password, $hash)) { echo 'Password is correct'; if (password_needs_rehash($hash, PASSWORD_DEFAULT)) { // Rehash and store in database $new_password = password_hash($password, PASSWORD_DEFAULT); }}

RehashBuild it into your flow

CODE SAMPLE

Page 129: Security Theatre - Confoo

Randomness

Page 130: Security Theatre - Confoo

Image by Wouter van Emmerik released under CC BY-SA 3.0

Never roll your own

Page 131: Security Theatre - Confoo

Non-deterministic randomness is critical in encryption

Used for key generation and nonces

Page 132: Security Theatre - Confoo

Non-deterministic randomness is hard

Dual_EC_DRBG was in use for 7 years

Page 133: Security Theatre - Confoo

// NOT cryptographically securerand();

// Cryptographically secure (uses OS-specific source)random_int();

// Cryptographically secure (uses OS-specific source)random_bytes();

// Cryptographically secure (uses OpenSSL library)openssl_random_pseudo_bytes();

Random in codeKnow the source

CODE SAMPLE

Page 134: Security Theatre - Confoo

Information Disclosure

Page 135: Security Theatre - Confoo

HEAD http://example.com/index.php200 OKConnection: closeDate: Sat, 26 Dec 2015 13:52:01 GMTServer: ApacheContent-Type: text/html; charset=UTF-8Client-Date: Sat, 26 Dec 2015 13:52:01 GMTClient-Peer: 192.168.0.101:80Client-Response-Num: 1X-Powered-By: PHP/5.5.11

Information DisclosureEvery piece of information can be leveraged

LOG SAMPLE

Page 136: Security Theatre - Confoo

HEAD http://example.com/index.php200 OKConnection: closeDate: Sat, 26 Dec 2015 13:52:01 GMTServer: ApacheContent-Type: text/html; charset=UTF-8Client-Date: Sat, 26 Dec 2015 13:52:01 GMTClient-Peer: 192.168.0.101:80Client-Response-Num: 1X-Powered-By: PHP/5.5.11

Information DisclosureEvery piece of information can be leveraged

LOG SAMPLE

Page 137: Security Theatre - Confoo

Warning: require(assets/includes/footer.php) [function.require]: failed to open stream: No such file or directory in /home/user/path/to/assets/includes/operations.php on line 38

Fatal error: require() [function.require]: Failed opening required 'assets/includes/footer.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/user/path/to/assets/includes/operations.php on line 38

Information DisclosureEvery piece of information can be leveraged

LOG SAMPLE

Page 138: Security Theatre - Confoo

Social Engineering

Page 139: Security Theatre - Confoo

Weak password reset processes

Can you Google the answer?How do you handle customer support reset?

Page 140: Security Theatre - Confoo

Customer support training

Convenience vs Security

Page 141: Security Theatre - Confoo

@N’s (Naoki Hiroshima) Story

How do you mitigate against this?

Page 142: Security Theatre - Confoo

Hope

Image by Jenny released under CC BY-NC-ND 2.0

Page 143: Security Theatre - Confoo

Holistic

Page 144: Security Theatre - Confoo

A.B.C.

Page 145: Security Theatre - Confoo

Always Be C Patching

Page 146: Security Theatre - Confoo

Patching StrategyIf a dependency prevents updating, resolve it

now

Page 147: Security Theatre - Confoo

Version properlyMajor.Minor.Patch. How hard is that?

Page 148: Security Theatre - Confoo

Composer properlycaret (^) makes updating easy

Page 149: Security Theatre - Confoo

ReadKnow about new threats and best practice

changes

Page 150: Security Theatre - Confoo

Don’t become comfortable

Comfort breeds contempt

Page 151: Security Theatre - Confoo

Training StrategyHave a process for dealing with account

locks and resets

Page 152: Security Theatre - Confoo

Compromise StrategyHave a plan before you need it

Page 153: Security Theatre - Confoo

InformationOnly store what you really need

Page 154: Security Theatre - Confoo

Mistakes will be madeLearn from them

Page 155: Security Theatre - Confoo

Rate limitBuilt it now, or you’ll have to build it while an

incident is underway

Page 156: Security Theatre - Confoo

Monitor everythingYou’re more likely to be alerted by a graph

spiking than your IDS

Page 157: Security Theatre - Confoo

Decouple rolesDatabases, servers, domains, roles, ...

Page 158: Security Theatre - Confoo

Decouple plugins/templates

Updates should be simple

Page 159: Security Theatre - Confoo

Get behind PSR-9 & 10http://www.php-fig.org/psr/

Page 161: Security Theatre - Confoo

Thank you@thomas_shone