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

Submitter: himlims_

Reacties (30)

30
30
15
1
0
14
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 23 juli 2024 22:43]

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 :)
.oisyn Moderator Devschuur® @Redneckerz3 april 2021 02:12
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.