Sie sind auf Seite 1von 53

Security mistakes by example

Jens Krafczyk <krafczyk@smartsquare.de>

2018-06-13

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 1 / 49


Heute nicht Thematisiert:

Ashley Madison (2015, ca. 30M) [1]


Comcast (2015, ca. 600k) [1]
Equifax (2017, ca. 143M) [2]
LinkedIn (2012, ca. 164M) [1]
Stratfor (2011, ca. 850k) [1]

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 2 / 49


Aufbau des Talks

mehrere öffentlich bekannt gewordene Sicherheitsprobleme


Jeweils: Vorstellung der Firma
Beschreibung des Problems und der Ursachen
Folgen
Was lernen wir daraus?

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 3 / 49


Intro (Quellen)

[1] https://haveibeenpwned.com/PwnedWebsites.
[2] https://krebsonsecurity.com/2017/09/breach-at-equifax-
may-impact-143m-americans/.

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 4 / 49


Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 5 / 49
Patreon, 2015

Platform für crowdsourced funding von Künstlern


Populär u.A. bei Youtubern, Webcomic-Künstlern, Musikern, ...
(Quelle: Wikipedia, [1])

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 6 / 49


Patreon, 2015 (Ursachen)

Python-basierte Webanwendung
Framework öffnet in debug-deployments bei Fehlern eine interaktive
python-shell im Browser
Dev-Umgebung ungeschützt im Internet
Exception in Dev Umgebung ⇒ Python-Konsole ⇒ Shell-Zugriff ⇒
Datenbankdumps, etc.
Dev-Server hatte offenbar Zugang/Verbindungen zu
Produktivdatenbank

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 7 / 49


Patreon, 2015 (Folgen)

15GB archiv mit Datenbankdump und Quellcode


enthält ca. 2.3 Millionen Emailadressen mit Passworthashes
Positiv: Passworthashes mit BCrypt ⇒ relativ zeitaufwendig zu
cracken
Ich habe danach spam bekommen :(

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 8 / 49


Patreon, 2015 (Lessons Learned)

Dev-Umgebung nicht ans öffentliche Internet hängen


Wenn, dann wenigstens mit Passwortschutz!
Besser: VPN oder internes Netzwerk am Standort
Debugging-Zugänge insbesondere nicht über das Internet erreichbar
machen! (Gilt auf für java -Xdebug)
Muss die Dev-Umgebung im gleichen Netz hängen wie Prod?

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 9 / 49


Patreon, 2015 (Quellen)

[1] https://en.wikipedia.org/w/index.php?title=Patreon&
oldid=843691094.
[2] https://labs.detectify.com/2015/10/02/how-patreon-got-
hacked-publicly-exposed-werkzeug-debugger/.
[3] https://motherboard.vice.com/en_us/article/xywedn/
crowdfunding-site-patreon-gets-hacked.
[4] https://motherboard.vice.com/en_us/article/qkvgj3/the-
whole-works-is-in-there-hackers-dump-data-from-
patreon-crowdfunding-site.
[5] https://arstechnica.com/information-
technology/2015/10/gigabytes-of-user-data-from-hack-
of-patreon-donations-site-dumped-online/.

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 10 / 49


Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 11 / 49
Ai.Type, 2017

Entwickelt on-screen-keyboard Apps für Android und iOS


”Cloud basierte” Lösung
Playstore: Kostenlose App mit in-App Purchases
(Quelle: Herstellerwebseite, [1])

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 12 / 49


Ai.Type, 2017 (Beschreibung)

Datenbank (MongoDB) aus dem Internet erreichbar


dadurch z.B. via Shodan auffindbar
Ohne Passwort

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 13 / 49


Ai.Type, 2017 (Beschreibung)

Datenbank (MongoDB) aus dem Internet erreichbar


dadurch z.B. via Shodan auffindbar
Ohne Passwort
OHNE PASSWORT

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 13 / 49


Ai.Type, 2017 (Folgen)

Datenbankdump (577 GB) verfügbar


Mit Emailadressen, Telefonnummern, Namen, Adressbüchern, Listen
installierter Apps, Passwörtern, usw.

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 14 / 49


Ai.Type, 2017 (Lessons Learned)

Datenkbankzugang nur mit Authentifizierung (Passwort, X.509, ...)


Datenbank nicht einfach so ins Internet stellen
VPN
Physisch getrenntes Netzwerk
Firewall
MongoDB Warnung “Access control is not enabled for the database”
ernst nehmen!

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 15 / 49


Ai.Type, 2017 (Quellen)

[1] http://aitype.com/about-us/.
[2] http://www.zdnet.com/article/popular-virtual-keyboard-
leaks-31-million-user-data/.
[3] https://thehackernews.com/2017/12/keyboard-data-
breach.html.
[4] https://mackeepersecurity.com/post/virtual-keyboard-
developer-leaked-31-million-of-client-records.

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 16 / 49


Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 17 / 49
Svakom, 2017

”[SVAKOM] has been dedicated to design, research, development,


manufacturing and marketing of premium sex toys for years.”
”SVAKOM was nominated three times as Worldwide Premium
Female Sex Toy Brand”
(Quelle: Herstellerwebseite, [1])

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 18 / 49


Svakom, 2017 (Beschreibung / Folgen (1))

Vibrator mit Endoskop-Kamera


Videoübertragung über WLAN
Gerät agiert als WLAN Access Point
WLAN Name: ”SIIMEEYE”
...und jetzt wissen meine Nachbarn dass (und wann) ich einen
Kameradildo benutze.
und der Rest des Internets auch, z.B. via wigle.net

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 19 / 49


Svakom, 2017 (Beschreibung / Folgen (2))

WLAN Passwort: 88888888


die Nachbarn können sich also auch mit der Kamera verbinden und
zuschauen

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 20 / 49


Svakom, 2017 (Beschreibung / Folgen (3))

Admin-Weboberfläche auf 192.168.1.1


Benutzername ”admin”, kein Passwort
Darüber ist weitere Erkundung der Platform möglich

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 21 / 49


Svakom, 2017 (Beschreibung / Folgen (4))

Das Gerät hat einen Telnet-Server


root-passwort: ”reecam4debug”
Jetzt könnte man Malware auf dem embedded Linux installieren

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 22 / 49


Svakom, 2017 (Lessons Learned)

IOT-Devices: zu bestehendem WLAN verbinden, kein eigenes erstellen


Feste passwörter vermeiden
“If there’s no reason for a user to access relatively complex
functionality of a device, then there’s no reason to expose it” [2]
Für die Kunden von Svakom: “throw the device away and never use it
again.” [3]

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 23 / 49


Svakom, 2017 (Quellen)

[1] https://www.svakom.net/about_us.
[2] https://www.pentestpartners.com/security-
blog/vulnerable-wi-fi-dildo-camera-endoscope-yes-
really/.
[3] https:
//motherboard.vice.com/en_us/article/53847a/camera-
dildo-svakom-siime-eye-hacked-livestream.

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 24 / 49


Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 25 / 49
Github, 2012

Größter Code-Hoster der Welt


Kürzlich für 7.5 Mrd. USD an Microsoft verkauft.
Hat Texteditor Atom und NodeJS Desktop Application Framework
Electron entwickelt
(Quelle: Wikipedia, [1])

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 26 / 49


Rails, 2012

Web-Framework für Ruby


Verwendet z.B. von Airbnb, Github, Scribd, Shopify, Hulu, Basecamp
(Quelle: Wikipedia, [2])

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 27 / 49


Github/Rails, 2012 (Beschreibung)

Github: Ruby on Rails Applikation


Rails Mass Assignment feature: ”Nimm alle Parameter aus diesem
HTTP Request und befülle mein ORM Datenobjekt damit”
Problem: Manche Dinge dürfen nicht unbedingt immer geändert
werden (z.B. ”isAdmin” Flags)
Lösung: White/Blacklists zur Kontrolle der Mass-Assignment-fähigen
Attribute
Problem: Müssen gepflegt werden. Rails Defaultwert: “alles erlaubt”

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 28 / 49


Github/Rails, 2012 (Folgen)

Egor Homakov hat das Verhalten über den Rails-Bucktracker als Bug
reported [3], wurde als “works as designed” abgetan
Homakov hat sich über eine Mass-Assignment-Vulnerability
admin-Zugang zum Repository von Ruby on Rails verschafft
Damit erneut auf den Bug aufmerksam gemacht
Ausnutzung des Bugs von diesem Vorfall abgesehen? Keine Ahnung!

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 29 / 49


Github/Rails, 2012 (Lessons Learned)

Ruby on Rails - Security Guidelines befolgen


Problem: ”Insecure by default” (⇒ fehleranfällig) 1

⇒ Wenn deine Benutzer deine Software konsistent falsch benutzen,


sind vielleicht nicht (nur) die Benutzer zu dumm, sondern (auch) die
Software kacke...
Niemals Benuztereingaben ungefiltert akzeptieren
Mass-Assignment: generell gefährlich?
Mögliche Lösung: Getrennte Objekte für Form-Binding + Validierung
und für Persistenz?

1
In aktuellem Rails möglicherweise nicht mehr zutreffend
Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 30 / 49
Github/Rails, 2012 (Quellen)

[1] https://en.wikipedia.org/w/index.php?title=GitHub&
oldid=844530489.
[2] https://en.wikipedia.org/wiki/Ruby_on_Rails.
[3] https://github.com/rails/rails/issues/5228.
[4] https://blog.erratasec.com/2012/03/rubygithub-hack-
translated.html.
[5] https://arstechnica.com/information-
technology/2012/03/hacker-commandeers-github-to-prove-
vuln-in-ruby/.
[6] http:
//guides.rubyonrails.org/v3.2.9/security.html#mass-
assignment.

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 31 / 49


Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 32 / 49
Valve, 2015

Entwickelt Computerspiele (Half-Life, Portal, ...)


Betreibt die momentan größte distributionsplatform für PC Spiele:
Steam
(Quellen: Wikipedia, [1], [2])

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 33 / 49


Valve, 2015 (Beschreibung)

DDOS Angriff im Weihnachtsgeschäft


Spontane einführung umfangreicheren Cachings durch einen Partner
Konfigurationsfehler: Daten von eingeloggten Benutzern wurden
gecached

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 34 / 49


Valve, 2015 (Folgen)

Benutzer haben Seiten gesehen die für andere generiert wurden (z.B.
andere Sprachen, fremde Accountseiten, ...)
“As no unauthorized actions were allowed on accounts beyond the
viewing of cached page information” [3]
Positiv: Klare und detaillierte Kommunikation durch Valve

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 35 / 49


Valve, 2015 (Lessons Learned)

Ich bin ratlos...


Vorsicht beim cachen möglicherweise Benutzerbezogener Daten?
Nicht ”mal eben so” Änderungen in Prod umsetzen?

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 36 / 49


Valve, 2015 (Quellen)

[1] https://en.wikipedia.org/w/index.php?title=Valve_
Corporation&oldid=844190151.
[2] https://en.wikipedia.org/w/index.php?title=Steam_
(software)&oldid=844529491.
[3] https://store.steampowered.com/news/19852/.
[4] https://www.theverge.com/2015/12/25/10665814/valve-
steam-holiday-sale-security-problems.
[5] https://www.reddit.com/r/Steam/comments/3y7r0b/do_not_
login_to_any_steam_websites/.

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 37 / 49


Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 38 / 49
Barracuda Networks, 2011

“While we maintain a strong heritage in email and web security


appliances [...]”
“[...] providing organizations of all sizes with true end-to-end
protection”
(Quelle: Herstellerwebseite, [1])

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 39 / 49


Barracuda Networks, 2011 (Ursachen)

SQL Injection in einem PHP skript


Web Application Firewall war in “passive monitoring mode”

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 40 / 49


Barracuda Networks, 2011 (Folgen)

Leak: Emailadressen von Partnern, Leads und teilweise Mitarbeitern

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 41 / 49


Barracuda Networks, 2011 (Lessons Learned)

“you can’t leave a website exposed nowadays for even a day (or
less).” [2]
SQL-Injections sind vermeidbar (Prepared Statements mit parameter
binding)
Web Application Firewalls helfen nicht, wenn man sie ausschaltet

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 42 / 49


[1] https://www.barracuda.com/company/index.
[2] https://www.itnews.com.au/news/barracuda-admits-
mistake-after-hack-254320.
[3] https://www.heise.de/security/meldung/Datendiebstahl-
bei-Netzwerk-Sicherheitsfirma-1226365.html.

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 43 / 49


But wait - there’s more!

Weitere medienwirksame Security-Themen:

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 44 / 49


But wait - there’s more!

Meltdown, Spectre [1]


Rowhammer, Flip-Feng-Shui [2]
Angriffe auf Virenscanner [3] [4]
Auslesen von iframe-daten unter Umgehung der Same-Origin-Policy
durch timing-angriffe auf CSS features [5]
und viel mehr.

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 45 / 49


Fazit

Security ist schwierig

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 46 / 49


Fazit

Security ist schwierig


Komplette Sicherheit: Unmöglich?
Folgen für Unternehmen anscheinend eher gering (Im Talk
thematisierte Firmen existieren zumindest alle noch)
Gebt einfach auf...

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 46 / 49


Fazit

Security ist schwierig


Komplette Sicherheit: Unmöglich?

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 47 / 49


Fazit

Security ist schwierig


Komplette Sicherheit: Unmöglich?
Beschriebene Probleme: häufig Operating-Themen
Niemand kann alles
Was heißt das für Dev-Ops? Wollen wir weitgehend ungeschulte
Entwickler an unserer Infrastuktur rumpfuschen lassen?

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 47 / 49


Fazit

Security ist schwierig...


Komplette Sicherheit (gegen beliebig kompetente Angreifer):
Unmöglich?

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 48 / 49


Fazit

Security ist schwierig...


Komplette Sicherheit (gegen beliebig kompetente Angreifer):
Unmöglich?
aber es gibt wahnsinnig viel “low hanging fruit”
Im Vortrag genanntes: Alles ziemlich einfache Angriffe!
Lesevorschlag: “Add continuous security validation to your CI/CD
pipeline” [6]

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 48 / 49


Fazit (Quellen)

[1] https://www.wired.com/story/critical-intel-flaw-breaks-
basic-security-for-most-computers/.
[2] https://arstechnica.com/information-
technology/2016/08/new-attack-steals-private-crypto-
keys-by-corrupting-data-in-computer-memory/.
[3] https://www.f-secure.com/en/web/labs_global/fsc-2018-2.
[4] https://www.securityweek.com/critical-vulnerability-
symantec-av-engine-can-be-exploited-sending-email.
[5] https://www.evonide.com/side-channel-attacking-
browsers-through-css3-features/.
[6] https://docs.microsoft.com/en-
us/vsts/articles/security-validation-cicd-pipeline.

Jens Krafczyk <krafczyk@smartsquare.de> Security mistakes by example 2018-06-13 49 / 49