Security war so teuer!
Wieso funktioniert es nicht?

Felix von Leitner
Code Blau GmbH

Über mich

You are doing it wrong!

IT Security Minesweeper

Wir greifen jetzt mal ein paar Gartner-Empfehlungen raus.

Dann gucken wir, wir es Leuten ergangen ist, die der Empfehlung gefolgt sind.

Disziplin: Firewall

How it started

Gartner: best firewall

FortiGate is the only NGFW with unified management for hybrid mesh firewall
Where AI/ML Security and Enterprise Networking Converge

How it's going

remotely exploitable, preauth vuln

What I did

Ich hab keine Ports offen, die man filtern könnte.

Disziplin: Endpoint Protection

How it started

Gartner: endpoint protection

Revolutionary Threat Detection and Response
Protect against attacks and secure your hybrid and multi-cloud infrastructure

How it's going


A vulnerability exists in TA for Windows 5.7.8 and earlier, which allows local users, during install/upgrade workflow, to replace one of the Agent's executables before it can be executed. This allows the user to elevate their permissions.

A heap-based overflow vulnerability in TA (Windows and Linux) 5.7.8 and earlier allows a remote user to alter the page heap in the macmnsvc process memory block, resulting in the service becoming unavailable.

What I did

Ich setze kein Schlangenöl ein.

Disziplin: Password Manager

How it started

Gartner: Password Management

Prepare for a password[less] future by embracing pervasive password management today.

How it's going

Lasspass Hack: Angreifer hackten Privat-PC von DevOps-Entwickler

Cyberkriminelle haben vergangenes Jahr LastPass-Kennworttresore kopiert. Nun scheinen sie diese zu knacken und Krypto-Wallets leerzuräumen.

What I did

$ grep Password /etc/sshd_config
PasswordAuthentication no
PermitEmptyPasswords no

Ich logge mich mit public key ein.

Bonus: Zweifaktor-Authentisierung

How it started

Gartner: user authentication

Easy, Flexible Cybersecurity Solutions for Everybody

How it's going

Wenn Sie sich wo einloggen wollen, fragt der Server die Cloud.

Die Cloud poppt dann auf Ihrem Telefon eine App hoch.

Da klicken Sie den "Ja"-Button

Die Cloud sagt dann dem Server: Ist OK.

Wenn Sie genau hingucken, werden Sie feststellen, dass die Cloud auch ohne den Button "Ist OK" sagen könnte. Braucht keinen Hack, um unsicher zu sein!

Ist ja unfair!

Sie merken schon, ich hatte viel Zeit.

Ich musste nicht ständig Katastrophen von Zulieferern und Cloud-Diensten hinterherräumen.

Was habe ich mit der Zeit getan?

Hold My Beer!

„Ich will ein Blog betreiben“

Was muss das können?

Statische Inhalte anzeigen. OK, Suchfunktion wäre nett.

Kommentarfunktion brauche ich nicht. Macht auch nur Ärger.

What I did

Webserver mit FastCGI.

Wieso nicht Webserver-Plugin? Damit das CGI mit einer anderen UID als der Webserver laufen kann. Sonst könnte das CGI den TLS Private Key aus dem Webserver auslesen.

Außerdem wollte ich mir den Spaß machen, möglichst viele Perf-Security-Tradeoffs für Security zu entscheiden, um zu zeigen, dass nicht die Security eure ranzigen Webseiten langsam macht.

What the industry did

Foto: IBM Cybertruck

Wo liegen die Daten?

In einem LDAP-Server, den ich gerade für ein anderes Projekt gehackt hatte. Warum?

$ ls -s =postgres =slapd tinyldap
8156 /opt/postgres/bin/postgres
1756 /opt/openldap/libexec/slapd
  92 tinyldap

tinyldap wird von tcpserver gestartet. Ein fork+exec pro Request.
Codegröße: 4656 LOC (inkl Unittests) plus libc.

What the industry did

Foto: Full Spectrum Cyber

What I did

Wenn jemand das Blog-CGI hackt, kann der Dateien öffnen.

Das sollte ich verhindern.

Seccomp kann open() verbieten.

Aber ich muss selber open machen.

*Bartzwirbel*

*Glühbirne* Ich öffne die Dateien, bevor ich Input vom Angreifer gesehen habe. Dann verbiete ich open(). Dann gucke ich den Input an.

What the industry did

Foto: https://www.mantech.com/sites/default/files/styles/hero_image/public/2022-09/Full-Spectrum-Cyber.jpg?itok=wffMwY-K

What I did

*Bartzwirbel* Wenn jemand das Blog-CGI hackt, kann er Passwörter (von anderen einkommenden Verbindungen) sehen.

1. CGI statt FastCGI, 2. ptrace() verbieten!

Angreifer kann immer noch Zugriffsschutz im Blog-CGI aushebeln!

*Glühbirne* Dann mach ich die im tinyldap!

*haarlose Katze streichel*

What the industry did

https://www.crowdstrike.com/cybersecurity-101/threat-intelligence/threat-intelligence-feeds/

What I did

Wenn ein Angreifer das Blog-CGI hackt und vor dort aus den tinyldap, dann kann er Zugriffsschutz umgehen und Passwörter sehen!

1. Ein tinyldap-Prozess pro Request, ptrace() verbieten

What the industry did

Attack Path Management

What I did

OK aber in der LDAP-Datenbank stehen ja immer noch Passwörter. Die kann der Angreifer sehen!

Dann tu ich da halt nur Hashes rein, an dem kann sich der Angreifer zu Tode cracken.

What the industry did

Attack Path Simulation

What I did

Der Angreifer kann meine Datenbank verschlüsseln!

*Glühbirne* Die Datenbank mache ich read-only. Änderungen hänge ich hinten an ein Journal an. Ab und zu füge ich Datenbank und Journal zusammen.

Der tinyldap-Prozess darf nur mit O_APPEND öffnen.

Das Journal-Zusammenführen macht nicht tinyldap sondern ich manuell alle paar Wochen.

What the industry did

Attack Surface Management

What I did

Der Angreifer kann immer noch Müll in mein Blog schreiben!

Ja, aber ich kann dann Schreiben deaktivieren, das Journal abschneiden. Das macht allen Vandalismus ungeschehen und ich kann in Ruhe herausfinden, wie er reingekommen ist.

Das war mein Optimierungsziel: Stressreduktion im Ernstfall.

What the industry did

„USB-Sticks sind böse“-Awarenesskampagne

What I did

Was wenn jemand den Webserver hackt?

Dann hab ich immer noch verloren. Der sieht den durchlaufenden Traffic und die Private Keys fürs TLS.

Zukunftsvision: TLS-Handshake in separatem Prozess machen, dann Sockets mit konfiguriertem Kernel-TLS per File Descriptor Passing zurückliefern.

What the industry did

Illustration: Cookiebanner

What I did

Ich setze keine Cookies.

Der User kann bei mir selber Cookies setzen. Dafür brauche ich keine Zustimmung.

Ist das nicht unfassbar langsam?!

Schafft auf meinem Intel-Atom-Reiselaptop 2000 Anfragen pro Sekunde (ohne Caching).

Wieviel schafft Ihre Servlet-Hölle so?

Ist das wirklich besser?

Kommt auf die Security-Definition an.

Meine Definition: Die Anwendung kann alles, was sie braucht, um zu tun, was ich von ihr will. Nicht mehr.

Die interessantere Frage: Wieso ist das so aufwendig?!

Wieso ist das so aufwendig?

Weil man Anwendung heute nicht mehr programmiert.

Man stöpselt sie aus Frameworks und Fertigteilen zusammen.

Die Komponenten werden nach Flexibilität ausgewählt.

Die Komponenten haben keine Ahnung, wofür ich sie verwenden werde. Sie können daher nicht Least Privilege haben.

Bei Agile weiß auch der Entwickler nicht, was die Anwendung am Ende tun soll / können muss.