OpenBSD 7.9: Mythos-Bug gefixt, mehr Partitionen und Sicherheit

vor 1 Stunde 1

Mit OpenBSD 7.9 ist das kompromisslos auf Sicherheit ausgerichtete Open-Source-Betriebssystem nun bei seiner 60. Veröffentlichung angekommen. Da OpenBSD-Gründer und sein Team halbjährlich eine aktuelle Version freigeben, bedeutet das trotz der aktuellen Mythos-Panik: „Only two remote holes in the default install“, also nur zwei von außen ausnutzbare Sicherheitslücken in 30 Jahren bei einer Standard-Installation.

Auf der AMD64-Plattform wurde der AMD Power Management Controller amdpmc(4) erweitert und kann nun die System Management Unit (SMU) nutzen, um eine noch geringere Stromaufnahme für den Suspend-Mode zu erreichen. Spezielle Fixes gab es für AMD Zen/Zen+, für Hänger auf dem ThinkPad X13 gen 6 sowie für einen Bug auf Maschinen mit mehr als 512 GByte RAM – eine Speichermenge, die für OpenBSD-Maschinen sowieso eher ungewöhnlich ist.

Der Kernel kann nun besser mit CPUs umgehen, deren Kerne mit unterschiedlichen Taktfrequenzen laufen. Über sysctl(4) und die Variable hw.blockcpu kann der Scheduler im Kernel über die Buchstaben SPEL (SMT, Performance, Efficient, Lethargic) entsprechend eingestellt werden. Der Standard ist SL, die Funktion gibt es zunächst nur für AMD64 und ARM64. Die maximale Anzahl der unterstützten Kerne bei AMD64-CPUs wurde auf 255 erhöht.

Der Direct Rendering Manager drm(4) und die passenden Grafiktreiber wurden auf den Stand von Linux 6.18.22 aktualisiert. Der wegen extrem kleiner Latenzen beliebte Audio/MIDI-Daemon sndiod(8) wurde zusammen mit libsndio weiter optimiert. OpenBSD 7.9 hat mehr als ein Dutzend neuer Hardware-Treiber erhalten, bei vielen Treibern wurden Fehler bereinigt. Im Bereich WLAN gibt es endlich grundlegenden Support für 802.11ax (WiFi 6) sowie viele Verbesserungen für iwx(4), den Treiber für Intel AX200/AX201/AX210/AX211-Chips. Veb(4), das Virtual Ethernet Bridge-Gerät, kann in OpenBSD 7.9 mit Hilfe von PVID (Port VLAN IDentifier) auch mit VLANs umgehen.

Wie ernst man das Thema Sicherheit bei OpenBSD sieht, mag eine Änderung für den root-Benutzer zeigen: Der Berkeley Packet Filter bpf(4) stellt über /dev/bpf eine protokollunabhängige Schnittstelle bereit, um für Mitschnitte oder Filter einen Zugriff auf sämtliche Netzwerkpakete zu erlauben. Nach dem Öffnen von /dev/bpf muss ein Descriptor an das entsprechende Netzwerk-Interface gebunden werden, über den auch mehrere Tools auf die Daten zugreifen können. Mit BIOCLOCK kann verhindert werden, dass dieser Deskriptor im Nachhinein verändert wird. Bislang konnte root diese Sperre umgehen, mit OpenBSD 7.9 ist das selbst für root nicht mehr möglich. Auch pledge(2) zur Einschränkung von Systemzugriffen und unveil(2) zum Einschränken von Zugriffen auf das Dateisystem wurden im Detail verbessert.

David Gwynne hat seit drei Jahren an Source- und State-Limiters für den OpenBSD Paket Filter pf(4) gearbeitet. OpenBSD 7.9 hat diese Neuerung übernommen. Firewall-Setups können so sehr präzise die maximal verwendbaren Ressourcen festlegen. Vor allem berücksichtigt Gwynnes Erweiterung auch, dass beim erneuten Laden des Regelwerks einige Limits bisher wieder zurückgesetzt wurden – was im Falle eines aktiven Angriffs ja nicht erwünscht ist. Auch wenn pf(4) eine Regel intern in mehrere Regeln aufsplittet werden die Limits entsprechend verteilt. OpenBSD-Admins werden die neuen Möglichkeiten für pf(4) vermutlich schnell übernehmen und lieben lernen.

OpenBSD 7.9 will mit „Delayed Hibernation“ verhindern, dass ein System im Suspend-Modus am Ende der Akku-Laufzeit hart ausgeschaltet wird und mögliche Datenverluste erzeugt. OpenBSD benutzt mit FFS2 (Fast File System 2) ein schlichtes Dateisystem, das nicht immer wie beispielsweise ZFS von plötzlichen Stromausfällen unbeeindruckt ist. „Delayed Hibernation“ weckt das System nach einer frei definierbaren Zeit aus dem Suspend-Modus auf und wechselt anschließend sofort in den Hibernation-Modus. Die Einstellung erfolgt in Sekunden via sysctl machdep.hibernatedelay.

OpenBSD 7.9 erweitert ferner seine historisch gewachsene disklabel(8)-Architektur, damit moderne Systeme flexibler partitioniert werden können, ohne das traditionelle OpenBSD-Layout aufzugeben. Dazu wurde die interne Partitionskodierung von 4 auf 6 Bit erweitert, was maximal 64 statt zuvor 16 Partitionen entspricht. Das Limit auf 52 Partitionen ergibt sich aus dem Mangel an Buchstaben im Alphabet: OpenBSD verwendet einen Buchstaben pro Partition, und mit a-z plus A-Z gibt es eben nur 52 Möglichkeiten. Mit OpenBSD 7.9 wird zunächst das interne Fundament für den Umstieg gelegt, erst in späteren OpenBSD-Versionen wird es die dafür notwendigen Werkzeuge geben.

Die Vorgängerversion OpenBSD 7.8 hat große Fortschritte für die ARM-Architektur gebracht, vor allem für Raspberry Pi-SBCs und Apple-Hardware. OpenBSD 7.9 ermöglicht durch den ice(4)-Treiber, die Nutzung von Intel PCIe-Ethernet-Chips wie dem E810 oder dem E823 der 800er-Serie mit Geschwindigkeiten von 1 Gb/s, 10 Gb/s, 25 Gb/s, 50 Gb/s oder 100 Gb/s. Da Intel es den OpenBSD-Entwicklern nicht erlaubt, die Firmware zu deren Bedingungen auf den Installationsmedien auszuliefern, laufen die Intel-Chips zunächst ohne Hardware-Offloading. Die aktuelle Firmware (ice-ddp) wird jedoch auf dem laufenden System separat durch fw_update(8) heruntergeladen und installiert. So können OpenBSD-Maschinen nach erfolgter Installation den vollen Funktionsumfang der Intel-Chips nutzen.

Neu in OpenBSD 7.9 ist die Unterstützung der Rockchip-SoCs RK3576 und des leistungsfähigeren RK3588. Beide werden nicht in Smartphones, sondern eher auf SBCs (Single Board Computer), in Smartpanels und industriellen HMIs (Human-Machine Interfaces), Robotik, AI-Vision und ähnlichem eingesetzt. Die neue Unterstützung für den Genesys Logic GL9755 SDHC-Controller kommt unter anderem Apple Laptops zugute.

Bei den RISC-V-basierten Systemen gab es in OpenBSD 7.9 vor allem viel Neues für den SpacemiT K1 SoC, der von der 2021 gegründeten chinesischen Chip-Schmiede SpacemiT primär für einfache KI-Anwendungen wie CV (Computer Vision) und NLP (Natural Language Processing) entwickelt wurde. Die RISC-V-CPU mit acht Kernen und bis zu 2 TOPS KI-Leistung (aber keinem spezialisierten KI-Coprozessor) wird sogar in dem „MUSE Book RISC-V Laptop“ verbaut – inklusive von außen zugänglichem UART/GPIO-Port.

Wie bei ARM gibt es den ice(4)-Treiber nun auch für SPARC64, ebenso wie Fixes für SPARC64-FPUs und Anpassungen an die sun4u. PowerPC, Alpha und MIPS64 erhielten ebenfalls kleine Bugfixes. Die luna88k-Portierung wurde auf den GCC 4 umgestellt, außerdem haben die Entwickler dort PIE (Position Independent Executables) standardmäßig aktiviert.

Anfang April kündigte Anthropic sein „Claude Mythos Preview“ und „Project Glasswing“ mit einer langen Liste an Exploits an, die ihre KI gefunden hat. Schlagzeilen lieferte vor allem der „27-year-old OpenBSD bug“, denn wenn eine KI für Rechenzeit im Wert von 20.000 US-Dollar mal eben eine Sicherheitslücke im Quellcode des sichersten Betriebssystems findet, ist das natürlich zunächst bemerkenswert. Die OpenBSD-Entwickler haben den Exploit zwei Wochen vor der Veröffentlichung durch drei Zeilen Code bereits in OpenBSD 7.8 gefixt. Wer mit dem OpenBSD-Tool syspatch(8) die Sicherheitspatches automatisch herunterladen, prüfen und installieren lässt, war am 25. März bereits gegen diesen Exploit gewappnet (Patch #025: RELIABILITY FIX: March 25, 2026).

War der Bug wirklich so dramatisch wie dargestellt? Beim Exploit geht es um RFC2018 „Selectively ACKnowledge“ (SACK) bei TCP-Verbindungen. Bei TCP-Verbindungen teilt der Empfänger dem Sender mit, welche Nummer (Sequence ID) das letzte korrekt empfangene Paket hatte. Schickt der Sender tausend Pakete, der Empfänger bestätigt aber nur bis Paket 200, schickt der Sender (ohne SACK) nochmal alle Pakete von 201 bis 1000. Mit SACK kann der Empfänger auch „Lücken“ melden, also beispielsweise Pakete 201 bis 220 fehlen. Nun muss der Sender nur noch die paar wirklich fehlenden Pakete erneut schicken, eine deutliche Effizienzsteigerung.

Das Problem bei OpenBSD war vereinfacht ausgedrückt: Der OpenBSD-Code in tcp_input.c prüfte zwar das Ende dieser „Lücke“ auf Plausibilität, nicht aber deren Anfang. Das gleichzeitige Löschen einer „Lücke“ zusammen mit dem Erzeugen einer neuen „Lücke“, deren Start mindestens 2^31 Byte entfernt liegt, führt mangels vorheriger Überprüfung zu einem Integer-Überlauf und einem Kernel, der auf einen NULL-Pointer schreiben will – was ihn zum Absturz und OpenBSD damit zum Neustart zwingt (das erinnert ein wenig an den „Ping of Death“ aus den 90ern).

Dieser DoS ist in der Praxis vermutlich niemals aufgetaucht, und auch Pen- oder Fuzzy-Tests müssten dazu eine TCP-„Lücke“ kreieren, bei dem die Start-ID des SACK-Blocks 2.147.483.648 Pakete von der realen „Lücke“ entfernt ist. Eine genauere technische Analyse mit Code-Beispielen gibt es auf GitHub.

Nichtsdestotrotz ist es ein beeindruckender Bug, und er wurde vom OpenBSD-Team zwei Wochen vor der Veröffentlichung gefixt. Man muss Anthropic letztlich wohl danken, dass es zurzeit die Open-Source-Betriebssysteme und -Tools mit gewaltigen Schritten selbst von perfidesten Fehlern befreit.

Zwei der wohl wichtigsten Projekte für die Sicherheit im Internet, von denen auch andere Betriebssysteme profitieren, sind LibreSSL und OpenSSH. Die Liste der Verbesserungen auf LibreSSL 4.3.0 und OpenSSH 10.3 ist wieder sehr lang. Neu bei LibreSSL 4.3.0 ist die Unterstützung für die Handhabung von Schlüsseln in MLKEM768_X25519 für TLSv1.3 und das startssl-Protokoll „sieve“. OpenSSH 10.3 unterstützt nun auch ed25519-Signaturen über libcrypto.

OpenBSD steht unter der freien MIT-Lizenz und ist als Open-Source-Software im Quelltext verfügbar. OpenBSD 7.9 verwendet als Compiler LLVM/Clang 19.1.7, die Versionen 20.1.8 und 21.1.8 können zusätzlich installiert werden. Neben GCC 4.2.1 ist GCC 15.2.0 optional installierbar. OpenBSD verwendet Xenocara basierend auf X.Org 7.7 samt Xserver 21.1.21, bietet aber auch Wayland an und läuft ansatzweise bereits mit XLibre. Neben dem OpenBSD-eigenen cwm(1) Calm Window Manager kann man über die Paketverwaltung auch Desktop-Umgebungen wie MATE 1.28, Xfce 4.20, GNOME 49 oder KDE Plasma 6.6.4 installieren. Chromium 147, Firefox 150.0 und ESR 140.10.0, Thunderbird 140.10.0 und LibreOffice 26.3.3.3 runden den Desktop ab. Die OpenBSD-Projekte LibreSSL und OpenSSH haben die Versionen 4.3.0 und 10.3 erreicht. Insgesamt listet die Paketverwaltung 12883 (OpenBSD 7.8: 12651) Pakete für die amd64-Plattform auf.

Installationsmedien und -anleitungen für vierzehn Hardwareplattformen stehen auf der Projektseite zum Download bereit. Dort findet man auch die Release-Informationen zu OpenBSD 7.9 mit einer detaillierten Übersicht aller Änderungen.

(axk)

Gesamten Artikel lesen