HardenedBSD: Ein Interview mit den Kernentwicklern

  

Wir freuen uns, Oliver Pinter und Shawn Webb, die Kernentwickler des HardenedBSD-Projekts, interviewen zu dürfen.

Das 2014 gegründete Projekt zielt darauf ab, ein sicherheitsoptimiertes FreeBSD zu schaffen, mit modernen Technologien wie Exploit-Abwehrmaßnahmen wie PAX und ASLR, führt aber auch eine Reihe neuer sysctls im System ein.

Fleximus: Bevor wir ins Detail gehen, stellt euch bitte kurz vor und gebt uns dann eine kurze Einführung in euer Projekt.

Oliver/Shawn:

Fleximus: Wann seid ihr zu FreeBSD gekommen und warum habt ihr euch entschieden, dieses Unterprojekt zu starten?

Shawn: Ich habe FreeBSD zum ersten Mal als Teenager kennengelernt. Eine Gruppe von Hackern der alten Schule hat mich damit vertraut gemacht. Seitdem bin ich davon begeistert. Oliver und ich haben HardenedBSD im April 2014 gegründet. Wir waren beide daran interessiert, ASLR für FreeBSD zu implementieren, und Oliver hatte bereits einen Patch parat. Wir haben HardenedBSD ins Leben gerufen, um unsere Arbeit an ASLR sowie an anderen Maßnahmen zur Exploit-Abwehr zu koordinieren. Seit der Gründung von HardenedBSD arbeiten wir daran, weitere Technologien zur Exploit-Abwehr bereitzustellen.

Oliver: Das erste Mal habe ich FreeBSD in der Version 6.1-STABLE ausprobiert, aber das Kompilieren des gesamten Systems dauerte viel zu lange (KDE3 und OpenOffice), also habe ich FreeBSD bis 2008 auf Eis gelegt, als ich einen neuen PC bekam. Dieser neue PC war leistungsstark genug, um das gesamte System in überschaubarer Zeit zu kompilieren; ein weiterer Grund für den Wechsel von Debian zu FreeBSD war eine unendliche Anzahl von Beschädigungen des XFS-Dateisystems. Ich habe viele Linux-Versionen ausprobiert – von 2.6.17 bis 2.6.32 –, aber keine funktionierte, also bin ich schließlich zu FreeBSD gewechselt.

Das HardenedBSD-Projekt entstand auf der Grundlage meiner Universitätsarbeit, die sich in erster Linie mit der Implementierung von Intel S.M.A.P. unter FreeBSD und in zweiter Linie mit ASLR befasste. Eines Tages bekam ich eine E-Mail von pipacs (einem Mitglied des PaXTeams), dass jemand anderes angefangen hatte, an der Absicherung von FreeBSD zu arbeiten, und er schickte mir einen Link zu Shawns Blogeintrag. Anfangs arbeiteten wir an verschiedenen Repos, bis ich die vielen Merge- und Cherry-Pick-Konflikte satt hatte und das HardenedBSD-Repo auf GitHub erstellte – das war im Frühjahr 2014.

Fleximus: Was ist das langfristige Ziel von HardenedBSD? Die Patches in den Upstream zu integrieren, sodass sie ein fester Bestandteil des FreeBSD-Systems werden, scheint ein großes Ziel zu sein. Wir haben gehört, dass dies mit FreeBSD 11 passieren könnte.

Shawn: Wir wollen der Welt mehr Sicherheit bieten. FreeBSD wird von einigen ziemlich großen Unternehmen und Communities intensiv genutzt. Bei Technologien zur Abwehr von Exploits hinkt FreeBSD dem Rest der Welt hinterher. Wir wollen diese Lücke schließen.

Wenn FreeBSD 11.0 veröffentlicht, werden wir innerhalb einer angemessenen Zeitspanne (wobei wir „angemessen“ als „wenn es fertig ist“ definieren) mit unserer ersten offiziellen Version nachziehen.

Letztendlich wollen wir anfangen, unsere eigenen Sicherheitsgeräte zu verkaufen. Wir haben bereits mit den Voruntersuchungen begonnen und haben etwas Leckeres im Ofen.

Wir fügen weitere Funktionen zur Absicherung auf Systemebene hinzu. Ich arbeite an der Absicherung von Systemaufrufen und sysctls. Oliver setzt seine Arbeit an Intel SMAP fort und stellt PaX NOEXEC fertig. Meine nächste große Aufgabe ist die Überarbeitung der Funktionsweise unseres SEGVGUARD, wobei wir uns enger an das Modell von grsec anlehnen. Oliver wird außerdem mit PaX UDEREF beginnen.

Wir haben ein neues Mitglied in unser Team aufgenommen. Er ist unter dem Namen „CTurt“ bekannt. Er konzentriert sich darauf, Schwachstellen zu finden und diese in FreeBSD auszunutzen sowie Patches bereitzustellen, um diese Schwachstellen zu beheben.

Fleximus: Gibt es wesentliche Unterschiede bei der ASLR- oder PAX-Implementierung im Vergleich zu Linux oder etwas anderem, das erwähnenswert ist?

Shawn: Wir haben uns an der PaX-Implementierung orientiert und sogar mit dem PaX-Team zusammengearbeitet, um sicherzustellen, dass unsere Implementierung korrekt ist.

Oliver: Wir haben uns größtenteils an die PaX-Dokumentation gehalten, aber derzeit fehlt uns noch ein wenig davon.

Fleximus: OpenBSD hat ASLR 2003 implementiert und die Implementierung 2008 abgeschlossen. Habt ihr euch den Quellcode angesehen, um eine Migration dieser Arbeit auf FreeBSD zu prüfen?

Shawn: Auch wenn OpenBSD unter der BSD-Lizenz steht, habe ich es vermieden, mir andere Implementierungen anzusehen, um Lizenzprobleme zu vermeiden. So bleibt mein Code mein Code. Ich muss mir keine Gedanken darüber machen, andere in die Copyright-Erklärung aufzunehmen und/oder deren Copyright überhaupt zu verwenden.

Fleximus: Wir haben gelesen, dass du Patches für FreeBSD-11 geschrieben und diese bereits zurück auf FreeBSD 10-STABLE portiert hast. Wie ist der aktuelle Stand des Projekts?

Shawn: Alle Arbeiten, die wir als stabil erachten, portieren wir zurück auf 10-STABLE. Wir pflegen Paket-Repos sowohl für 11-CURRENT/amd64 als auch für 10-STABLE/amd64.

Oliver: Zu Beginn des Projekts wurde der Code auf 10-STABLE entwickelt und nach 11-CURRENT portiert. Shawn hat 11-CURRENT verwendet und ich 10-STABLE, deshalb haben wir so viele Merge-Konflikte. In erster Linie konzentrieren wir uns bei neuen Entwicklungen auf 11-CURRENT, und wenn die jeweilige Funktion stabil genug ist, übernehmen wir sie per Cherry-Pick auch in 10-STABLE.

Fleximus: Eigentlich läuft gerade eine Umfrage, ob der „Linuxulator“ (Linux-Kompatibilitätsschicht) aus den Quelltexten entfernt werden soll oder nicht. Wie wir wissen: Je mehr Funktionen und je mehr Kompatibilitätscode vorhanden ist, desto größer ist auch die Angriffsfläche.

Shawn: Ich werde mich noch etwas eingehender mit diesem Thema beschäftigen. Es ist noch nicht entschieden, ob wir die Linux- Kompatibilitätsschicht entfernen werden. Wir müssen abwarten, bis sich die Commits zum Linuxulator eingependelt haben, und dann noch etwas daran arbeiten. So wie es derzeit aussieht, wurde COMPAT_FREEBSD32 aus unserem benutzerdefinierten Kernel (der HARDENEDBSD-amd64-Kernelkonfiguration) entfernt. COMPAT_FREEBSD32 wird benötigt, damit der Linuxulator funktioniert. Ihr müsst euren eigenen Kernel mit dieser Option kompilieren, damit der Linuxulator funktioniert.

Fleximus: Wir bedanken uns bei euch, Oliver und Shawn, für dieses Interview. Wir haben weitere Einblicke gewonnen und ein besseres Verständnis für das HardenedBSD-Projekt entwickelt und freuen uns umso mehr darauf, die Ergebnisse zu sehen und zu testen.

Wir ermutigen alle, die sich für das Projekt interessieren, mit Beiträgen, Ideen und Gedanken zu helfen. Das Projekt nimmt auch die üblichen Spenden entgegen, sogar Bitcoins.

Shawn: Danke für diese tolle Gelegenheit. Es macht uns Spaß, das zu tun, was wir lieben. Wir hoffen, diese Leidenschaft eines Tages als Vollzeitbeschäftigung nachhaltig gestalten zu können. Nur dank der Community sind wir dort, wo wir jetzt sind. Wir freuen uns darauf, etwas zurückzugeben.

Quellen:

Interview HardenedBSD BSD