Indicazioni sulle recenti vulnerabilità critiche di libwebp e libvpx
Background
Nelle ultime settimane, Google ha rilasciato aggiornamenti a Google Chrome, incluse correzioni per le vulnerabilità CVE-2023-4863 e CVE-2023-5217. Entrambe le vulnerabilità sono state rilevate come vulnerabilità zero-day sfruttate in rete e le voci CVE sono state aggiornate per ampliare l'ambito da Google Chrome alle librerie sottostanti: libwebp e libvpx. Entrambe le CVE compaiono nel Catalogo delle vulnerabilità sfruttate notedi CISA.
In questo blog, desideriamo condividere le informazioni su entrambe le vulnerabilità e fornire consigli su come potete rilevare eventuali applicazioni vulnerabili nella vostra rete. Poiché queste vulnerabilità sono oggetto di continua ricerca, questo post potrebbe essere aggiornato in futuro con ulteriori informazioni e indicazioni.
CVE-2023-4863 - Libwebp
Questa vulnerabilità è stata segnalata dal team SEAR (Security Engineering and Architecture) di Apple e da The Citizen Lab. Sulla base di tale rapporto, i ricercatori hanno correlato questa vulnerabilità con l'attacco BLASTPASS : un exploit zero-day zero-click di NSO Group per iPhone.
Questa vulnerabilità è un heap overflow in libwebp, che risiede nel processo di decodifica delle immagini webp nel formato senza perdita di dati. Ben Hawkes ha condotto un' analisi tecnica molto dettagliata su questa vulnerabilità.
Libwebp è una libreria sviluppata da Google per codificare e decodificare immagini nel formato WebP (sviluppato anch'esso da Google). La vulnerabilità risiede nell’analisi delle immagini da parte della libreria con compressione senza perdite di dati, che utilizza le tabelle Huffman. Fondamentalmente, un criminale può manipolare le tabelle per far sì che la libreria allochi meno memoria per le tabelle rispetto alla loro dimensione effettiva; ne conseguono un heap overflow e una scrittura fuori banda.
Esistono molti modi e configurazioni per ottenere tali risultati, quindi non esiste una prova di concetto (PoC) valida per tutti, ma potete consultare la PoC@mistymntncop per un esempio di implementazione dello sfruttamento.
CVE-2023-5217 - libvpx
Questa vulnerabilità è stata scoperta da Clément Lecigne del gruppo di analisi delle minacce di Google. Questa vulnerabilità è stata utilizzata anche da un fornitore di servizi di sorveglianza commerciale.
Anche Libvpx fa parte del progetto WebP. Nello specifico la libreria si occupa dei formati VP8 e VP9 per la codifica e decodifica video. Esistono meno dettagli su questa vulnerabilità, ma è noto che si tratta anche di una vulnerabilità legata alla corruzione dell’heap.
Cosa è vulnerabile?
Inizialmente venivano segnalati come vulnerabili solo i browser, poiché le vulnerabilità riguardavano Chromium. Tuttavia, poiché la vulnerabilità risiede nelle librerie sottostanti libwebp e libvpx, la portata dell'impatto è molto più ampia: Applicazioni che utilizzano le versioni libwebp 0.5.0. alla versione 1.3.1 e sono interessate le applicazioni che utilizzano una versione di libvpx precedente alla 1.13.1.
Abbiamo compilato un elenco di applicazioni che si basano su una delle librerie, sulla base di rapporti disponibili pubblicamente. Abbiamo incluso anche programmi che utilizzano la libreria che abbiamo rilevato utilizzando le nostre query di Insight. Ciò non significa che siano necessariamente vulnerabili.
Affinché un programma sia vulnerabile deve utilizzare la funzionalità senza perdite WebP di libwebp o i codec V8 o V9 con libvpx. Poiché queste librerie possono essere utilizzate per caratteristiche e funzionalità completamente diverse, il loro utilizzo non sempre equivale a una vulnerabilità.
Sappiamo che i browser web utilizzano queste funzionalità, ma dipendiamo dalla discrezione del fornitore per dirci se altri programmi le utilizzano. Abbiamo riscontrato che i seguenti browser e altre applicazioni utilizzano le librerie interessate:
- Fedora (37–39)
- Debian (10–12)
- Google Chrome
- Firefox
- Microsoft Edge
- Opera
- Tor
- Brave
- Vivaldi
- Telegram
- Discord
- 1Password
- Electron
- GIMP
- Slack
- LibreOffice
- Skype
- Grafana
- KeePassXC
- VLC
Inoltre, una persona anonima ha analizzato i repository dei pacchetti di Ubuntu e ha caricato un elenco di tutti i pacchetti che si basano su libvpx7.
Esposizione delle vulnerabilità: OSquery
Poiché la libreria può essere trovata in molti luoghi diversi e spetta ai fornitori di software aggiornare i propri prodotti, è fondamentale rilevare l'ambito della vulnerabilità e il tasso di esposizione delle macchine nella rete. Abbiamo sviluppato diverse query OSquery per aiutarvi in questo. I clienti di Akamai Guardicore Segmentation possono utilizzare la funzionalità Insight per eseguire tali query sulle proprie reti.
libweb e libvpx caricati in memoria
Poiché le librerie possono essere fornite con qualsiasi applicazione, non è possibile individuarle sul disco rigido. Possiamo invece controllare i moduli caricati (file DLL o SO) in ciascun processo in esecuzione utilizzando la tabella OSquery process_memory_map e provare a ottenere la versione utilizzando la tabella dei file.
Poiché i metadati della versione vengono aggiunti durante il processo di compilazione, non saranno necessariamente disponibili, poiché la libreria può essere compilata senza di essi. Anche quando i metadati della versione sono disponibili, potrebbero non essere accurati, poiché i fornitori possono invece allegare la propria versione del software. Si consiglia a discrezione dell'utente di evitare falsi positivi o veri negativi.
SELECT DISTINCT
procs.name AS process_name,
pmm.path AS lib_path,
file.file_version,
CASE
WHEN file_version = '' THEN 'unknown version, potentially vulnerable'
WHEN pmm.path LIKE '%libwebp%' AND file_version < '1.3.2' THEN 'vulnerable version'
WHEN pmm.path LIKE '%libwebp%' AND file_version >= '1.3.2' THEN 'not vulnerable version'
WHEN pmm.path LIKE '%libvpx%' AND file_version <= '1.13.1' THEN 'vulnerable version'
WHEN pmm.path LIKE '%libvpx%' AND file_version > '1.13.1' THEN 'not vulnerable version'
ELSE 'unknown version, potentially vulnerable'
END is_vulnerable
FROM process_memory_map AS pmm
JOIN processes AS procs USING(pid)
JOIN FILE ON file.path = pmm.path
WHERE pmm.path LIKE '%libwebp%' OR pmm.path LIKE '%libvpx%'
Individuazione dei browser web
Abbiamo incluso una query per rilevare i browser installati, poiché il rapporto iniziale per le CVE e il caso di utilizzo provenivano da Chromium. Questa query può aiutare a individuare le risorse nella rete che eseguono browser e potrebbe richiedere ulteriori indagini. È quindi possibile confrontare la versione installata con l'elenco delle versioni vulnerabili dei browser nel Database nazionale delle vulnerabilità (NVD).
SELECT name, version FROM programs
WHERE LOWER(name) LIKE "%chrome%"
OR LOWER(name) LIKE "%firefox%"
OR LOWER(name) LIKE "%microsoft edge%"
OR LOWER(name) LIKE "%thunderbird%"
OR LOWER(name) LIKE "%brave%"
OR LOWER(name) LIKE "%opera%"
Individuazione dei programmi installati
Per verificare se è installato uno dei programmi dall'elenco riportato sopra, utilizzare la seguente query; basta sostituire <program_name> con il nome nome del programma effettivo.
SELECT name, version FROM programs
WHERE name LIKE "%<program_name>%"
Mitigazione
Mappatura di applicazioni e risorse vulnerabili
Utilizzando l'elenco compilato di applicazioni e le query Osquery fornite in questo blog, potete mappare le applicazioni potenzialmente vulnerabili nella vostra rete e ricavare un elenco di risorse potenzialmente vulnerabili.
I clienti di Akamai Hunt hanno ricevuto un rapporto contenente informazioni dettagliate sul grado di vulnerabilità dei propri ambienti. I rapporti di Hunt erano basati su domande simili a quelle contenute in questo blog e sono stati inviati entro poche ore dall'inizio dell'incidente. Le query hanno rilevato migliaia di risorse vulnerabili in tutto il mondo.
Applicazione di patch
Sono molti i parametri che vengono presi in considerazione quando si cerca di valutare se un'applicazione è vulnerabile: Quale versione di libwebp o libvpx carica? L'applicazione utilizza la compressione senza perdita WebP o i codec VP8/VP9? A causa delle varie combinazioni possibili, molte applicazioni sono suscettibili di sfruttamento e l’impatto può essere vasto.
Sfortunatamente, non esiste una patch che riduca questa vulnerabilità. L'applicazione delle patch fa inoltre affidamento sui fornitori di software per rilasciare le patch pertinenti per i loro programmi, il che potrebbe richiedere del tempo. Le organizzazioni devono valutare nel tempo quali carichi di lavoro sono vulnerabili e rimangono senza patch.
Sensibilità degli avvisi di minaccia
Poiché le patch per tutti i programmi interessati non sono necessariamente ancora disponibili, potrebbe essere prudente aumentare la sensibilità degli avvisi sui carichi di lavoro che potrebbero essere potenzialmente vulnerabili e senza patch. In questo modo, anche se la vulnerabilità viene sfruttata e non rilevata, potreste comunque notarne le conseguenze.
Tuttavia, ciò può aumentare eccessivamente il numero di avvisi. Di conseguenza, consigliamo di regolare la sensibilità degli avvisi in base all’importanza del carico di lavoro interessato per la rete o al suo impatto.
Riepilogo
In questo post del blog, abbiamo esaminato le informazioni disponibili sulle vulnerabilità critiche in libwebp e libvpx, che sono state sfruttate in rete.
Per gli addetti alla sicurezza, è fondamentale determinare la vulnerabilità dei carichi di lavoro nella propria rete. Abbiamo tentato di essere utili fornendo query OSquery per rilevare i programmi che utilizzano le librerie. Abbiamo anche discusso cosa fare per mitigare parte del rischio (ad esempio, regolare la sensibilità degli avvisi di minaccia) quando le patch non sono disponibili.
Questo post del blog intende fornire una panoramica delle nostre conoscenze attuali e offrire suggerimenti sulla base delle informazioni disponibili. La nostra revisione è continua e tutte le informazioni contenute in questa analisi sono soggette a modifiche. Potete anche visitare il nostro account Twitter per aggiornamenti in tempo reale.