Der Code von UNIXv4, dem ersten Betriebssystem mit einem Kernel in C, wurde wiederhergestellt. Eine Sicherheitsanfälligkeit in UNIXv4

Ende letzten Jahres wurde während der Aufräumarbeiten im Rechenzentrum der Universität von Utah ein Archivmagnetband mit dem Code des UNIXv4-Betriebssystems entdeckt, das 1973 für den PDP-11/45-Computer entwickelt wurde und als verloren galt. UNIXv4 setzte die Entwicklung des ein Jahr zuvor veröffentlichten UNIXv3-Betriebssystems fort, in dem erstmals die Programmiersprache C und unnamed pipes verwendet wurden. Ein wesentliches Merkmal von UNIXv4 war die Neuschreibung des Kernels von Assemblersprache auf C. Der Kernelcode von UNIXv4 wurde von Ken Thompson und die Treiber von Dennis Ritchie geschrieben.

Ende Dezember 2025 konnten die Mitarbeiter des Museums für Computerhistorie die benötigte Hardware finden und das auf dem Band gespeicherte Archiv extrahieren. Zum Digitalisieren des auf Band aufgezeichneten analogen Signals wurde das Tool readtape verwendet, und für das Dekodieren des Archivformats wurden Entwicklungen herangezogen, die im Rahmen der Wiederherstellung des Archivs mit der Emacs-Implementierung von James Gosling erstellt wurden.

Neben dem UNIXv4-Code wurden auf dem Band auch die Quelltexte eines der ersten Compiler für die Programmiersprache C und eines SNOBOL-Interpreters gefunden. Später wurde der Code von UNIXv4 aufbereitet und auf GitHub in einer Form veröffentlicht, die für die Kompilierung und Ausführung im PDP-11-Simulator geeignet ist. Der Code von UNIXv4 umfasst 61.000 Zeilen, von denen 27.000 in C, 33.000 in Assembler für PDP-11 und etwa 1.000 Headerdateien sind.

Der Code von UNIXv4, dem ersten Betriebssystem mit einem Kernel in C, wurde wiederhergestellt. Eine Sicherheitsanfälligkeit in UNIXv4

Einer der Sicherheitsexperten wies auf das Dienstprogramm „su“ hin, das mit UNIXv4 geliefert wurde. Dieses Dienstprogramm umfasste weniger als 50 Codezeilen, wurde mit dem Flag setuid-root installiert und erlaubte das Starten von /bin/sh mit Root-Rechten, wenn das richtige Passwort eingegeben wurde. Der Code enthielt eine Sicherheitsanfälligkeit, die zu einem Pufferüberlauf führte, da das eingegebene Benutzerpasswort ohne Größenprüfung in ein festes 100-Zeichen-Array kopiert wurde.

Das Problem wurde von dem 93-jährigen Douglas McIlroy kommentiert, der Teil des ursprünglichen Entwicklerteams von Unix bei Bell Labs war und Konzepte wie unbenannte Kanäle vorschlug sowie Programme wie echo, spell, diff, sort, join und tr entwickelte. Laut Douglas achtete bis zum Auftreten des Morris-Wurms im Jahr 1988 nur selten jemand auf Pufferüberläufe. Die Hinzufügung von Überprüfungen für die manuell eingegebenen Daten wurde als unnötiger Code angesehen, während ein Absturz bei Überläufen als unbeholfene Reaktion auf ungültige Eingaben wahrgenommen wurde. Im Laufe der Zeit wurden Überläufe, die bei der Verarbeitung automatisch generierter Zeichenfolgen auftraten, behoben, aber bei manuellen Eingaben wurde die Logik auf der Ebene „Wer braucht schon zu lange manuelle Eingaben?“ gesehen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4