Ricevi DeafLetter
Una selezione settimanale di segnali, vulnerabilità e guide. Gli avvisi critici restano facoltativi.
Puoi cancellarti in ogni momento. Privacy policy.
Il 7 settembre 2026 SophosLabs ha pubblicato l'analisi di PoisonedRefresh, un impianto Linux che colpisce i server F5 BIG-IP APM sfruttando la vulnerabilità CVE-2025-53521. Il malware non lascia tracce su disco: inietta la web shell direttamente nella memoria dei processi Apache, rendendo inutili tutti i sistemi di rilevamento basati sull'integrità dei file. Per i team di sicurezza si apre un problema nuovo: il patching del sistema non elimina l'impianto attivo, che continua a operare in RAM fino al riavvio del servizio.
- PoisonedRefresh, rilevato come Linux/Agnt-IC da Sophos, compromette server F5 BIG-IP APM sfruttando CVE-2025-53521, una RCE non autenticata con CVSS 9.8 CRITICAL secondo NVD.
- Il malware intercetta le chiamate mmap() in libphp e inietta il payload nella rappresentazione in-memory di script PHP webtop, lasciando i file originali benigni su disco.
- Un custom ELF loader garantisce esecuzione pre-main() riaprendo il binario via /proc/self/exe, con stringhe operative criptate tramite RC4 con chiave hardcoded di 16 byte.
- Un secondo canale di accesso utilizza un socket UNIX domain locale a /run/bigtlog.pipe, con shell interattiva /bin/bash attivata tramite hook di apr_time_now.
Come funziona l'iniezione memory-only nei processi Apache
Il meccanismo centrale di PoisonedRefresh è il hooking runtime delle funzioni di libreria in libphp. Secondo l'analisi SophosLabs condivisa con GBHackers, il malware intercetta open, close, mmap e __fxstat nel modulo PHP di Apache. Quando il processo worker carica in memoria file PHP legittimi del webtop BIG-IP APM — specificamente apm_css.php3, full_wt.php3 e webtop_popup_css.php3 — il payload maligno viene iniettato durante la fase di mmap().
I file su disco rimangono inalterati e benigni. Il processo Apache esegue invece una versione modificata in memoria che legge comandi da php://input, verifica un prefisso magico, decripta il contenuto con RC4 e lo esegue tramite eval(). La risposta HTTP viene mascherata con status code 201 e Content-Type text/css; charset=utf-8, imitando traffico legittimo di fogli di stile.
Questo approccio annulla ogni controllo di integrità file-based. Come ha rilevato SophosLabs, citato da SecurityOnline: "The on-disk file does not need to contain the final web shell content at all; execution follows from the modified in-memory representation created by the implant at runtime".
Il custom ELF loader e la persistenza oltre il riavvio
Il campione analizzato, con hash SHA-256 26bd5b0722d1dbab5db749a063c49bc8638653ac2addfead7a9cb3d6d57bccc9, è un binario stripped e statically linked. Per nascondere la propria esecuzione, PoisonedRefresh implementa un loader ELF custom che intercetta __libc_start_main: il malware preserva la routine di startup libc originale, riapre il proprio eseguibile tramite /proc/self/exe, mappa al suo interno un eseguibile embedded e reindirizza l'esecuzione prima del normale avvio della libreria C.
Un'analisi parallela condotta da Sophos su un campione correlato nel binario umount ha rivelato un first-stage installer separato. Questo componente infetta /usr/sbin/httpd, si installa in /mnt/tm_install per sopravvivere agli upgrade del sistema, e modifica le politiche SELinux per eludere i controlli di sicurezza. Il prefisso maligno di dimensione 0x5430 nel httpd infettato corrisponde al payload embedded nel campione umount, confermando la relazione tra i due componenti.
"Our analysis suggests the sample discussed here represents a second-stage payload; during parallel analysis of a related umount sample, we noted a distinct installer/propagation component" — SophosLabs
Il doppio canale di accesso: web shell HTTP e socket UNIX domain
PoisonedRefresh non si affida a un unico vettore di comando. Oltre alla web shell iniettata via PHP, il malware crea un socket UNIX domain locale a /run/bigtlog.pipe. L'attivazione avviene tramite un hook su apr_time_now, funzione di Apache Portable Runtime: quando viene soddisfatta una condizione di autenticazione, lo standard input, output e error vengono reindirizzati a /bin/bash, aprendo una shell interattiva locale.
Il socket UNIX domain richiede accesso già compromesso al sistema o la presenza di un altro vettore di accesso locale. Non è esposto direttamente alla rete, ma rappresenta un percorso di persistenza alternativo qualora la web shell HTTP venisse rilevata e neutralizzata. La combinazione dei due canali — uno mimetizzato nel traffico web, l'altro nascosto nel filesystem dei socket locali — rende la completa eradicazione particolarmente complessa.
CVE-2025-53521: la falla di ingresso e il contesto della campagna c05d5254
La vulnerabilità sfruttata per l'accesso iniziale è CVE-2025-53521, una RCE non autenticata in F5 BIG-IP APM con access policy configurata su virtual server. Secondo NVD, il punteggio CVSS 4.0 è AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N. La vulnerabilità è presente nelle branch 15.1.x, 16.1.x, 17.1.x e 17.5.x; le versioni corrette sono 15.1.10.8, 16.1.6.1, 17.1.3 e 17.5.1.3.
F5 ha confermato lo sfruttamento in-the-wild di questa vulnerabilità e ha collegato l'attività alla campagna tracciata internamente come c05d5254. Il record CVE è inserito nel catalogo CISA Known Exploited Vulnerabilities. ESET ha analizzato indipendentemente lo stesso malware, confermando la denominazione 'PoisonedRefresh' e riscontrando comportamenti sovrapposti a quelli documentati da Sophos.
Cosa fare adesso
- Eseguire compromise assessment sui server BIG-IP APM già patchati: l'impianto memory-only sopravvive all'applicazione delle correzioni e richiede verifica della memoria dei processi Apache, non solo dell'integrità dei file su disco.
- Monitorare anomalie comportamentali nei processi Apache worker: fluttuazioni nei permessi di memoria di
libphp, accessi ripetuti a/proc/self/mapsda parte di processi httpd, e pattern di allocazione mmap anomali su file PHP del webtop. - Analizzare la telemetry HTTP per risposte con status code 201 su endpoint PHP che dovrebbero restituire altri codici, in particolare quando accompagnate da Content-Type
text/csssu risorse dinamiche. - Verificare la presenza di socket UNIX domain non documentati in
/run/, in particolare percorsi con nomebigtlog.pipeo similari, e controllare processi Apache con file descriptor aperti verso shell interattive.
Perché cambia tutto nella rilevazione delle web shell
PoisonedRefresh segna una discontinuità nella catena di rilevazione delle compromissioni web. Fino a oggi le web shell erano per definizione artefatti su disco: file PHP anomali, timestamp sospetti, firme statiche nei contenuti. Il malware di Sophos dimostra che questo modello è superato. Quando il payload risiede esclusivamente in pagine di memoria mappate via mmap e scompare con il riavvio del processo, l'intera categoria di strumenti disk-centric — EDR con scanning file-based, integrity monitoring su filesystem, sandboxing statica — perde efficacia senza compensazione in visibility alternativa.
Il passaggio richiesto è tecnico e organizzativo. I team devono integrare detection su memoria di processo, syscall tracing e behavioral analytics HTTP, con costi in strumentazione e competenze che molte organizzazioni non h ancora distribuito. Per i vendor di sicurezza, la sfida è aggiornare le logiche di rilevamento per il hooking runtime di librerie condivise, un dominio finora riservato alla ricerca su rootkit avanzati e che ora entra nel threat model ordinario dei server di perimetro.
Fonti
- https://gbhackers.com/poisonedrefresh-malware/
- https://www.itsecuritynews.info/poisonedrefresh-malware-backdoors-f5-big-ip-servers-with-memory-only-php-web-shells/
- https://www.infosectoday.io/dissecting-a-php-web-server-rootkit
- https://securityonline.info/php-web-server-rootkit/
- https://www.kobaran.com/poisonedrefresh-malware-hides-inside-apache-memory-while-f5-big-ip-files-stay-clean/
- https://nvd.nist.gov/vuln/detail/CVE-2025-53521
- https://www.sophos.com/en-us/blog/dissecting-a-php-web-server-rootkit
- https://gbhackers.com/crafted-jpegs-trigger-php-memory/
Le informazioni sono state verificate sulle fonti citate e aggiornate al momento della pubblicazione.
Fonti
Ricevi DeafLetter
Una selezione settimanale di segnali, vulnerabilità e guide. Gli avvisi critici restano facoltativi.
Puoi cancellarti in ogni momento. Privacy policy.