I slutet av förra Äret, under stÀdningen av datacentret vid Utahs universitet, upptÀcktes en arkivmagnetband med koden för operativsystemet UNIXv4, som utvecklades 1973 för datorn PDP-11/45 och ansÄgs vara förlorad. UNIXv4 fortsatte utvecklingen av det operativsystemet UNIXv3, som slÀpptes Äret innan och som för första gÄngen anvÀnde programmeringssprÄket C och namnlösa kanaler. En sÀrskild funktion hos UNIXv4 var omskrivningen av kÀrnan frÄn assembler till sprÄket C. Koden för kÀrnan i UNIXv4 skrevs av Ken Thompson, och drivrutinerna av Dennis Ritchie.
I slutet av december 2025 lyckades personalen vid museet för datorhistorik hitta den nödvÀndiga utrustningen och extrahera arkivet som sparats pÄ bandet. För digitalisering av den analoga signalen som spelades in pÄ bandet anvÀndes verktyget readtape, och för dekodning av arkivformatet anvÀndes de resultat som skapades vid ÄterstÀllningen av arkivet med implementeringen av textredigeraren Emacs av James Gosling.
Förutom koden för UNIXv4 hittades Àven kÀllkoderna för en av de första kompilatorerna för sprÄket C och tolkaren för sprÄket SNOBOL pÄ bandet. Senare stÀdades koden för UNIXv4 upp och publicerades pÄ GitHub i en form som var lÀmplig för kompilering och körning i simulatorn PDP-11. Koden för UNIXv4 bestÄr av 61 000 rader, varav 27 000 Àr pÄ sprÄket C, 33 000 Àr pÄ assembler för PDP-11 och cirka 1 000 Àr headerfiler.

En av sÀkerhetsforskare uppmÀrksammade verktyget "su" som levererades med UNIXv4. Detta verktyg innehöll mindre Àn 50 rader kod, installerades med flaggan setuid-root och möjliggjorde att köra /bin/sh med rootbehörighet vid inmatning av rÀtt lösenord. Koden innehöll en sÄrbarhet som ledde till buffertöversvÀmning pÄ grund av kopiering av det anvÀndarinmatade lösenordet till en fast 100-tecken array utan storlekskontroll av de inmatade data.
Den upptÀckta problematiken kommenterades av 93-Ärige Douglas McIlroy, som var en del av det ursprungliga utvecklarteamet för Unix pÄ Bell Labs. Han föreslog konceptet för namnlösa kanaler och skapade verktyg som echo, spell, diff, sort, join och tr. Enligt Douglas var det fÄ som la mÀrke till buffertöverflöd innan Morris-ormen dök upp 1988. Att lÀgga till kontroller för storleken pÄ manuellt inmatade data sÄgs som att lÀgga till onödig kod, och en krasch vid överflöd togs emot som en klumpig form av respons pÄ ogiltig indata. Med tiden har överflöd som uppstÄr vid hantering av automatiskt genererade strÀngar blivit ÄtgÀrdade, men för manuell inmatning var logiken pÄ nivÄn 'vem skulle behöva mata in för lÄnga strÀngar manuellt'.
KĂ€lla: opennet.ru
