
CVE-2025-14847 spiegazione e lab
Riferimento CVE : CVE-2025-14847
Questo repository è un laboratorio educativo che dimostra il concetto alla base di una classe di problemi spesso descritti come “compression framing / size-metadata memory disclosure” nei protocolli wire dei database.
È scritto per supportare la comprensione difensiva: come la compressione di rete di MongoDB viene negoziata e incapsulata, perché i campi di dimensione sono importanti e come parser robusti prevengono l'esposizione involontaria di memoria.
Nota sul riferimento CVE: Questo laboratorio è incentrato sull'idea riferita come CVE-2025-14847. Questo repository non convalida, riproduce o sfrutta un bug specifico del fornitore né afferma che una particolare versione di MongoDB sia interessata. Si concentra sulla modalità di fallimento generale (metadati di dimensione non corrispondenti attorno ai payload compressi) e sulle mitigazioni.
Questo repository non include (e non dovrebbe essere usato come) prova di quali versioni di MongoDB siano vulnerabili o corrette per un CVE specifico.
Per documentare correttamente le versioni “vulnerabili” vs “corrette” in un report, utilizzare un avviso ufficiale del fornitore / note di rilascio per il CVE e citarlo.
Passi pratici per verificare cosa si sta eseguendo:
docker compose exec mongodb mongod --versiondocker compose exec mongodb mongosh --quiet --eval "db.version()""mongod --versionmongosh --quiet --eval "db.version()""Se condividi il link dell'avviso che stai utilizzando, posso formattare una tabella “Affetto / Corretto” pulita nel README senza indovinare.
Questo laboratorio illustra una modalità di fallimento di compression framing / size-metadata mismatch:
OP_COMPRESSED aggiunge più campi di dimensione (lunghezza del messaggio esterno, dimensione non compressa dichiarata e lunghezza del messaggio interno).protocol_overview.md per la descrizione dettagliata del framing.Alla fine del laboratorio, dovresti essere in grado di:
Fa:
hello non compresso includendo compression: ["zlib"]OP_COMPRESSED correttamente incapsulato usando zlibNon fa:
docker-compose.yml – Avvia un container MongoDB con compressione zlib abilitata ed esposizione solo localhost.protocol_overview.md – Protocollo wire + BSON + flusso di compressione + spiegazione concettuale della vulnerabilità.mitigation.md – Guida alla difesa: patch, configurazione e idee di rilevamento.lab_probe.py – Sonda originale che negozia la compressione e registra le dimensioni dei messaggi in modo sicuro.Dalla directory di questo repository:
docker compose up -d
Confermare che sia in esecuzione:
docker compose ps
python .\lab_probe.py
Output previsto:
hellohello compresso e registra sia le dimensioni del messaggio compresso che decompressopython .\lab_probe.py --toy-demo
Esegue solo controlli di parsing locali per illustrare perché la validazione della dimensione è importante.
docker compose down
127.0.0.1:27017 sull'host.