Valve liet JavaScript-kwetsbaarheid 15 maanden lang in Dota 2 zitten

Valve heeft volgens securityonderzoekers van Avast een JavaScript-kwetsbaarheid 15 maanden lang ongepatcht laten zitten in de online game Dota 2, die de library gebruikt. In de tussentijd is het beveiligingsgat uitgebuit door een aanvaller, maar wel op kleine schaal.

Volgens een verhaal van Ars Technica, dat zich baseert op het onderzoeksrapport van Avast, gaat het om CVE-2021-38003. Deze heeft een severity score van 8,8 en kan gebruikt worden om een keten aan exploits uit te voeren, omdat JavaScript in dit geval niet sandboxed is. Deze kwetsbaarheid zit in de JavaScript Engine V8 en is door Google gepatcht in oktober 2021, maar Valve bracht pas in januari 2023 een update uit voor Dota 2 waarin dit verholpen werd. Het deed dat nadat Avast het bedrijf op de hoogte bracht van de situatie. De hacker was actief tot maart 2022.

De kwetsbaarheid werd uitgebuit in de vorm van customspelmodi voor de game. Een enkele user had vier spelmodi op zijn naam staan die de kwetsbaarheid in hun code exploiteerden. Opvallend is dat hij of zij dit eerst nog redelijk zuiver leek aan te pakken, met de naam 'test addon plz ignore' en een bestand genaamd 'evil.lua', wat niet erg onopvallend is. De overige drie spelmodi die de kwetsbaarheid benutten, heetten Overdog no annoying heroes, Custom Hero Brawl en Overthrow RTZ Edition X10 XP. Ook in de code was de exploit hier veel minder opvallend.

De onderzoekers vertellen aan Ars hoe de exploit uiteindelijk in zijn werk ging. Spelers startten de malafide spelmodus op en op de achtergrond werd contact gezocht met de command-and-controlserver die de vermoedelijke exploitcode voor de bovengenoemde CVE binnenhaalt, die het doelwit vervolgens uitvoert, met als resultaat de mogelijkheid tot shellcode execution bij het doelwit. Tegenover de onderzoekers liet Valve weten dat minder dan 200 spelers getroffen zijn door deze exploit.

De onderzoekers twijfelen een beetje, maar gaan er toch van uit dat de intenties van de hacker malafide waren. Ook al konden ze geen bewijs vinden van kwaadaardige payloads en werd in eerste instantie aangeraden om een spelmodus niet te downloaden, rekenen de onderzoeker het deze persoon aan dat hij of zij niet naar Valve is gegaan met een melding van de kwetsbaarheid. "Dat is over het algemeen wel zo aardig om te doen." Ook de progressie in het verhullen van de kwaadaardigheid is veelzeggend.

Ars vroeg Valve om commentaar voor dit verhaal. Vermoedelijk hebben ze daarbij ook gevraagd waarom het bedrijf zo lang heeft gewacht met deze patch introduceren. Valve heeft niet gereageerd.

Dota 2 exploit gamemodes CVE-2021-38003Dota 2 exploit gamemodes CVE-2021-38003

De eerste spelmodus (links), waar nog afgeraden wordt om hem te downloaden, en de meer subtiele modus (rechts) die wellicht slachtoffers heeft gemaakt. Bron: Avast

Door Mark Hendrikman

Redacteur

10-02-2023 • 15:18

53

Reacties (53)

53
49
23
2
0
14
Wijzig sortering
Valve staat ook niet bekkend om het snel updaten van hun Chromium-based applicaties, waaronder ook Steam valt dat een 2-3 jaar oude versie van Chromium gebruikt. In het verleden heeft Valve al eerder gedoe gehad omdat zij hun applicaties niet updaten en exploits ongepatched laten.
Valve staat ook niet bekkend om het snel updaten van hun Chromium-based applicaties, waaronder ook Steam valt dat een 2-3 jaar oude versie van Chromium gebruikt. In het verleden heeft Valve al eerder gedoe gehad omdat zij hun applicaties niet updaten en exploits ongepatched laten.
Klopt. Sailliant detail: de exacte major versie waar de Steam client op het moment op draait is v85 en deze heeft schijnbaar een actief exploiteerbare vulnerability die het bypassen van de same-origin policy toestaat. Maw als het een klein beetje tegen zit kan een malafide domein dat jij per ongeluk via de embedded Steam browser bezoekt daarmee bijv. je sessie cookies stelen.
Lekker dan.

Valve is al meer malen via bug reports verzocht die shit bij te werken; maar -- nada.
En zoals het artikel al zegt:
Valve heeft niet gereageerd.
Want dat doen ze traditiegetrouw nooit.
Een reactie uit Valve krijgen is zoiets als proberen een druppel water uit een diamant te persen.

[Reactie gewijzigd door R4gnax op 30 juli 2024 05:40]

Mocht je een Jira omgeving hebben ... je vindt bakken met JavaScript gaten (CVE's die al jaren bekend zijn), maar zelfs de CTO ziet er geen prioriteit in om het te fixen.
javascript-kwetsbaarheid
Inderdaad, erg belangrijk verschil voordat Java weer geassocieerd wordt met dit soort kwetsbaarheden.
Nog beter is om de hele taal (welke dan ook) in dit geval uit de titel te halen. JavaScript heeft namelijk diverse engines van verschillende eigenaren. Door te spreken over "JavaScript kwetsbaarheid" wordt de suggestie gewekt alsof er een kwetsbaarheid in JavaScript zat, wat incorrect is. Er zat een kwetsbaarheid in een JavaScript engine, genaamd V8 (van Google), en niet in de taal zelf. (Door het noemen van een taal, waar je onder programmeurs vaak scherpe voor- en tegenstanders van hebt, krijg je al snel vingerwijzende berichten en polarisatie. Als er "Java" ipv "JavaScript" had bestaan, dan waren de poppen al helemaal aan het dansen, maar gelukkig werd het hier al snel opgemerkt.) Nog beter is om gewoon alleen het eindproduct in de titel te melden waar het probleem echt in zat: namelijk Dota 2 en Valve, want ook V8 is niet direct relevant. Vele engines hebben immers kwetsbaarheden in het verleden gehad. Een engine zelf is daarmee het probleem niet direct. Het probleem is dat Valve het te lang er in heeft laten zitten. "Valve liet kwetsbaarheid 15 maanden lang in Dota 2 zitten" is daarmee naar mijn mening de meest zuivere titel.
The vulnerability, tracked as CVE-2021-38003, resided in the open source JavaScript engine from Google known as V8, which is incorporated into Dota 2.
edit:
De engine implementatie maakt het kwetsbaar voor javascript.

[Reactie gewijzigd door pookie79 op 30 juli 2024 05:40]

En specifiek in Google Chromium V8. Dat beantwoordt meteen waarom het bedrijf zo lang heeft gewacht. Mensen zijn slordig en zien dingen over het hoofd of onderschatten de impact.
Bijgewerkt. Dank!
Vergeet de titel niet!
Inmiddels ook gedaan. Merci.
Nu nog in de titel van het artikel.
Het treurige is dat het game-bedrijf geen uitleg geeft waarom ze het maanden ongepatched laten en daarmee niet alleen voor hun klanten een probleem veroorzaakt hebben maar ook zo lang lieten bestaan. Het bedrijf lijkt niet echt verlies te draaien, dan mag een behoorlijke updatebeleid wel verwacht worden. 15 maanden klinkt ver van redelijk.
Wat het artikel vergeet te melden is, wanneer heeft avast valve op de hoogte gebracht van de exploit? Was dat 1.5 jaar geleden? Ja, dan kun je stellen dat ze het ongepatched lieten, maar was dat pas geleden en hebben ze daar toen redelijk snel een patch voor uitgebracht dan is het een ander verhaal. Genoeg developers die totaal geen weet hebben van de patches die uitgeleverd worden voor de frameworks die ze gebruiken, tenzij ze misschien rechtstreeks middels een nieuwsbrief gestuurd worden.
Ik ben het met je eens dat er duidelijk mag zijn of en wanneer de onderzoekers van het ene bedrijf de ontwikkelaars van het andere bedrijf op de hoogte hebben gebracht, en of dat een verschil maakte.

Maar we hebben het hier niet over zomaar een beveiligingslek, het lek was al bekend dat het in de JavaScript Engine zat. Dan kun je als miljoenenbedrijf dat bestaat door developers je toch niet zo op de vlakte houden waarom ze het pas na 15 maanden eens met een update komen.
Alsof het uit maakt of het een miljoenen bedrijf is, de development afdeling is niet zo groot, en misschien hebben ze nooit geweten van de exploits in de javascript die hier de culprit zijn, zoals ik al zei, zoveel developers die helemaal niet op de hoogte zijn van alle exploits en patches van de frameworks die ze gebruiken.
Natuurlijk maakt het uit dat het een miljoenenbedrijf is dat winst maakt met software in de vorm van games. Ze zijn zelfs een van de grootste spelers op dat gebied in de markt. Het is hun basis van bestaan waarom ze klanten hebben en winst maken. Als het een klein bedrijfje zou zijn dat games en software ontwikkelen er een beetje bij deed met een of andere obscure library dat een onbekend probleem had dan had je een punt.
zoveel developers die helemaal niet op de hoogte zijn van alle exploits en patches van de frameworks die ze gebruiken
Ik dacht dat we collectief inmiddels toch wel zo ver waren dat argumenten van de orde "Wir haben es nicht gewusst" niet meer geaccepteerd werden?
We hebben het hier over een publieke CVE.
Als een bedrijf in de orde van grootte van Valve, het niet voor elkaar weet te krijgen om geautomatiseerde tooling te draaien die kennis geeft van bekende vulnerabilities binnen de dependencies van de software die ze uitgeven, dan is er in hun proces iets grondig; grondig mis.

[Reactie gewijzigd door R4gnax op 30 juli 2024 05:40]

Sorry hoor, maar publieke CVE's worden vaak alleen in de gaten gehouden voor wie het dagelijks werk is om CVE's in de gaten te houden, de meeste developers doen dat niet omdat, ondanks dat ze publiekelijk zijn, ze op veel verschillende plekken staan.
Sorry hoor, maar publieke CVE's worden vaak alleen in de gaten gehouden voor wie het dagelijks werk is om CVE's in de gaten te houden, de meeste developers doen dat niet omdat, ondanks dat ze publiekelijk zijn, ze op veel verschillende plekken staan.
Je hebt gespecialiseerde commerciële diensten hiervoor die dit bijhouden en waar je abonnementen af kunt nemen om via service APIs op de hoogte gehouden te worden van relevante CVEs voor geselecteerde producten. Je kunt e.e.a. nog verder automatiseren door dat soort APIs te integreren met tooling die automatisch codebases scant op dependencies en via deze APIs kijkt of er vulnerabilities bekend zijn.

Je gaat mij niet vertellen dat Valve het niet voor elkaar kan krijgen om dat opgezet te krijgen; of om de kosten te dragen voor zo'n abonnement.
Het treurige is dat het game-bedrijf geen uitleg geeft waarom ze het maanden ongepatched laten en daarmee niet alleen voor hun klanten een probleem veroorzaakt hebben maar ook zo lang lieten bestaan. Het bedrijf lijkt niet echt verlies te draaien, dan mag een behoorlijke updatebeleid wel verwacht worden. 15 maanden klinkt ver van redelijk.
De Steam client van Valve draait op een versie van Chromium die inmiddels 2.5 jaar oud is, waardoor er dus ook 2.5 jaar aan ontdekte en inmiddels gepatchte security vulnerabilities nog in rondhangen. 15 maanden klinkt dan nog a/d korte kant.
Java en Javascript zijn twee verschillende talen, beide voor verschillende doeleinden...
De relatie tussen Java en Javascript is dezelfde als die tussen ham en hamster.
Je kan het beide nuttigen?
De hamster kan ook ham nuttigen, als die niet vegetarisch is. Ik zie dat de ham niet andersom doen bij de hamster.
Bijna geen enkel dier is volledig vegetarisch.
Bekt lekker, hamsterham, ben benieuwd naar de smaak.
One is toy for small programs typically abused by inexperienced devs. The other is a scripting language.
:+
Vanwaar deze opmerking? Wordt er dan ergens iets anders beweerd?
Foutje in het artikel, maar die is inmiddels opgelost.
Dat valt me weer een beetje tegen van Valve. ik heb dat bedrijf best hoog zitten, maar dit zijn gewoon slordigheden waar best wat aandacht aan besteed mag worden. Beetje jammer.
ik heb dat bedrijf best hoog zitten
Daar was vroeger nog wel enigzins reden toe. Tegenwoordig niet meer.
"Good guy Valve" is al jaren dood. We zijn er alleen nog niet helemaal uit wat voor creatuur nu de dode, uitgeholde huid draagt.

Valve is met hoe verschrikkelijk laakbaar ze met security omgaan, nou juist één van de toonbeelden van een bedrijf waarvoor nieuwe cybersecurity wetgeving in de EU opgetuigd wordt. Als je niet wil; dan moet je maar met fikse boetes gedwongen worden om je software en infrastructuur op orde te hebben.

[Reactie gewijzigd door R4gnax op 30 juli 2024 05:40]

Yup.

Valve heeft eigenhandig lootboxes groot gemaakt en is er ook bijna volledig verantwoordelijk voor dat microtransacties dus normaal zijn geworden.

Valve heeft jarenlang schijt gehad aan Europese wetgeving en is al meermaals door o.a. Duitsland en Frankrijk stevig op de vingers getikt. (hoera EU, hier hebben we als NL ook baat mee gehad)

Het zal mij niets verbazen als Valve ook keihard hun invloed misbruikt om concurrentie buiten de markt te houden. Origin, Uplay, Battle.Net, Xbox, EPIC. Zelfs grootheden maken geen kans en ze staan ALLEMAAL negatief te boek bij de meeste gamers... huh?!? En dus ook nog doet aan machtsmisbruik van hun monopolie positie.

Buiten dat ze laks zijn met security. "If you let a person talk long enough, you’ll hear their true intentions."
Valve is verre van perfect, maar het laatste wat je van hen kan zeggen is dat ze misbruik maken hun dominante positie. Ze hebben gamers en devs stap voor stap voor zich gewonnen door constant nieuwe features toe te voegen aan Steam, waaronder game changers zoals self-publishing en game keys. Dit in tegenstelling tot hun "concurrenten", die voornamelijk exclusiviteit gebruiken terwijl ze niet eens de moeite doen om een beter alternatief te maken dan Steam.
Herinnert u zich de introductie van Steam nog? Dat logge rotprogramma dat met je Half Life mee geforceerd werd?

Valve heeft vooral features geintroduceerd om zowel spelers als ontwikkelaars aan zich te binden.

Ik haat het dat ik Rimworld op Steam heb moeten kopen, vanwege de Workshop. Bijna geen enkele mod voor Rimworld is buiten die workshop te vinden. Dus waarom de fuck zou iemand zo'n spel bij GOG kopen b.v.? Die super handige feature dat je vroeger nog workshop mods kon downloaden voor games die je niet in je library had, heeft Valve al jaren geleden keihard afgesloten.

Factorio host mods daarom zelf

Neuh, ze maken absoluut geen misbruik van hun positie /s |:(

Gabe heeft goed geleerd, embrace extend extinguish.

[Reactie gewijzigd door batjes op 30 juli 2024 05:40]

Natuurlijk heeft Valve die features ontworpen om gamers aan zich te binden. Geen enkel spelplatform is een liefdadigheidsinstelling. Naar mijn mening zijn unieke features de meest consument-vriendelijke manier om te concurreren.

Dat veel mods voor Workshop gemaakt worden, komt omdat Steam het enige platform is dat geïntegreerde modtools aanbiedt. Valve beperkt op geen enkele manier het gebruik van mods buiten workshop. Een optionele service machtsmisbruik noemen vind ik dan ook absurd.

Tenslotte daag ik je uit om één voorbeeld te geven waar Valve 'extinguish' heeft toegepast. Steam is méér open dan elk ander gaming ecosysteem. Vooral bij de Steam Deck valt dit op; je kan er gewoon andere storefronts en clients op installeren. Dit soort zaken spreekt jouw comment compleet tegen.
Leuk om mensen met features aan je te binden, maar ik benoemde dus al een voorbeeld van extinguish. Valve heeft enorme modding communities om zeep geholpen naar hun "open workshop" platform. Om vervolgens de deuren dicht te slaan voor iedereen die de games dus niet op Steam aanschaft.

Niet alleen hebben ze dus veel grote communities 'extinguished' for eigen gewin, elke concurrent staat daarmee al direct met 1-0 achter.

Steamdeck is kwestie van tijd ;)
Workshop is - net zoals de andere features die Valve aanbiedt - populair geworden omdat geen enkel ander bedrijf ooit de moeite gedaan heeft om iets soortgelijk of beters aan te bieden. Dat heeft in de verste verte niets met "embrace extend extinguish" te maken, noch heeft Valve hiermee communities om zeep geholpen. Integendeel, veel mods waren er mogelijk nooit geweest zonder de Steamwork API.

Begrijp me niet verkeerd, er zijn meer dan genoeg dingen waarvoor je Valve kan bekritiseren, inclusief datgene waar dit artikel over gaat. Maar beweren dat Valve anti-competitief is om ze Steam van unieke features voorzien is compleet absurd.

Als Valve de Steam Deck ooit effectief zou afsluiten voor 3rd party stores, dan praten we verder. Al zou dat in principe de Deck even "anti-competitief" maken dan handhelds of consoles van andere bedrijven.
Verrast me niet; de huidige Steam-client gebruikt Chrome 85, een versie die 2,5 jaar geleden uitkwam. Dit probleem was 1,5 jaar geleden gefixt in Chrome 95 en ondertussen zitten we al op 110.
Ik snap eigenlijk ook niet waarom Valve hun engine niet kan bijwerken, het is niet de eerste keer dat zoiets gebeurt. Dependency updaten kan toch gewoon maandelijks als je het niet vanaf het begin af aan uitstelt? Valve is nou juist in een positie om automatisch updates voor games te leveren, daar zijn ze in het begin zo groot mee geworden.
Ik snap eigenlijk ook niet waarom Valve hun engine niet kan bijwerken, het is niet de eerste keer dat zoiets gebeurt.
Het is niet een kwestie van niet kunnen; maar van niet willen. Het levert niets op. En het is minder leuk om aan te werken dan aan new and shiny features.

Het moet waarschijnlijk gewoon eens een keer stevig fout gaan, voordat ze hun les leren.
Het feit dat ze een half decennium een triviaal exploiteerbare privilege escalation vulnerability in de Steam client hadden zitten waarmee lokale gebruikersaccounts ongeacht eigen rechten Steam's infrastructuur konden inzetten om direct SYSTEM-rechten te verkrijgen, deed hen zelfs niets.

Officiële meldingen van dat probleem middels responsible disclosure ketsten ze gewoon af. Pas toen de laatste in een langere rij van security-researchers het er niet bij liet zitten en de exploit publiceerde - vond Valve het nodig om te proberen een patch er voor te maken. Want ja; dan moet je wel.
Het gaat niet eens om new and shiny features. Het kost geld. Waarom zou je als je het zelf nergens voor nodig hebt.

Valve heeft er een heel hard handje van om als er wat is, te doen alsof hun neus bloed totdat ze keihard op de vingers getikt worden. Mijn algemene indruk is dat de mentaliteit van Valve niet echt beter is dan die van EA of een Ubisoft.
In alle eerlijkheid: mijn indruk is dat Valve's mentaliteit erger is dan EA of Ubisoft. Puur omdat ze weten dat ze vanwege hun zogenaamd vlekkeloze reputatie, er mee weg kunnen komen.
Gabe haat zo op Microsoft, maar het is (op een manier) wel geinig dat hij praktisch dezelfde oude Microsoft taktieken gebruikt met Steam. Embrace, Extend, Extinguish.
Chromium is absoluut niet makkelijk te updaten, helemaal als je ook maar enige eigen aanpassingen gemaakt hebt om
wat voor reden dan ook - bijvoorbeeld voor de integratie in een eigen product - Google gooit regelmatig dingen helemaal om en compileren duurt minimaal 1 uur* op een 32-core workstation, als het niet je core-business is om een browser aan te bieden is het nagenoeg ondoenlijk om dit bij te houden en de infrastructuur op te zetten om dit ook maar enigszins behapbaar te maken.

Verder is het ook lastig om beveiligingspatches te backporten omdat Google informatie over de patches zelf (zoals tests en context zodat je je backport kunt valideren) gesloten houdt en aldus enkel toegankelijk zijn voor Google-medewerkers voor de eerste maand of zo.

*) dit was ooit sneller, maar de functionaliteit hiervoor ('Jumbo builds') was verwijderd, gerucht ging dat een manager bij Google iets 'verkeerd' deed waardoor de build een foutmelding gaf en deze aldus maar de hele functionaliteit liet verwijderen omdat Google deze zelf niet nodig heeft...

[Reactie gewijzigd door NTAuthority op 30 juli 2024 05:40]

*) dit was ooit sneller, maar de functionaliteit hiervoor ('Jumbo builds') was verwijderd, gerucht ging dat een manager bij Google iets 'verkeerd' deed...
Het blijkt nog steeds te bestaan, zie deze pagina. Maar misschien staat het default niet aan? Wel wonderlijk is dat er ook bij staat:
Mixed blessing
  • Slightly different compiler warnings will be active.
Verrast me niet; de huidige Steam-client gebruikt Chrome 85, een versie die 2,5 jaar geleden uitkwam. Dit probleem was 1,5 jaar geleden gefixt in Chrome 95 en ondertussen zitten we al op 110.
Maw de versie van Chromium waar Steam nu op draait heeft dus ook dit probleem met arbitrary code execution middels heap corruption. Oh joy!
Op zich niet zo verbazend. De standard Valve reactie op gerapporteerde issues, kwetsbaarheden en exploits in CS GO, is ze ook compleet negeren.

Pas als er te veel ruchtbaarheid aan gegeven wordt, geeft Valve stil toe dat er iets aan de hand is en kijken ze ernaar. Dat is meestal maar wanneer grote YouTube erover praten of het toch eindelijk op de CS GO subreddit kan blijven staan zonder preventief verwijderd te worden.
Het gaat om een JavaScript-kwetsbaarheid en niet om een Java-kwetsbaarheid. Een terechte opmerking als irrelevant beoordelen heeft geen zin en slaat helemaal nergens op.

Op dit item kan niet meer gereageerd worden.