Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2021-38297-Go-wasm-Replication | Kitploit
Strumenti/GitHubGitHub/paras98/cve-2021-38297-go-wasm-replication
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebCTFPaper e RicercaApprendimento e FormazioneBinary ExploitationLab e Pratica

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
GitHubparas98/cve-2021-38297-go-wasm-replication

CVE-2021-38297-Go-wasm-Replication

Vedi Repository
2 anni faNon ancora revisionato

🚨 Sfruttare CVE-2021-38297: Un Viaggio nel Buffer Overflow di GO Wasm 🚨

🌐 Panoramica della Vulnerabilità 🌐

WebAssembly (WASM) 🌍, un formato di istruzioni binarie all'avanguardia, consente l'esecuzione fluida di linguaggi ad alto livello come C, C++, Rust e GO nei browser web moderni. Tuttavia, la scoperta di CVE-2021-38297 🚩 ha rivelato un difetto critico nel processo di compilazione e caricamento di GO per i binari WASM compilati con GO. Questa vulnerabilità, individuata nel loader JavaScript WASM (wasm_exec.js) fornito da GO, consentiva l'inclusione senza restrizioni di dati nell'argomento argv. Poiché argv è memorizzato nella memoria lineare di WASM, attori malintenzionati potevano potenzialmente sfruttare questo comportamento per sovrascrivere la memoria lineare del programma WASM compilato con GO con un input argv di dimensioni eccessive, portando a risultati imprevedibili e potenzialmente pericolosi. Questa vulnerabilità rappresentava una preoccupazione significativa nelle versioni di GO precedenti alla 1.17.2. In sintesi:

  1. Il front-end renderizza ogni post e i relativi commenti.
  2. Durante il rendering, il modulo GO WASM viene caricato, elaborando i commenti tramite la variabile argv e i post all'indirizzo di memoria 0x5000.
  3. Funzioni come toLeetSpeak e processSharedVar vengono utilizzate rispettivamente per il contenuto dei commenti e dei post.

💻 Applicazione Vulnerabile: Vuln-Twitter 💻

Nella nostra prova di concetto, presentiamo "Vuln-Twitter", una piattaforma di social media simulata che consente contenuti generati dagli utenti tramite post e commenti. Utilizzando un server web Node.js e SQLite per l'archiviazione dei dati, il front-end di Vuln-Twitter sfrutta JavaScript semplice insieme a un modulo GO WASM chiamato wordprocessor.wasm per il rendering dinamico dei contenuti. Questo modulo, in particolare, include metodi come toLeetSpeak, che trasformano gli input degli utenti in "LeetSpeak" stilizzato per un'esperienza utente coinvolgente. Interfaccia di Vuln twitter

Sfruttamento del Buffer Overflow

La nostra esplorazione rivela un punto critico di sfruttamento durante la fase di rendering dei contenuti, in cui ogni commento viene trasformato dal modulo GO WASM. Un commento appositamente creato e di dimensioni eccessive può innescare la vulnerabilità, portando a un buffer overflow che manipola il contenuto del post originale, dimostrando un classico vettore di attacco XSS persistente (Stored XSS). Questa vulnerabilità non solo sottolinea il potenziale di manipolazione dannosa dei dati, ma evidenzia anche le implicazioni più ampie delle pratiche di programmazione sicura nel contesto dello sviluppo web e delle applicazioni WASM. Fare riferimento alla sezione di codice che fa lo stesso:

Logica di rendering

Diagramma della memoria lineare WASM durante il rendering di un commento:

Memoria della logica di rendering Flusso di sfruttamento

Riproduzione dell'Exploit

Per gli appassionati e i ricercatori interessati a esplorare ulteriormente questa vulnerabilità, forniamo passaggi dettagliati per riprodurre l'ambiente di sfruttamento utilizzando una specifica versione vulnerabile di GO. Questo approccio pratico facilita una comprensione più profonda dei meccanismi della vulnerabilità e delle potenziali strategie di mitigazione. Nota: per riprodurre questo scenario, devi installare localmente la versione di go go1.17.1, che è la versione vulnerabile utilizzata in questo contesto. Puoi fare riferimento alla documentazione ufficiale di go per istruzioni su come installare versioni specifiche di go.

Ora proviamo a riprodurre lo scenario sopra descritto:

  1. Per configurare l'intera applicazione, clona prima il progetto: git clone [email protected]:gkrishnan724/CVE-2021-38297.git && cd vuln-twitter
  2. Esegui npm install per installare tutte le dipendenze
  3. Esegui npm run resetDB, che inizializzerà il database con alcuni post e commenti.
  4. Esegui npm run dev, che avvierà il server locale; apri localhost:3000 in un browser e dovresti vedere una pagina di login.

Ora accediamo con un account malintenzionato usando le credenziali username: I_CANT_HACK, password: hacker; dopo l'accesso, dovresti vedere il feed con alcuni post.

Questo post sembra piuttosto interessante:

Amazon: ready 4 black friday? https://www.amazon.com/blackfriday

E se, usando la tecnica precedente, riuscissimo a sovrascrivere il post di Amazon.com per farlo puntare a un link malintenzionato?

Fai riferimento al file exploit.txt: contiene il commento riempito con padding di "A" in modo da sovrascrivere tutto fino all'indirizzo 0x5000; alla fine puoi vedere il testo ready for black friday? https://evil.com/blackfriday. Se copiamo questo testo e lo inseriamo come commento al post precedente, dovremmo essere in grado di sovrascrivere il post originale con il testo sopra.

Provateci voi stessi e vedete :) Exploit

🛠️ Patch e Mitigazione 🛠️

Riconoscendo la gravità di questa vulnerabilità, delineiamo anche una strategia completa di patching, utilizzando una versione aggiornata e sicura di GO per mitigare il rischio. Questa sezione funge da guida per sviluppatori e amministratori di sistema per rafforzare le loro applicazioni contro tali vulnerabilità, sottolineando l'importanza di aggiornamenti software regolari e di pratiche di sicurezza vigili.

In questa applicazione ho fornito anche uno script di patch che utilizza una versione più recente di go:

  1. Esegui il target npm run patchServer

Questo dovrebbe ricompilare il file go con la nuova versione e avviare il server con la versione patchata.

Dovresti notare che il post non viene più sovrascritto e, osservando la console, vediamo invece un errore Argument length too long. Patch

💡 Conclusione e Riflessioni 💡

Il nostro viaggio attraverso lo sfruttamento e la mitigazione di CVE-2021-38297 offre preziosi spunti sulle sfide e le opportunità presentate dall'integrazione di linguaggi di programmazione ad alto livello negli ambienti web tramite WASM. Ci spinge a un esame critico delle pratiche di sicurezza nello sviluppo software, sollecitando un approccio proattivo alla gestione delle vulnerabilità e l'adozione di standard di codifica sicuri. In base alla nostra comprensione, riteniamo che il layout della memoria lineare di GO sia quello mostrato di seguito:

Layout memoria GO

🎓 Presentazione e Contributo Accademico 🎓

In qualità di studenti della Carnegie Mellon University, la nostra indagine su CVE-2021-38297 contribuisce al più ampio discorso accademico e professionale sulla cybersecurity, offrendo un caso di studio pratico sulle implicazioni delle tecnologie emergenti per la sicurezza del software. I nostri materiali di presentazione, disponibili per la consultazione, chiariscono ulteriormente i nostri risultati e le nostre metodologie, invitando al dialogo e alla collaborazione all'interno della comunità della cybersecurity.

🌟 Crediti e Contributi 🌟

Questo progetto è una testimonianza di ricerca collaborativa e indagine accademica, guidato da un team dedicato di studenti e ricercatori:

  • Paras Saxena (@paras98)
  • Gopala Krishnan (@gkrishnan724)
  • Zhejia Yang (@zildjianpoi)
  • Shubham Kulkarni (@shubhamkulkarni97)
  • Anisha Nilakantan

Spiegazione Tecnica

Applicazione Vulnerabile: Vuln-Twitter

Questa prova di concetto presenta un'applicazione di social media, Vuln-Twitter, che consente a più utenti di pubblicare contenuti e commenti. Il server web, costruito su Node.js, utilizza SQLite per memorizzare i dati di post e commenti.

Il front-end impiega JavaScript semplice insieme a un modulo GO WASM chiamato wordprocessor.wasm. Questo modulo espone metodi come toLeetSpeak, che trasforma le stringhe di input in "LeetSpeak" (ad esempio, "Hello!" diventa "h3ll0!").

I moduli GO WASM aiutano a renderizzare post e commenti in LeetSpeak.

Sfruttamento del Buffer Overflow

Durante il processo di rendering del front-end, quando riceve post e commenti dal server, ogni commento viene renderizzato in "LeetSpeak" utilizzando il modulo GO WASM. Il commento per ogni post viene passato come parte della variabile argv dopo il caricamento del modulo GO WASM.

Inoltre, nel modulo GO esiste un metodo, processSharedVar(), progettato per leggere la stringa situata all'indirizzo 0x5000 e convertirla in un linguaggio semplificato (ad esempio, "How are you?" diventa "How r u?"). Il post originale viene esplicitamente aggiunto a 0x5000 nella memoria lineare per essere accessibile a questo metodo, alterando il contenuto del post.

🔗 Fonti e Approfondimenti 🔗

Per coloro che sono interessati ad approfondire CVE-2021-38297 e le sue implicazioni più ampie, forniamo un elenco curato di risorse e letture, che spaziano dai bollettini di sicurezza ufficiali ai blog tecnici e ai paper accademici. Questi materiali offrono approfondimenti completi sulla vulnerabilità, sul suo impatto sulla sicurezza del software e sugli sforzi in corso per garantire la sicurezza e l'integrità delle applicazioni web.

  • https://www.ibm.com/support/pages/security-bulletin-ibm-event-streams-affected-potential-buffer-overflow-golang-cve-2021-38297-0
  • https://vulmon.com/vulnerabilitydetails?qid=CVE-2021-38297&scoretype=cvssv3
  • https://pedromarquez.dev/blog/2023/2/node_golang_wasm
  • https://nvd.nist.gov/vuln/detail/CVE-2021-38297
  • https://github.com/golang/go/issues/48797
  • https://github.com/golang/go/commit/f63250238be548b7c6c24ae840541102a5cfef99
  • https://jfrog.com/blog/cve-2021-38297-analysis-of-a-go-web-assembly-vulnerability/
  • https://stackoverflow.com/questions/64763007/why-is-webassembly-safe-and-what-is-linear-memory-model
  • https://webassembly.org/
  • https://hacks.mozilla.org/2019/08/webassembly-interface-types/
  • https://blog.protekkt.com/blog/basic-webassembly-buffer-overflow-exploitation-example
  • https://www.usenix.org/system/files/sec20_slides_lehmann.pdf
  • https://xeiaso.net/talks/wasm-abi/

Repository di sviluppo originale : https://github.com/gkrishnan724/CVE-2021-38297

Scarica lo strumento