Kwetsbaarheid in The Ultimate Doom maakt Snake spelen in game mogelijk

Via een bug in het save-systeem van computerspel The Ultimate Doom versie 1.9 is het mogelijk om willekeurige code binnen het spel uit te voeren. De ontwikkelaar die dit ontdekte liet het spel Snake draaien en wijst naar toekomstige mods die deze kwetsbaarheid kunnen uitbuiten.

Dankzij een bug in het save-systeem van The Ultimate Doom is ontwikkelaar Anatoly Shashkin erin geslaagd om een arbitrary code execution uit te voeren in dit spel uit 1995. Dat toonde de man op zijn Twitter-account. Hij deed dit door een exploit te schrijven waarbij hij een savegame uitvoert als PSPR action code pointer. Het hele proces hoe hij de kwetsbaarheid in The Ultimate Doom uitbuit staat te lezen op github, net als twee andere kwetsbaarheden die ingezet kunnen worden om het spel aan te kunnen passen.

Dankzij deze kwetsbaarheid is het volgens de ontwikkelaar mogelijk om verregaande Doom-mods in de toekomst mogelijk te maken. De arbitrary code execution werkt volgens Shashkin enkel in Ultimate Doom versie 1.9 en niet in Doom 2 of de meer recente Doom-spellen.

Door Jay Stout

Redacteur

02-04-2021 • 17:18

30 Linkedin

Submitter: himlims_

Reacties (30)

Wijzig sortering
DoomACE (Nu ACE Engine) is onder andere in het DoomWorld Wadazine besproken in een minireview/artikel van mijn kant van mods en tools die heden ten dage voor de klassieke Doom bestaan. Het Wadazine is een maandelijks semi-professioneel magazine waarin allerlei zaken uit de community worden belicht.

Het oorspronkelijke draadje over ACE Engine is hier.

Meer informatie over de ACE Engine vind je op de Wiki. Een kleine groep individuen, waaronder ikzelf, schrijven en documenteren de historie van het klassieke Doom bij en vullen deze aan waar nodig. Mijn interesse en expertise uit zich vooral in broncode, gameplay mods en trivia. Zie mijn pagina voor een lijst van pagina's waar ik aan heb gewerkt.

ACE Engine is een bijzonder werk: Het stelt gebruikers met de oorspronkelijke DOS programma om geheel nieuwe dingen mogelijk te maken, gebruik makend van een exploit met externe code. Het is dus een beetje ''valsspelen'', maar dat er indrukwekkende effecten mogelijk zijn bewijst het testlevel. Hierin worden effecten als mist getoond, nieuwe scripting mogelijkheden, dynamische belichting en meer. Zie onderstaande video voor een demonstratie van deze map:

https://www.youtube.com/watch?v=XzZfg7KkzAM

[Reactie gewijzigd door Redneckerz op 2 april 2021 21:28]

Dus... Zou dat betekenen dat je DOOM kunt injecteren in DOOM om zo DOOM in DOOM te kunnen spelen, net zoals met DOOM: Eternal kan als paasei? :9
Hm, wat je daarvoor nodig hebt zijn de routines waarmee je de view kan aanpassen en dan traploos, dus iets verbeterd. Dat moet dan door de engine om perspectief mogelijk te maken. Misschien een of andere constructie met jumps en een afzonderlijk gereserveerd blok geheugen. Je moet ook op de een of andere manier de besturing regelen. Misschiem met letter-toetsen maar dan werken de cheats niet meer goed. :P
Je zou in theorie een tweede Doom kunnen aanroepen, al zou Doom dan vooral als virtuele machine moeten optreden. In ACE Engine is de exploit vooral bedoeld om kleinere stukken code toe te voegen, zoals het eerder getoonde Snake, maar je kan ook nieuwe effecten in de levels programmeren.
Als dat mogelijk is zou je dan in die Doom dan weer een nieuwe Doom kunnen draaien? En in die Doom weer een Doom? En dan weer een doom? En dan....... Dan is het Doom: Ethernal op een andere manier ;).
Ik zie mogelijkheiden:

- Mods die het makkelijker maken als je te vaak dood gaat en steeds hetzelfe save game gaat laden.
- Mods die een iron man modus hebben.
- Mods die jou juist straffen als je te veel saved en bij de volgende load game jou gaat straffen.
- Complex Doom nog krankzinniger door zelfs jouw load games te randomizen.
Complex Doom bestaat al als mod :)
Daar refereer ik ook naar.
Het kan nog gekker:

- Via slechts een gehackt save-file het gedrag van monsters veranderen.
- Middels een linguortal portalen maken in Vanilla Doom (Dit is eigenlijk niet mogelijk met de originele engine)
- Middels een Mikoportal rudimentaire scripting mogelijkheden introduceren in Vanilla (DOS) Doom.

Iron Man wordt wel gebruikt in de multiplayer community. Je overige suggesties zijn al mogelijk middels het gebruik van bronpoorten, zoals GZDoom :)
Ik zie mogelijkheiden:

- Mods die het makkelijker maken als je te vaak dood gaat en steeds hetzelfe save game gaat laden.
Doom edge of tomorrow version.
Maar waarom zou je mods voor Ultimate Doom maken als de broncode openbaar is en er al heel veel sourceports zijn waarmee zo’n beetje alles kan?

Wel knap dat hij het voor elkaar heeft gekregen natuurlijk.
Onder de noemer ''Omdat het kan'' en het laat zien dat de oorspronkelijke engine nog heel wat in zijn Mars heeft. Doom 2 v1.9 is eigenlijk de standaard versie van de game, omdat deze versie hetzelfde is als Doom 1 1.9. Sommige exploits welke KGSWS heeft gevonden zijn dan ook voor die versie.

Met ACE Engine kan je zelfs dingen implementeren die in een bronpoort niet zo snel kunnen, omdat je gebruik maakt van de limitaties die DOS kent. Bron poorten kunnen heel veel, maar sommige zaken blijven Vanilla only. Zoals de eerder genoemde Mikoportals elders :)
en het laat zien dat de oorspronkelijke engine nog heel wat in zijn Mars heeft.
Hoezo dan :?. Dit is gewoon een bug die arbitraire code laat uitvoeren in een savegame. Als dat mogelijk is, kun je gewoon alles doen en dat heeft verder weinig met de engine te maken. Ik mag ook hopen dat iemand dit even patcht, want het betekent dat je dus niet meer veilig savegames kunt uitwisselen.
Ik had het eigenlijk over Mikoportals maar dat staat gewoon brak geschreven.
Ik mag ook hopen dat iemand dit even patcht, want het betekent dat je dus niet meer veilig savegames kunt uitwisselen.
Niet echt nodig. Het werkt namelijk alleen in DOS/DOSBOX.

Overigens is het concept (Ace) niet nieuw.
Dan zijn we bijna bij: Bam, I got Doom to run in Doom!
https://www.smbc-comics.com/comic/2011-02-17

Het draait namelijk vrijwel overal op tegenwoordig, dus waarom niet ook 'virtueel'. Wel vind ik het kudo's waard dat er zoveel mensen zijn die blijven leren en blijven proberen, en daarmee ook dit soort zaken vinden in 'oude' code.
Doomception haha. Benieuwd tot hoevaak je dit kunt doen. Zal er vast wel ene proberen :P
Serieuze bug zeg. Ben benieuwd of ze dit gaan patchen. :/ ;)

Weten we trouwens zeker dat dit geen achtergebleven 1 april-grap is?
Bestaat sinds 28 september 2020, dus dat lijkt mij sterk. ;)

Tegenwoordig ondersteunt iD Doom en Doom 2 nog steeds, ditmaal via de Unity port. :)
Ben ik de enige die dacht dat het ging om het spelen van het personage Solid Snake, na het te snel lezen van de titel? :P
Nooit een Nokia gehad? 🤣
Nou hopelijk komt er nog wel een update van de ontwikkelaar want dit kan niet natuurlijk een beveiligingslek daardoor lopen veel mensen gevaar.
Spel uit 1995. Ik denk dat het risico wel meevalt :P
Sarcasme is niet helemaal jouw ding denk ik he?
Mierneukerij kennen ze wel in iederegeval.
Mierenneukerij.
Bedankt voor de bevestiging :+
"..... toekomstige mods die deze kwetsbaarheid kunnen uitbuiten."

Wow, dat klinkt onheilspellend, ik ga voor de zekerheid maar alvast al mijn wachtwoorden wijzigen. LOL

Op dit item kan niet meer gereageerd worden.

Kies score Let op: Beoordeel reacties objectief. De kwaliteit van de argumentatie is leidend voor de beoordeling van een reactie, niet of een mening overeenkomt met die van jou.

Een uitgebreider overzicht van de werking van het moderatiesysteem vind je in de Moderatie FAQ.

Rapporteer misbruik van moderaties in Frontpagemoderatie.




Google Pixel 7 Sony WH-1000XM5 Apple iPhone 14 Samsung Galaxy Watch5, 44mm Sonic Frontiers Samsung Galaxy Z Fold4 Insta360 X3 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2022 Hosting door True

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee