Vai al contenuto
Offerte

TP-Link EAP770, il bug WiFi 7 che corrompe i file in silenzio

In questo articolo Indice dei contenuti 2 sezioni

Un access point WiFi 7 che corrompe i file in silenzio, un produttore che smette di aggiornarlo e una vecchia falla del kernel Linux sfruttata per ottenere i permessi di root. Sono questi gli elementi della vicenda di uno sviluppatore alle prese con il proprio TP Link EAP770, che per correggere un difetto del dispositivo ha finito per scrivere un exploit capace di aggirare le restrizioni del firmware. Tutto è partito da alcuni download che fallivano senza un motivo apparente, e dopo mesi di indagine il colpevole si è rivelato essere un driver Qualcomm e il modo in cui gestisce la memoria.

L’apparecchio fa parte della prima generazione di prodotti WiFi 7, arrivati sul mercato quando le specifiche IEEE 802.11be non avevano ancora concluso il percorso di standardizzazione. Il modello EAP770(EU), acquistato ad agosto 2023, si basa sul SoC Qualcomm IPQ9574 e lato software girava con il kernel Linux 5.4.164. La navigazione filava liscia e i trasferimenti brevi andavano a buon fine. Il guaio emergeva copiando file di qualche gigabyte con rsync e SSH, quando comparivano errori di integrità che interrompevano le operazioni.

Perché il checksum TCP non si accorgeva di nulla

All’inizio i sospetti erano caduti su rsync, sul client SSH e sulle impostazioni di trasferimento. Cambiando qualche parametro i problemi sembravano diradarsi, senza però sparire. Un indizio prezioso è arrivato da Tailscale, la VPN basata su WireGuard. Quando i dati passavano nel tunnel cifrato gli errori quasi svanivano, perché WireGuard verifica autenticità e integrità dei pacchetti e scarta quelli che non superano il controllo crittografico, mentre il TCP trasportato all’interno rileva indirettamente la perdita e ritrasmette.

Analizzando il traffico con tcpdump, lo sviluppatore ha poi individuato un segmento TCP di 1.440 byte con 64 byte consecutivi alterati e un checksum TCP perfettamente valido. Il contatore TcpInCsumErrors restava fermo a zero, quindi per il client quel pacchetto era del tutto regolare. A smascherare l’anomalia erano TLS e SSH grazie ai loro controlli crittografici, con errori che sembravano legati alla cifratura. Il checksum TCP del resto serve a scovare errori accidentali e può essere ricalcolato da un apparato intermedio che modifica il contenuto, rendendo invisibile la manomissione.

Per la prova definitiva sono stati usati trasferimenti TCP non cifrati tra un computer collegato via Ethernet e un portatile in wireless, con dati noti in partenza da confrontare byte per byte. Su 8.192 MiB, pari a 8 GiB, inviati con più connessioni contemporanee sono saltati fuori tre blocchi corrotti da 64 byte, sempre e solo nel percorso dalla rete cablata al client WiFi. I dispositivi esclusivamente su Ethernet non avevano problemi e i frame wireless risultavano integri. Tutto indicava l’elaborazione interna dell’access point.

Cache, DMA e una vecchia falla per ottenere root

Per reggere velocità elevate il dispositivo si affida a meccanismi di accelerazione hardware come Shortcut Forwarding Engine (SFE) e Packet Processing Engine (PPE), affiancati da un driver Qualcomm che gestisce il passaggio dei pacchetti attraverso le interfacce Ethernet. Proprio nel codice di quel driver è emersa una gestione difettosa della coerenza tra cache della CPU e memoria DMA, la tecnica che permette a una periferica di leggere e scrivere direttamente nella RAM. In trasmissione il driver pulisce solo una parte della cache, ma quando riutilizza lo stesso buffer in ricezione dà per scontato che l’intera area sia pronta. Così vecchi dati rimasti in cache finiscono per sovrascrivere porzioni dei pacchetti appena arrivati, a blocchi di 64 byte, e il percorso accelerato ricalcola il checksum sui dati già corrotti.

Il rimedio era semplice sulla carta, bastava impostare a 0 i parametri /sys/sfe/l2feature e /sys/sfe/pperfs_feature. Il firmware di TP Link però non lo consentiva senza privilegi di root, e il produttore aveva già dichiarato la fine del supporto per EAP770 v1 nel 2025, due anni dopo il lancio. Lo sviluppatore ha quindi puntato su una vulnerabilità del kernel Linux nota dal 2022, legata a un errore nella gestione della memoria. Per adattare l’exploit ha usato i sorgenti di un modello TP Link affine, l’emulatore QEMU e gli strumenti di radare2, con l’aiuto di Claude Opus. Dopo circa 17 ore è arrivato l’accesso root, senza mettere mano fisicamente alla memoria flash. Con l’accelerazione attiva il trasferimento di 8 GB dalla rete cablata al client WiFi toccava 103,4 MB/s ma produceva tre blocchi corrotti. Disattivando le funzioni incriminate la velocità scendeva a 95,4 MB/s, una perdita intorno all’8%, ma nei test prolungati non è comparso alcun blocco alterato e i download pesanti sono tornati a concludersi correttamente. Resta un limite non da poco, perché i due parametri tornano ai valori originali a ogni riavvio. Per questo lo sviluppatore ha configurato sul proprio NAS un controllo che verifica lo stato dell’access point e, quando rileva che l’accelerazione si è riattivata, esegue di nuovo l’exploit.

Fonte: TecnoAndroid

Condividi:
180 Condivisioni