mrx86
Active Member
„Funktional, kostenlos und standardmäßig sicher“ bleibt OpenBSD ein entscheidender, aber weitgehend unbeachteter Akteur im Open-Source-Bereich.
Diese Reihe zielt darauf ab, die charakteristischen Sicherheitsfunktionen und Entwicklungspraktiken des Projekts hervorzuheben – messerscharfer Fokus auf korrekten und sicheren Code in Verbindung mit fortlaufender Codeprüfung – sowie die Rolle des Projekts als Quelle für Innovationen bei Sicherheitspraktiken und als „Upstream“-Quelle für zahlreiche weit verbreitete Komponenten wie OpenSSH, PF, LibreSSL und andere. Dieser Beitrag konzentriert sich auf den Verlauf, Teil 2 konzentriert sich auf die Verwendung und Benutzererfahrung, und Teil 3 befasst sich mit diesem Paketfilter.
Wenn Sie nur ein paar Minuten Zeit haben, sind die Highlights:
OpenBSD gibt es seit mehr als 25 Jahren (seit Oktober 1995).
OpenBSD ist proaktiv sicher mit nur zwei entfernten Löchern in der Standardinstallation in all den Jahren.
OpenBSD leistete Pionierarbeit bei der Verwendung starker Kryptografie, dem ersten freien System, das mit IPSec ausgeliefert wurde (wobei es sich dabei in US-Exportbestimmungen verhedderte).
OpenBSD leistete Pionierarbeit und ist immer noch führend im Code-Audit, indem es ähnliche Fehler baumweit behebt, wenn sie gefunden werden.
OpenBSD hat standardmäßig alle Sicherheitsverbesserungen aktiviert, die schwer, ja unmöglich zu deaktivieren sind.
OpenBSD ist quelloffene, freie Software und das Projekt fördert aktiv die unabhängige Überprüfung der Codequalität und -sicherheit.
Heute wird OpenBSD in vielen netzwerkzentrierten Rollen verwendet, obwohl es ein Allzweck-Betriebssystem ist, wenn auch mit besonderem Schwerpunkt auf Sicherheit.
OpenBSD hat ein hochkarätiges Qualitätsimage, das auf tatsächlicher Codequalität und bewährter Leistung im realen Gebrauch basiert.
OpenBSD ist der Upstream (Ursprung) für mehrere weit verbreitete Software wie OpenSSH, OpenBGPD, PF, OpenSMTPd, LibreSSL, iked, mandoc und einige andere. Eine vollständige Liste finden Sie auf der OpenBSD-Innovationsseite auf der OpenBSD-Website.
OpenBSD ist seit 1995 mit allgemein zugänglichem Code über anonymes CVS (das erste seiner Art) 'in der Öffentlichkeit aufgewachsen' (transparenter Prozess, Entwicklungsdiskussionen auf öffentlicher tech@-Mailingliste).
Entwickler täten gut daran, qualitativ hochwertigen (hauptsächlich) C-Source zu studieren und wie das Projekt einen sechsmonatigen Release-Zyklus wie ein Uhrwerk durchläuft (mit nur wenigen bemerkenswerten Ausnahmen).
Hinweis: Wenn Sie eher ein Dia-Mensch sind, wird es Sie freuen zu hören, dass die Präsentation, die ich dafür verwendet habe, tatsächlich verfügbar ist, wenn sie als Vortrag gehalten wird, mit den wichtigsten Highlights und wenig bis gar keinen Geek-Witzen.
Nun, da das aus dem Weg geräumt ist, lasst uns dorthin zurückkehren, wo alles begann.
OpenBSD: Wie alles begann
Die Geschichte von OpenBSD ist zu einem großen Teil die Geschichte des Internets selbst. Sie haben vielleicht von der Zeit in den 1980er Jahren gehört, als Unternehmen wie IBM und Digital sich in der Unternehmens-IT-Sphäre herumtrieben und das US-Verteidigungsministerium für Experimente in verteilten, geräteunabhängigen Netzwerken bezahlte.
Das war der Zeitpunkt, an dem eine lose organisierte Gruppe von Hackern, die einigermaßen von Forschern auf dem Berkeley-Campus der University of California koordiniert wurde, mit BSD Unix an Bedeutung gewann, das durch eine Reihe glücklicher Zufälle zur Heimat der Referenzimplementierung der TCP/IP-Internetprotokolle wurde.
In den frühen 1990er Jahren hatte die Kommerzialisierung des Internets begonnen, und die Berkeley Computer Science Research Group (CSRG), die die Bemühungen koordiniert hatte, sollte aufgelöst werden. Neben dem Internet selbst war das wichtigste greifbare Produkt aus Berkeley die Berkeley Software Distribution (BSD), die oft auf Bändern per Post verteilt wurde, aber auch im Internet verfügbar war und als Sammlung von Software für AT&Ts Unix begonnen hatte, aber hatte im Laufe der Jahre zu einem vollwertigen Unix-Betriebssystem ausgebaut.
Mehrere verschiedene Gruppen wollten, dass BSD weitergeht, auch wenn die CSRG dies nicht tat, und mehrere Dinge passierten ziemlich schnell hintereinander:
Lynne und Bill Jolitz portierten BSD auf Intel x86 (eigentlich 80386sx) und schufen 386BSD. Dies wurde in einer Reihe von Artikeln im Journal von Dr. Dobbs dokumentiert .
Als nächstes begannen Hacker, Verbesserungen am 386BSD-Code als „Patchkits“ zu teilen, und zwei separate Gruppen führten die Arbeit weiter, um ihre Projekte zu formen: Die FreeBSD- Gruppe würde daran arbeiten, das bestmögliche BSD auf Hardware im PC-Stil zu bringen, während die NetBSD Der Ehrgeiz der Gruppe war es, BSD auf jeder Hardware zum Laufen zu bringen, die sie in die Finger bekommen konnten [siehe Bearbeiten am Ende des Artikels).
Eine Gruppe ehemaliger CSRG-Mitarbeiter gründete BSDi Inc. und vermarktete ihr Produkt BSD/386 unter anderem mit einer Kontakttelefonnummer „1-800-ITS-UNIX“. Die Aktivitäten eines tatsächlichen Unternehmens wiederum lösten eine Klage der Eigentümer der UNIX-Marke wegen Code-Copyrights aus.
Der Rechtsstreit wurde schließlich beigelegt – nur sechs Dateien von mehreren Tausend im Baum waren „potenziell belastet“ und mussten ersetzt werden, sodass sowohl NetBSD als auch FreeBSD in Eile waren, den Code zu ersetzen. Wenn ich mich richtig erinnere, war dies zumindest teilweise ziemlich zentral für das Subsystem des virtuellen Speichers.
OpenBSD entstand ein paar Jahre später aus einem Fork der NetBSD-Codebasis im Oktober 1995 mit der ersten Veröffentlichung im Juli 1996.
Von Anfang an hat das OpenBSD-Projekt ein Code-Audit des gesamten Baums durchgeführt, das sich auf die Korrektheit und Sicherheit des Codes konzentriert. Wir wollen sicheren, korrekten Code, der ein nutzbares System mit vernünftigen Standardeinstellungen und vollständiger und lesbarer Dokumentation darstellt. Und wir möchten, dass dieser Code unter einer kostenlosen Lizenz verfügbar ist und der Welt zur Verfügung steht, sobald er der Versionskontrolle des Projekts übergeben wird.
Eine der frühen Errungenschaften des OpenBSD-Projekts war anonymes CVS, das es jedem im Internet ermöglicht, den Code mit Änderungen nahezu in Echtzeit zu erhalten. Dies war ein großer Bruch mit der üblichen Praxis der meisten Projekte der damaligen Zeit, die normalerweise relativ isoliert auf privaten Mailinglisten arbeiteten und in quasi zufälligen Abständen irgendwo eine Veröffentlichung als Tarball auf einem FTP-Server herausgaben.
Du bist bereits ein OpenBSD-Benutzer!
An dieser Stelle ist es wahrscheinlich nützlich zu zeigen, dass Sie, selbst wenn Sie es nicht wissen, im Moment eher Code mit einem OpenBSD-Ursprung verwenden als nicht. Ihr Apple-Produkt, sei es ein iPad, iPhone oder Mac, Ihr Android-Gerät, Ihr Cisco-Router, Solaris, Linux oder ein anderes Unix oder sogar Ihr Microsoft-Produkt enthält einige oder viele von OpenBSD stammende Codes. Wir werden später einige Details dazu zurückerstatten.
OpenBSD: Code-Audit und Sicherheitsentwicklung
Die Code-Audit-Aktivität läuft ungefähr so ab:
Lesen Sie den Code, verstehen Sie, was er tut.
Suchen Sie nach unsicheren Verhaltensweisen, gehen Sie von einer feindlichen Umgebung aus.
Wenn Sie einen Fehler finden und beheben, suchen Sie an anderer Stelle im Baum nach ähnlichem Code und beheben Sie ihn überall.
Sie werden erstaunt sein, wie sehr unterschiedliche Programmierer gleich denken und die gleichen Fehler machen. Waschen, spülen und wiederholen.
Das mag etwas unaufregend klingen, aber eine sorgfältige Untersuchung der Leistung des Codes in realen Situationen führte im Laufe der Jahre zu mehreren Innovationen, mit einer starken Neigung zur proaktiven Sicherheit, die es Fehlern erschwert, Schaden anzurichten:
W^X — Speicher kann beschreibbar sein XOR ausführbar.
Address Space Randomization (ASLR), sodass die Sprungziele und Lücken für jede Ausführung variieren.
Lücken mit zufälliger Größe wurden in den Stapel eingefügt, wodurch wiederum Rückgaben mit fester Größe aufgefangen wurden.
Unlesbare, nicht beschreibbare Schutzseiten am Ende von malloc()ed Chunks, um Überläufe abzufangen.
Privilegientrennung – Daemons führen den Großteil ihres Codes als nicht privilegierter Benutzer aus, höchstwahrscheinlich in einem Shell-losen Chroot, verbunden mit Privilegienentzug, was bedeutet, dass Daemons Privilegien so schnell wie möglich fallen lassen.
Der pledge(2)-Systemaufruf zum Deklarieren eines Profils, um das Programmverhalten nur auf bestimmte Operationen und Ressourcen zu beschränken.
Der Systemaufruf unveil(2) beschränkt den Zugriff auf das Dateisystem nur auf bestimmte Pfade und Berechtigungen.
Eine ziemlich für den Benutzer sichtbare Änderung kam, als OpenBSD 6.2 den randomisierten Link für die Kernel-Adresse oder KARL einführte, der dafür sorgt, dass der Kernel bei jedem Booten mit einem neuen, zufälligen Layout neu verknüpft wird. Noch einmal, die Einführung von Zufälligkeit, wo vorher keine war, wird als eine Möglichkeit gesehen, mögliche Exploits zu mindern, die auf dem Laden von Code an vorhersehbaren Adressen basieren.
Alle diese Features wurden in den OpenBSD-Quellbaum integriert, und da die Entwickler ermahnt wurden, sich an die Regel zu halten, "wo es möglich ist, Schaden zu erkennen, scheitere hart", wird schlecht geschriebene Software unter OpenBSD viel häufiger abstürzen als anderswo. Das allein sollte die Plattform für Entwickler attraktiv machen. Ihren Code einer feindlichen Umgebung auszusetzen und zu sehen, wie er funktioniert oder versagt, kann sehr unterhaltsam und aufschlussreich sein.
Benutzbar, tragbar und sicher
Um das Bild zu vervollständigen, ist es nützlich zu bedenken, dass OpenBSD auf insgesamt 14 Plattformen läuft. Alle Plattformen sind selbst gehostet. Cross-Compiling wird nur in der frühen Phase der Portierung auf eine neue Plattform eingesetzt.
Und natürlich haben Benutzer und Entwickler neben der reinen Wartung des vorhandenen Codes zur Ausführung auf verschiedenen Plattformen reale Bedürfnisse, die durch die Entwicklung neuer Software, die Erweiterung der Funktionen bestehender Programme, das Hinzufügen neuer Funktionen oder sogar das Ersetzen von Programmen oder ganz erfüllt werden Subsysteme.
Sicherheit ist ein facettenreiches Thema. Schon früh zeichnete sich OpenBSD als das System aus, das echte Kryptographie im Basissystem enthielt, insofern, als der Export von OpenBSD-Quellcode aus den USA unter den damals definierten Munitionsexportbeschränkungen technisch illegal war.
Zu unserem Glück wurde das Projekt immer von Kanada aus vom unbestrittenen Projektleiter Theo de Raadt koordiniert. Es gibt anekdotische Beweise dafür, dass in den USA ansässige Entwickler für Hackathons mit sauberer Ausrüstung über die Grenze marschierten, um OpenBSD zu installieren, während sie in Kanada waren, und zu hacken – das heißt, am System zu arbeiten – und das Ergebnis dann legal mit zurückbringen würden.
Eine frühe Anwendung von Krypto in OpenBSD war, als 1997 ein vollständiger IPSEC-Stack in das System aufgenommen wurde. OpenBSD war das erste freie System, das IPSec standardmäßig in seine Basisinstallation einschloss.
In einem Paradebeispiel für Hacker-Humor der damaligen Zeit warb ein T-Shirt mit einem der frühen Auftritte von Puffy, dem Kugelfisch, der das Maskottchen des Projekts werden sollte, für den Blowfish- Passwort-Hashing-Algorithmus. Dies bleibt der Standard auf OpenBSD, sowohl mit der Bildunterschrift 'So long and thanks for all the passwords' direkt unter Puffy auf der Vorderseite, zusammen mit dem vollständigen Quellcode der Blowfish-Funktion auf der Rückseite.
Bild, das Blowfish zeigt - das Symbol für OpenBSD.
Abbildung 1 – Hacker-Humor vom Feinsten.
Die Erwartung war, dass es illegal sein würde, das T-Shirt aus den USA wieder auszuführen.
Neben der Beachtung von Sicherheit und Korrektheit des Codes ist ein weiteres wichtiges Merkmal von OpenBSD die Beachtung der intellektuellen Integrität und das Bestehen auf einer klar formulierten und eindeutigen Lizenz zur Nutzung und Änderung von Code und Dokumentation, die Teil des Systems sind.
Das bringt uns dazu, warum OpenBSD besser für Benutzer und Entwickler ist. Darüber spreche ich in Teil 2.
Peter NM Hansteen ist ein Puffyist, Dämonenbeschwörer und Pinguin-Wrangler.
Adaptiert vom ursprünglichen Beitrag, der auf BSDLY erschien .
Bearbeiten 06.11.2021
Die ursprüngliche Aussage in dem Artikel, dass die beiden Gruppen (NetBSD und FreeBSD) in den frühen Tagen nur vage voneinander wussten, wurde von mindestens einem Teilnehmer der Patchkit-Ära, Tom Ivar Helbekkmo, bestritten, der schrieb, um zu sagen:
„Das stimmt nicht ganz. Als Bill Jolitz keine Patches von der Internet-Community in 386bsd 0.1 und dann wieder nicht in 0.2 einfügte, ergriff Chris Demetriou die Initiative, das Projekt zu forken und unser NetBSD zu nennen.“
„Es zeigte sich jedoch schnell, dass es divergierende Ziele für die Weiterentwicklung gab. Dies führte zur Gründung von FreeBSD. Wir hatten also eine Gemeinschaft, die sich einvernehmlich in zwei getrennte Gruppen aufteilte.“
Meiner eigenen Erfahrung nach scheinen sich diejenigen, die in der Post-Patchkit-Ära beider Projekte hinzugekommen sind, diesen Aspekt der Anfangszeit jedoch häufig nicht bewusst zu sein.
Diese Reihe zielt darauf ab, die charakteristischen Sicherheitsfunktionen und Entwicklungspraktiken des Projekts hervorzuheben – messerscharfer Fokus auf korrekten und sicheren Code in Verbindung mit fortlaufender Codeprüfung – sowie die Rolle des Projekts als Quelle für Innovationen bei Sicherheitspraktiken und als „Upstream“-Quelle für zahlreiche weit verbreitete Komponenten wie OpenSSH, PF, LibreSSL und andere. Dieser Beitrag konzentriert sich auf den Verlauf, Teil 2 konzentriert sich auf die Verwendung und Benutzererfahrung, und Teil 3 befasst sich mit diesem Paketfilter.
Wenn Sie nur ein paar Minuten Zeit haben, sind die Highlights:
OpenBSD gibt es seit mehr als 25 Jahren (seit Oktober 1995).
OpenBSD ist proaktiv sicher mit nur zwei entfernten Löchern in der Standardinstallation in all den Jahren.
OpenBSD leistete Pionierarbeit bei der Verwendung starker Kryptografie, dem ersten freien System, das mit IPSec ausgeliefert wurde (wobei es sich dabei in US-Exportbestimmungen verhedderte).
OpenBSD leistete Pionierarbeit und ist immer noch führend im Code-Audit, indem es ähnliche Fehler baumweit behebt, wenn sie gefunden werden.
OpenBSD hat standardmäßig alle Sicherheitsverbesserungen aktiviert, die schwer, ja unmöglich zu deaktivieren sind.
OpenBSD ist quelloffene, freie Software und das Projekt fördert aktiv die unabhängige Überprüfung der Codequalität und -sicherheit.
Heute wird OpenBSD in vielen netzwerkzentrierten Rollen verwendet, obwohl es ein Allzweck-Betriebssystem ist, wenn auch mit besonderem Schwerpunkt auf Sicherheit.
OpenBSD hat ein hochkarätiges Qualitätsimage, das auf tatsächlicher Codequalität und bewährter Leistung im realen Gebrauch basiert.
OpenBSD ist der Upstream (Ursprung) für mehrere weit verbreitete Software wie OpenSSH, OpenBGPD, PF, OpenSMTPd, LibreSSL, iked, mandoc und einige andere. Eine vollständige Liste finden Sie auf der OpenBSD-Innovationsseite auf der OpenBSD-Website.
OpenBSD ist seit 1995 mit allgemein zugänglichem Code über anonymes CVS (das erste seiner Art) 'in der Öffentlichkeit aufgewachsen' (transparenter Prozess, Entwicklungsdiskussionen auf öffentlicher tech@-Mailingliste).
Entwickler täten gut daran, qualitativ hochwertigen (hauptsächlich) C-Source zu studieren und wie das Projekt einen sechsmonatigen Release-Zyklus wie ein Uhrwerk durchläuft (mit nur wenigen bemerkenswerten Ausnahmen).
Hinweis: Wenn Sie eher ein Dia-Mensch sind, wird es Sie freuen zu hören, dass die Präsentation, die ich dafür verwendet habe, tatsächlich verfügbar ist, wenn sie als Vortrag gehalten wird, mit den wichtigsten Highlights und wenig bis gar keinen Geek-Witzen.
Nun, da das aus dem Weg geräumt ist, lasst uns dorthin zurückkehren, wo alles begann.
OpenBSD: Wie alles begann
Die Geschichte von OpenBSD ist zu einem großen Teil die Geschichte des Internets selbst. Sie haben vielleicht von der Zeit in den 1980er Jahren gehört, als Unternehmen wie IBM und Digital sich in der Unternehmens-IT-Sphäre herumtrieben und das US-Verteidigungsministerium für Experimente in verteilten, geräteunabhängigen Netzwerken bezahlte.
Das war der Zeitpunkt, an dem eine lose organisierte Gruppe von Hackern, die einigermaßen von Forschern auf dem Berkeley-Campus der University of California koordiniert wurde, mit BSD Unix an Bedeutung gewann, das durch eine Reihe glücklicher Zufälle zur Heimat der Referenzimplementierung der TCP/IP-Internetprotokolle wurde.
In den frühen 1990er Jahren hatte die Kommerzialisierung des Internets begonnen, und die Berkeley Computer Science Research Group (CSRG), die die Bemühungen koordiniert hatte, sollte aufgelöst werden. Neben dem Internet selbst war das wichtigste greifbare Produkt aus Berkeley die Berkeley Software Distribution (BSD), die oft auf Bändern per Post verteilt wurde, aber auch im Internet verfügbar war und als Sammlung von Software für AT&Ts Unix begonnen hatte, aber hatte im Laufe der Jahre zu einem vollwertigen Unix-Betriebssystem ausgebaut.
Mehrere verschiedene Gruppen wollten, dass BSD weitergeht, auch wenn die CSRG dies nicht tat, und mehrere Dinge passierten ziemlich schnell hintereinander:
Lynne und Bill Jolitz portierten BSD auf Intel x86 (eigentlich 80386sx) und schufen 386BSD. Dies wurde in einer Reihe von Artikeln im Journal von Dr. Dobbs dokumentiert .
Als nächstes begannen Hacker, Verbesserungen am 386BSD-Code als „Patchkits“ zu teilen, und zwei separate Gruppen führten die Arbeit weiter, um ihre Projekte zu formen: Die FreeBSD- Gruppe würde daran arbeiten, das bestmögliche BSD auf Hardware im PC-Stil zu bringen, während die NetBSD Der Ehrgeiz der Gruppe war es, BSD auf jeder Hardware zum Laufen zu bringen, die sie in die Finger bekommen konnten [siehe Bearbeiten am Ende des Artikels).
Eine Gruppe ehemaliger CSRG-Mitarbeiter gründete BSDi Inc. und vermarktete ihr Produkt BSD/386 unter anderem mit einer Kontakttelefonnummer „1-800-ITS-UNIX“. Die Aktivitäten eines tatsächlichen Unternehmens wiederum lösten eine Klage der Eigentümer der UNIX-Marke wegen Code-Copyrights aus.
Der Rechtsstreit wurde schließlich beigelegt – nur sechs Dateien von mehreren Tausend im Baum waren „potenziell belastet“ und mussten ersetzt werden, sodass sowohl NetBSD als auch FreeBSD in Eile waren, den Code zu ersetzen. Wenn ich mich richtig erinnere, war dies zumindest teilweise ziemlich zentral für das Subsystem des virtuellen Speichers.
OpenBSD entstand ein paar Jahre später aus einem Fork der NetBSD-Codebasis im Oktober 1995 mit der ersten Veröffentlichung im Juli 1996.
Von Anfang an hat das OpenBSD-Projekt ein Code-Audit des gesamten Baums durchgeführt, das sich auf die Korrektheit und Sicherheit des Codes konzentriert. Wir wollen sicheren, korrekten Code, der ein nutzbares System mit vernünftigen Standardeinstellungen und vollständiger und lesbarer Dokumentation darstellt. Und wir möchten, dass dieser Code unter einer kostenlosen Lizenz verfügbar ist und der Welt zur Verfügung steht, sobald er der Versionskontrolle des Projekts übergeben wird.
Eine der frühen Errungenschaften des OpenBSD-Projekts war anonymes CVS, das es jedem im Internet ermöglicht, den Code mit Änderungen nahezu in Echtzeit zu erhalten. Dies war ein großer Bruch mit der üblichen Praxis der meisten Projekte der damaligen Zeit, die normalerweise relativ isoliert auf privaten Mailinglisten arbeiteten und in quasi zufälligen Abständen irgendwo eine Veröffentlichung als Tarball auf einem FTP-Server herausgaben.
Du bist bereits ein OpenBSD-Benutzer!
An dieser Stelle ist es wahrscheinlich nützlich zu zeigen, dass Sie, selbst wenn Sie es nicht wissen, im Moment eher Code mit einem OpenBSD-Ursprung verwenden als nicht. Ihr Apple-Produkt, sei es ein iPad, iPhone oder Mac, Ihr Android-Gerät, Ihr Cisco-Router, Solaris, Linux oder ein anderes Unix oder sogar Ihr Microsoft-Produkt enthält einige oder viele von OpenBSD stammende Codes. Wir werden später einige Details dazu zurückerstatten.
OpenBSD: Code-Audit und Sicherheitsentwicklung
Die Code-Audit-Aktivität läuft ungefähr so ab:
Lesen Sie den Code, verstehen Sie, was er tut.
Suchen Sie nach unsicheren Verhaltensweisen, gehen Sie von einer feindlichen Umgebung aus.
Wenn Sie einen Fehler finden und beheben, suchen Sie an anderer Stelle im Baum nach ähnlichem Code und beheben Sie ihn überall.
Sie werden erstaunt sein, wie sehr unterschiedliche Programmierer gleich denken und die gleichen Fehler machen. Waschen, spülen und wiederholen.
Das mag etwas unaufregend klingen, aber eine sorgfältige Untersuchung der Leistung des Codes in realen Situationen führte im Laufe der Jahre zu mehreren Innovationen, mit einer starken Neigung zur proaktiven Sicherheit, die es Fehlern erschwert, Schaden anzurichten:
W^X — Speicher kann beschreibbar sein XOR ausführbar.
Address Space Randomization (ASLR), sodass die Sprungziele und Lücken für jede Ausführung variieren.
Lücken mit zufälliger Größe wurden in den Stapel eingefügt, wodurch wiederum Rückgaben mit fester Größe aufgefangen wurden.
Unlesbare, nicht beschreibbare Schutzseiten am Ende von malloc()ed Chunks, um Überläufe abzufangen.
Privilegientrennung – Daemons führen den Großteil ihres Codes als nicht privilegierter Benutzer aus, höchstwahrscheinlich in einem Shell-losen Chroot, verbunden mit Privilegienentzug, was bedeutet, dass Daemons Privilegien so schnell wie möglich fallen lassen.
Der pledge(2)-Systemaufruf zum Deklarieren eines Profils, um das Programmverhalten nur auf bestimmte Operationen und Ressourcen zu beschränken.
Der Systemaufruf unveil(2) beschränkt den Zugriff auf das Dateisystem nur auf bestimmte Pfade und Berechtigungen.
Eine ziemlich für den Benutzer sichtbare Änderung kam, als OpenBSD 6.2 den randomisierten Link für die Kernel-Adresse oder KARL einführte, der dafür sorgt, dass der Kernel bei jedem Booten mit einem neuen, zufälligen Layout neu verknüpft wird. Noch einmal, die Einführung von Zufälligkeit, wo vorher keine war, wird als eine Möglichkeit gesehen, mögliche Exploits zu mindern, die auf dem Laden von Code an vorhersehbaren Adressen basieren.
Alle diese Features wurden in den OpenBSD-Quellbaum integriert, und da die Entwickler ermahnt wurden, sich an die Regel zu halten, "wo es möglich ist, Schaden zu erkennen, scheitere hart", wird schlecht geschriebene Software unter OpenBSD viel häufiger abstürzen als anderswo. Das allein sollte die Plattform für Entwickler attraktiv machen. Ihren Code einer feindlichen Umgebung auszusetzen und zu sehen, wie er funktioniert oder versagt, kann sehr unterhaltsam und aufschlussreich sein.
Benutzbar, tragbar und sicher
Um das Bild zu vervollständigen, ist es nützlich zu bedenken, dass OpenBSD auf insgesamt 14 Plattformen läuft. Alle Plattformen sind selbst gehostet. Cross-Compiling wird nur in der frühen Phase der Portierung auf eine neue Plattform eingesetzt.
Und natürlich haben Benutzer und Entwickler neben der reinen Wartung des vorhandenen Codes zur Ausführung auf verschiedenen Plattformen reale Bedürfnisse, die durch die Entwicklung neuer Software, die Erweiterung der Funktionen bestehender Programme, das Hinzufügen neuer Funktionen oder sogar das Ersetzen von Programmen oder ganz erfüllt werden Subsysteme.
Sicherheit ist ein facettenreiches Thema. Schon früh zeichnete sich OpenBSD als das System aus, das echte Kryptographie im Basissystem enthielt, insofern, als der Export von OpenBSD-Quellcode aus den USA unter den damals definierten Munitionsexportbeschränkungen technisch illegal war.
Zu unserem Glück wurde das Projekt immer von Kanada aus vom unbestrittenen Projektleiter Theo de Raadt koordiniert. Es gibt anekdotische Beweise dafür, dass in den USA ansässige Entwickler für Hackathons mit sauberer Ausrüstung über die Grenze marschierten, um OpenBSD zu installieren, während sie in Kanada waren, und zu hacken – das heißt, am System zu arbeiten – und das Ergebnis dann legal mit zurückbringen würden.
Eine frühe Anwendung von Krypto in OpenBSD war, als 1997 ein vollständiger IPSEC-Stack in das System aufgenommen wurde. OpenBSD war das erste freie System, das IPSec standardmäßig in seine Basisinstallation einschloss.
In einem Paradebeispiel für Hacker-Humor der damaligen Zeit warb ein T-Shirt mit einem der frühen Auftritte von Puffy, dem Kugelfisch, der das Maskottchen des Projekts werden sollte, für den Blowfish- Passwort-Hashing-Algorithmus. Dies bleibt der Standard auf OpenBSD, sowohl mit der Bildunterschrift 'So long and thanks for all the passwords' direkt unter Puffy auf der Vorderseite, zusammen mit dem vollständigen Quellcode der Blowfish-Funktion auf der Rückseite.
Bild, das Blowfish zeigt - das Symbol für OpenBSD.
Abbildung 1 – Hacker-Humor vom Feinsten.
Die Erwartung war, dass es illegal sein würde, das T-Shirt aus den USA wieder auszuführen.
Neben der Beachtung von Sicherheit und Korrektheit des Codes ist ein weiteres wichtiges Merkmal von OpenBSD die Beachtung der intellektuellen Integrität und das Bestehen auf einer klar formulierten und eindeutigen Lizenz zur Nutzung und Änderung von Code und Dokumentation, die Teil des Systems sind.
Das bringt uns dazu, warum OpenBSD besser für Benutzer und Entwickler ist. Darüber spreche ich in Teil 2.
Peter NM Hansteen ist ein Puffyist, Dämonenbeschwörer und Pinguin-Wrangler.
Adaptiert vom ursprünglichen Beitrag, der auf BSDLY erschien .
Bearbeiten 06.11.2021
Die ursprüngliche Aussage in dem Artikel, dass die beiden Gruppen (NetBSD und FreeBSD) in den frühen Tagen nur vage voneinander wussten, wurde von mindestens einem Teilnehmer der Patchkit-Ära, Tom Ivar Helbekkmo, bestritten, der schrieb, um zu sagen:
„Das stimmt nicht ganz. Als Bill Jolitz keine Patches von der Internet-Community in 386bsd 0.1 und dann wieder nicht in 0.2 einfügte, ergriff Chris Demetriou die Initiative, das Projekt zu forken und unser NetBSD zu nennen.“
„Es zeigte sich jedoch schnell, dass es divergierende Ziele für die Weiterentwicklung gab. Dies führte zur Gründung von FreeBSD. Wir hatten also eine Gemeinschaft, die sich einvernehmlich in zwei getrennte Gruppen aufteilte.“
Meiner eigenen Erfahrung nach scheinen sich diejenigen, die in der Post-Patchkit-Ära beider Projekte hinzugekommen sind, diesen Aspekt der Anfangszeit jedoch häufig nicht bewusst zu sein.