Aan het einde van vorig jaar werd tijdens het opruimen in het datacenter van de Universiteit van Utah een archiefmagnetische tape ontdekt met de code van het besturingssysteem UNIXv4, dat in 1973 was ontwikkeld voor de PDP-11/45 computers en als verloren werd beschouwd. UNIXv4 bouwde voort op de een jaar eerder uitgegeven UNIXv3, waarin voor het eerst de programmeertaal C en onbenoembare kanalen werden gebruikt. Een kenmerk van UNIXv4 was de herschrijving van de kernel van assembler naar de programmeertaal C. De code van de UNIXv4-kernel werd geschreven door Ken Thompson, terwijl de stuurprogramma's door Dennis Ritchie werden gemaakt.
Eind december 2025 konden medewerkers van het museum voor de geschiedenis van computertechnologie de benodigde apparatuur vinden en de op de tape opgeslagen archieven extraheren. Voor de digitalisering van het analoge signaal dat op de tape was opgenomen, werd de readtape-toolkit gebruikt, en voor het decoderen van het archiefformaat werden ontwikkelingen gebruikt die waren gemaakt tijdens het herstel van het archief met de implementatie van de Emacs-editor door James Gosling.
Naast de code van UNIXv4 werden op de tape ook de bronteksten gevonden van een van de eerste compilers voor de programmeertaal C en een interpreter van de SNOBOL-taal. Later werd de code van UNIXv4 op orde gebracht en gepubliceerd op GitHub in een vorm die geschikt was voor compilatie en uitvoering in een PDP-11-simulator. De UNIXv4-code omvat 61.000 regels, waarvan 27.000 in de programmeertaal C, 33.000 in assembler voor PDP-11 en ongeveer duizend - headerbestanden.

Een van de beveiligingsonderzoekers merkte de utility 'su' op, die werd geleverd bij UNIXv4. Deze utility bevatte minder dan 50 regels code, werd geïnstalleerd met de setuid-root-vlag en maakte het mogelijk om /bin/sh met rootrechten te starten na invoer van het juiste wachtwoord. De code bevatte een kwetsbaarheid die leidde tot een buffer overflow door het kopiëren van het door de gebruiker ingevoerde wachtwoord in een vaste array van 100 tekens zonder de invoergrootte te controleren.
De 93-jarige Douglas McIlroy, een lid van het oorspronkelijke ontwikkelteam van Unix bij Bell Labs, dat het concept van ongeadresseerde kanalen voorstelde en nuttige programma's zoals echo, spell, diff, sort, join en tr ontwikkelde, heeft de geconstateerde problemen besproken. Volgens Douglas, vóór de uitbraak van de Morris-worm in 1988, lette vrijwel niemand op buffer-overflows. Het toevoegen van controles voor de grootte van handmatig ingevoerde gegevens werd gezien als overbodige code, en een crash bij een overflow werd beschouwd als een onhandige manier om te reageren op onjuiste invoer. In de loop der tijd zijn de overflows die optreden bij het verwerken van automatisch gegenereerde strings gepatcht, maar voor handmatige invoer was de logica van: 'wie heeft er behoefte aan het handmatig invoeren van te lange strings'.
Bron: opennet.ru
