Ad aprile 2022, FreeBSD ha corretto una vulnerabilità critica di tipo heap overflow nel Wi-Fi stack del kernel, identificata come CVE-2022-23088 e scoperta dal ricercatore m00nbsd.
Questa falla, presente da 13 anni, permetteva a un attaccante nelle vicinanze di eseguire codice arbitrario nel kernel della vittima.
Il problema risiedeva nella funzione ieee80211_parse_beacon()
, che analizza i “beacon frames” inviati dagli access point durante la scansione delle reti Wi-Fi.
In particolare, il codice salvava un puntatore all’opzione IEEE80211_ELEMID_MESHID
senza verificare la lunghezza del dato (frm[1]
).
Successivamente, nella funzione sta_add()
, un’operazione memcpy()
copiava il contenuto dell’opzione in un buffer di dimensione fissa, causando un buffer overflow.
Questa falla consentiva a un attaccante di controllare sia la dimensione dell’overflow che i dati scritti in memoria, sovrascrivendo campi cruciali nella struttura ieee80211_scan_entry
.
In particolare, poteva modificare i puntatori ies->data
e ies->len
, utilizzati in ieee80211_ies_init()
, ottenendo una write-what-where primitive
, ovvero la possibilità di scrivere dati arbitrari in qualsiasi indirizzo del kernel semplicemente inviando un frame Wi-Fi appositamente modificato.
La vulnerabilità interessava tutte le versioni di FreeBSD dal 2009, comprese derivate come pfSense e OPNsense.
Poiché FreeBSD è alla base del sistema operativo Orbis OS su PlayStation 4 e PlayStation 5, in teoria la falla potrebbe essere sfruttata per attaccare queste console.
Tuttavia, Sony implementa misure di sicurezza avanzate nel kernel delle console, tra cui:
- Mitigazioni del kernel per prevenire exploit noti.
- Sandboxing per isolare i processi.
- Protezioni della memoria per impedire modifiche non autorizzate.
Queste difese potrebbero rendere più difficile l’utilizzo della vulnerabilità per un jailbreak.
L’exploit originale per FreeBSD 13.0 richiedeva una scheda Wi-Fi in modalità monitor per inviare pacchetti malevoli. Per adattarlo a PS4 e PS5, sarebbe necessaria un’analisi dettagliata dell’implementazione del modulo Wi-Fi sulle console.
Se il codice vulnerabile di FreeBSD è stato utilizzato senza modifiche sostanziali, la falla potrebbe essere sfruttata per ottenere esecuzione di codice arbitrario.
Tuttavia, ad oggi non ci sono prove concrete di un exploit funzionante su PS4 o PS5 basato su questa vulnerabilità.
Probabile che eventuali tentativi richiedano modifiche aggiuntive al codice dell’exploit e un’analisi approfondita delle protezioni della memoria delle console.
A tal proposito, il developer Dark-life944 ha condiviso un primo PoC:
File inclusi nel PoC
exploit.py
→ Script principale dell’exploit.shellcode.bin
→ Shellcode iniettato in memoria.x86.py
→ Funzioni helper per calcoli di indirizzi di memoria.
Requisiti
Per eseguire l’exploit, servono:
- Scheda Wi-Fi con supporto alla modalità Monitor (per inviare pacchetti Wi-Fi raw).
- Ambiente Linux (per eseguire lo script di exploit).
- Dipendenze Python:
pip install pyelftools
Esecuzione dell’exploit su Linux
Configurare la scheda Wi-Fi in modalità Monitor
Prima di tutto, assicurarsi che la scheda Wi-Fi supporti la modalità monitor e impostarla:
sudo ifconfig wifi0 down
sudo iwconfig wifi0 mode monitor
sudo ifconfig wifi0 up
(Sostituire wifi0
con l’interfaccia Wi-Fi corretta, verificabile con ifconfig
o iwconfig
).
Clonare ed entrare nella directory del PoC
git clone https://github.com/Dark-life944/PoC-PS5-PS4.git
cd PoC-PS5-PS4/CVE-2022-23088
Compilare il kernel target (FreeBSD 13.0 Release)
./build.py kernels/fbsd-13.0-release
Eseguire l’exploit
sudo ./exploit.py wifi0 kernels/fbsd-13.0-release
Log dell’exploit
Durante l’esecuzione, lo script segue diverse fasi:
[+] Phase 1: writing page1
[+] Phase 2: writing L3
[+] Phase 3: patching kernel
[+] Phase 4: repairing
[+] Finished
- Phase 1: Scrive la prima pagina di memoria per predisporre l’attacco.
- Phase 2: Scrive il livello L3 per manipolare la memoria.
- Phase 3: Esegue il patching del kernel, sovrascrivendo le strutture di memoria vulnerabili.
- Phase 4: Effettua eventuali riparazioni per stabilizzare il sistema dopo l’exploit.
Download: Source code PoC-PS5-PS4 (CVE-2022-23088)
Fonte: zerodayinitiative.com