SharePoint CVE-2026-50522: le machine key sopravvivono alla patch
CVE-2026-50522 è la quarta falla SharePoint entrata nel CISA KEV in 22 giorni. Gli attaccanti estraggono le machine key ASP.NET con una sola richiesta e restano dentro anche dopo la patch.
Il 22 luglio 2026 CISA ha inserito CVE-2026-50522 nel catalogo Known Exploited Vulnerabilities con scadenza di remediation al 25 luglio: tre giorni. È la quarta vulnerabilità di SharePoint on-premise a entrare in quel catalogo in ventidue giorni. Il motivo per cui vale la pena scriverne non è il CVSS 9.8, e non è nemmeno l'esecuzione di codice remoto senza autenticazione. È cosa fanno gli attaccanti una volta ottenuta l'esecuzione di codice: leggono le machine key ASP.NET del server e se ne vanno. Quelle chiavi restano valide dopo l'installazione dell'aggiornamento di luglio. La patch chiude la porta da cui sono entrati e li lascia con in mano una chiave dell'edificio.
Quattro CVE SharePoint nel CISA KEV in 22 giorni
Estratte direttamente dal feed JSON del KEV (versione catalogo 2026.07.22), le voci SharePoint on-premise dell'ultimo mese:
| CVE | Ingresso KEV | Scadenza | Classe | Nota |
|---|---|---|---|---|
| CVE-2026-45659 | 2026-07-01 | 2026-07-04 | CWE-502 deserializzazione | RCE autenticata, corretta in silenzio a maggio |
| CVE-2026-56164 | 2026-07-14 | 2026-07-17 | CWE-306 autenticazione assente | Elevazione di privilegi via rete |
| CVE-2026-58644 | 2026-07-16 | 2026-07-19 | CWE-502 deserializzazione | RCE non autenticata |
| CVE-2026-50522 | 2026-07-22 | 2026-07-25 | CWE-502 deserializzazione | RCE non autenticata, furto di machine key |
Il campo required action di ognuna di queste voci cita BOD 26-04, la direttiva che a giugno 2026 ha sostituito la regola piatta dei quattordici giorni della BOD 22-01 con scadenze differenziate per rischio. Il software critico esposto su internet finisce nella fascia più stretta, ed è così che un CVE pubblicato il 14 luglio si ritrova con una scadenza al 25. Il 14 luglio CISA aveva già emesso un alert di hardening dedicato che nominava quattro CVE SharePoint sotto sfruttamento attivo. Non è una vulnerabilità: è una stagione.
L'esposizione è più contenuta di quanto suggerisca il rumore mediatico, ma mal concentrata. La mappatura Censys citata da Help Net Security conta circa 1.500 istanze raggiungibili da internet nella linea affetta, in maggioranza identificate come SharePoint Server 2019: la versione che con più probabilità ospita dieci anni di librerie documentali accumulate da un'organizzazione che la migrazione al cloud non l'ha mai finita.
Dentro CVE-2026-50522: un token contraffatto su /_trust/default.aspx
Il difetto è CWE-502, deserializzazione di dati non attendibili, valutato CVSS 9.8 con vettore AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Microsoft ha distribuito la correzione negli aggiornamenti del 14 luglio 2026.
Un ricercatore che pubblica come Janggggg ha rilasciato su GitHub un proof-of-concept PowerShell il 20 luglio. Secondo l'analisi di BleepingComputer, il PoC veicola un payload .NET BinaryFormatter malevolo come cookie di un SecurityContextToken contraffatto, incapsulato in una risposta di sign-in WS-Federation e inviato in POST a /_trust/default.aspx. Il percorso di autenticazione federata di SharePoint prende quel token e lo deserializza prima di aver stabilito che il mittente sia qualcuno, ricostruendo il grafo di oggetti dell'attaccante in oggetti .NET vivi. BinaryFormatter è il substrato di gadget che ysoserial ha industrializzato da un decennio: se controlli cosa viene ricostruito, controlli il processo.
La scelta dell'endpoint è la parte elegante. /_trust/default.aspx è il ricevitore del sign-in. Deve essere raggiungibile prima dell'autenticazione, perché è esattamente il suo mestiere. Tutto l'hardening degli access control attorno a /_layouts/ non lo tocca.
L'advisory diceva "Site Owner". L'exploit non era d'accordo
Aprendo il record Microsoft di questo CVE si trovano due affermazioni incompatibili una accanto all'altra. La FAQ recita:
In a network-based attack, an attacker authenticated as at least a Site Owner, could write arbitrary code to inject and execute code remotely on the SharePoint Server.
Il vettore CVSS sullo stesso advisory dice PR:N, nessun privilegio richiesto. La descrizione NVD parla di "unauthorized attacker". Lo sfruttamento osservato in-the-wild è non autenticato, una discrepanza che Security Affairs ha segnalato esplicitamente. Chi ha fatto triage leggendo la FAQ — il paragrafo in prosa, quello che una persona legge davvero — ne ha concluso di avere davanti un bug post-autenticazione raggiungibile solo da chi possiede già la site ownership. Cioè una patch da martedì prossimo, non da stanotte.
Nei campi machine-readable non andava meglio. La valutazione di sfruttabilità di Microsoft alla pubblicazione riportava Publicly Disclosed:No; Exploited:No; Latest Software Release: Exploitation More Likely, con vettore temporale E:U, maturità dell'exploit non provata. Defused osservava già attacchi di deserializzazione SharePoint non documentati tre giorni dopo, il 17 luglio. Il 20 luglio esisteva un PoC pubblico funzionante. Il 22 luglio la CVE era nel KEV. "Non provata" è durata otto giorni.
Gli analisti Microsoft stanno prevedendo il futuro come chiunque altro, e il punto non è che abbiano sbagliato. È che i rating di sfruttabilità sono una probabilità a priori, e per giunta debole. L'unica misura che restituisce un fatto invece di una previsione è eseguire l'attacco contro il proprio server.
Perché la vera compromissione sono le machine key
ASP.NET protegge __VIEWSTATE — il blob di stato serializzato che fa avanti e indietro col browser a ogni pagina ASP.NET classica — con un MAC derivato dalla validationKey presente in web.config, cifrandolo opzionalmente con la decryptionKey. Il server si fida di qualunque ViewState porti una firma valida. Quella fiducia è tutto il design: è il modo in cui il framework sa che lo stato che sta deserializzando è lo stato che ha inviato lui.
Perciò la mossa di maggior valore, dopo aver ottenuto esecuzione di codice su SharePoint, non è piazzare una web shell. È leggere validationKey e decryptionKey dalla configurazione, esfiltrare 128 caratteri esadecimali e sganciarsi. watchTowr, la cui rete di honeypot Attacker Eye ha registrato compromissioni riuscite nel giro di poche ore dalla pubblicazione del PoC, lo ha detto senza giri di parole: gli attaccanti estraggono le machine key con una sola richiesta, e "patching is not enough, defenders should rotate credentials on any assets that may have been exposed".
Con quelle chiavi un attaccante firma un payload serializzato arbitrario e lo invia come __VIEWSTATE a una qualsiasi pagina ordinaria della farm. Il server valida la firma — correttamente, perché la firma è autentica — deserializza il payload e lo esegue. Nessuna CVE è coinvolta. Vale la pena confrontare cosa vedono le due parti:
Blue team, agosto: "Abbiamo applicato la patch per CVE-2026-50522 il 22 luglio, ampiamente entro la scadenza KEV. Lo scanner è pulito. La dashboard di vulnerability management è verde sulla farm SharePoint."
Red team, agosto: "La vulnerabilità non ci serve più. La chiave di firma della farm ce la siamo presa il 20 luglio. Ogni richiesta che inviamo è crittograficamente valida. Non stiamo sfruttando il vostro server: ci stiamo autenticando."
Stato di patching e stato di sicurezza sono due variabili diverse, e l'ondata SharePoint di luglio 2026 è la dimostrazione più pulita di quella distanza che si sia vista di recente. Una validationKey rubata converte una vulnerabilità istantanea in un'autorizzazione permanente, e per l'autorizzazione permanente non esiste patch. Esiste solo la rotazione.
Il precedente ha esattamente un anno. CVE-2025-53770, "ToolShell", luglio 2025, aveva la stessa forma: deserializzazione non autenticata in SharePoint on-premise, machine key rubate, persistenza sopravvissuta alla patch d'emergenza, la web shell spinstall0.aspx nella directory LAYOUTS. Le organizzazioni che applicarono la patch di ToolShell senza ruotare rimasero compromesse. Il settore ha ormai ripetuto l'esperimento due volte.
Che aspetto ha l'intrusione dopo la patch
L'analisi di Resecurity sugli attacchi SharePoint di luglio 2026 segue la catena oltre l'accesso iniziale, e il comportamento post-exploitation è ciò che i difensori dovrebbero cercare. Il loro report descrive:
- Web shell scritte in
...\16\TEMPLATE\LAYOUTS\eC:\inetpub\wwwroot\wss\VirtualDirectories\80\_layouts\, con nomi osservati comespinstall0.aspx,info3.aspxeAssetHandler.axdcamuffata da handler. validationKeyedecryptionKeyestratte daweb.configvia reflection, seguite da ViewState forgery oppure dalla registrazione di un modulo IIS malevolo (FarmAuthNative.dll) inapplicationHost.config: persistenza che sopravvive sia alla patch sia alla bonifica delle web shell.- L'account di servizio della farm usato per il pivot verso SQL Server e Active Directory. SharePoint sta sul piano dell'identità: l'RCE lì è una strada verso il dominio, non un capolinea.
- Esfiltrazione preparata in librerie documentali nascoste, file rinominati in
.loge.tmp, poi trasferiti su HTTPS a blocchi da 5 MB, dimensionati deliberatamente sotto le soglie DLP che scattano sui trasferimenti massivi.
Quest'ultimo punto è un problema di detection, non di patching. Frammentato, incapsulato in TLS, originato da un account di servizio legittimo su un server il cui mestiere è distribuire documenti: ogni singola richiesta è irrilevante. Il segnale esiste solo nella forma aggregata del traffico su un arco di ore.
Remediation
1. Sono affetto?
Verificare la build della farm, non l'elenco delle KB: una KB può risultare installata su alcuni server della farm e non su altri.
# Su un server SharePoint, nella SharePoint Management Shell
Get-SPFarm | Select-Object BuildVersion
(Get-SPFarm).Servers | Select-Object Name, Status, Role
Get-SPProduct -Local | Select-Object ProductName, @{n='Patches';e={$_.PatchableUnitDisplayNames}}
Si è vulnerabili se la build è inferiore a quella corretta per la propria edizione:
| Edizione | Build corretta | KB |
|---|---|---|
| SharePoint Enterprise Server 2016 | 16.0.5561.1001 | KB5002891 |
| SharePoint Server 2019 | 16.0.10417.20175 | KB5002883 |
| SharePoint Server Subscription Edition | 16.0.19725.20434 | KB5002882 |
Poi stabilire l'esposizione. /_trust/default.aspx raggiungibile da internet è la condizione che trasforma il caso da urgente a emergenza:
curl -sk -o /dev/null -w '%{http_code}\n' https://<host>/_trust/default.aspx
SharePoint Online non è affetto: il problema riguarda esclusivamente l'on-premise.
2. Patch — versioni corrette esatte
Installare l'aggiornamento della propria edizione su tutti i server della farm, poi eseguire il configuration wizard perché binari e content database tornino allineati:
# dopo aver installato la KB su ciascun server, su ogni server a turno:
PSConfig.exe -cmd upgrade -inplace b2b -wait -cmd applicationcontent -install -cmd installfeatures
Verificare con Get-SPFarm | Select BuildVersion su ogni nodo. Una farm in cui un solo WFE non è aggiornato è una farm non aggiornata.
3. Non si può patchare subito? Controlli compensativi
- Abilitare l'integrazione AMSI in Full Mode per SharePoint, insieme a un motore antimalware aggiornato su ogni server della farm. È la mitigazione primaria indicata da Microsoft per questa classe di attacchi di deserializzazione e blocca la richiesta prima che il payload venga deserializzato. Se AMSI non è attivabile, la rotazione delle chiavi dopo la patch non è opzionale.
- Togliere
/_trust/default.aspxdalla raggiungibilità internet. Se il sign-in federato non è usato dall'esterno, bloccare il path sul reverse proxy o sul WAF. Nella maggior parte dei deployment quell'endpoint non ha alcuna ragione di essere esposto al mondo. - Bloccare sul perimetro le richieste POST verso
/_trust/default.aspxcon cookie sovradimensionati: il cookie delSecurityContextTokencontraffatto ha dimensioni anomale. - Scollegare la farm da internet se è esposta e non può essere né patchata né protetta con AMSI entro la scadenza KEV. La required action di CISA consente esplicitamente di dismettere il prodotto quando le mitigazioni non sono disponibili.
4. Caccia alla compromissione
Assumere l'esposizione se il server è stato raggiungibile da internet e non aggiornato in un qualsiasi momento fra il 14 luglio e l'installazione della patch. La caccia si svolge su quattro superfici.
Log IIS — cercare il tentativo di accesso iniziale e i pattern di lignaggio ToolShell riportati da Resecurity:
# POST verso il ricevitore di sign-in federato
findstr /i "_trust/default.aspx" C:\inetpub\logs\LogFiles\W3SVC*\*.log | findstr "POST"
# ToolPane in edit mode con referer SignOut contraffatto
findstr /i "ToolPane.aspx" C:\inetpub\logs\LogFiles\W3SVC*\*.log | findstr /i "DisplayMode=Edit"
Filesystem — qualsiasi .aspx o .axd nelle directory layouts più recente dell'ultimo deployment legittimo va considerato sospetto finché non si dimostra il contrario:
$p = @(
"C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\TEMPLATE\LAYOUTS",
"C:\inetpub\wwwroot\wss\VirtualDirectories"
)
Get-ChildItem $p -Recurse -Include *.aspx,*.asmx,*.ashx,*.axd -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-30) } |
Select-Object FullName, LastWriteTime, Length | Sort-Object LastWriteTime -Descending
IOC nominati nel report Resecurity: spinstall0.aspx, info3.aspx, AssetHandler.axd, FarmAuthNative.dll.
Configurazione IIS — la persistenza via modulo è quella che sopravvive alla bonifica delle web shell:
Get-WebGlobalModule | Select-Object Name, Image | Sort-Object Name
%windir%\system32\inetsrv\appcmd.exe list config /section:system.webServer/globalModules
Confrontare ogni modulo nativo con una farm di riferimento sana. Gli Event ID 29 e 50 del canale IIS-Configuration nel registro eventi di Windows registrano aggiunte di moduli e modifiche di configurazione.
Genealogia dei processi — w3wp.exe che genera cmd.exe, powershell.exe o csc.exe è il segnale singolo a più alta affidabilità disponibile. Che il worker process di SharePoint compili C# a runtime è normale esattamente una volta, al primo caricamento pagina dopo un deployment; non è normale alle 03:00 di domenica.
Mappatura ATT&CK della catena: T1190 (exploit public-facing application) → T1505.003 (web shell) → T1552.001 (credenziali nei file, cioè le machine key in web.config) → T1546.003/T1505.004 (persistenza via modulo IIS) → T1078 (valid accounts, tramite ViewState contraffatto) → T1041 (esfiltrazione sul canale C2).
5. Bonifica e verifica
Ruotare le machine key. È il passo che chiude l'incidente, e la patch non lo fa al posto vostro.
# Rotazione per ogni web application, poi riavvio di IIS su tutta la farm
Get-SPWebApplication | ForEach-Object { Update-SPMachineKey -WebApplication $_ }
# su ogni server della farm:
iisreset.exe /noforce
In alternativa da Amministrazione centrale → Monitoraggio → Verifica definizioni processi → Machine Key Rotation Job → Esegui ora, secondo la guida Microsoft sulla gestione delle chiavi ViewState. Su Subscription Edition 25H1 e sul public update di settembre 2025 per 2016/2019 la rotazione automatica è disponibile: va attivata.
L'ordine conta, e nella pratica viene sbagliato più spesso di quanto non venga azzeccato: prima la patch, poi la rotazione. Ruotare una chiave su un server ancora vulnerabile significa consegnarne all'attaccante una nuova alla sua richiesta successiva.
Poi si chiude il lavoro:
- Ruotare le password dell'account di servizio della farm e delle identità degli application pool, insieme a ogni credenziale conservata nel Secure Store Service.
- Rimuovere web shell e moduli IIS nativi non riconosciuti; rieseguire poi le scansioni su filesystem e
globalModulesper confermare che non ricompaiano. - Verificare l'impronta dell'account farm SharePoint in Active Directory: appartenenze a gruppi aggiunte dopo il 14 luglio, nuovi service principal, modifiche alla delega Kerberos.
- Rivedere il traffico in uscita dai server SharePoint degli ultimi quattordici giorni, in particolare HTTPS continuativo a piccoli blocchi verso destinazioni che la farm non ha mai contattato prima.
- Ripetere il test. Dopo la rotazione, rigiocare l'attacco: un
__VIEWSTATEfirmato con la vecchia chiave viene ancora validato? Se sì, la rotazione non ha avuto effetto su tutte le web application e su tutti i server, che è la modalità di fallimento più comune di questa remediation.
Il passo 5 è quello che salta sempre, ed è l'unico che produce una prova invece di un'intenzione.
Dove la validazione continua e avversariale cambia l'esito
Tutto quanto sopra presuppone di saper rispondere a una domanda: dopo tutto questo lavoro, il server è davvero pulito? Uno scanner non può dirvelo. Legge il numero di build, lo confronta con 16.0.10417.20175 e riporta conforme. Non firma un ViewState con la chiave che avreste dovuto ritirare per vedere se la farm lo accetta.
È questa la distanza che lo swarm di 10 agenti AI di Zero Hunt è costruito per colmare. L'agente Recon mappa quali endpoint /_trust/default.aspx sono davvero raggiungibili dall'esterno, non quali lo schema di rete dichiara interni. L'agente Exploit scrive la catena da zero per il vostro ambiente: codice generativo per singolo target, prodotto da un LLM locale sull'appliance, non un PoC scaricato che una firma WAF già conosce. L'agente Post-Exploit va a prendere ciò che conta: tenta l'estrazione delle machine key e poi, dopo la vostra rotazione, tenta di riutilizzare la chiave vecchia. Un ViewState contraffatto che continua a eseguire è un finding. Un ViewState contraffatto che fallisce è una prova, marcata temporalmente e firmata ECDSA al momento della scrittura: esattamente l'artefatto che l'auditor chiederà quando BOD 26-04 e NIS2 vorranno sapere cosa avete fatto fra il 22 e il 25 luglio. Ogni skill dello swarm viene sottoposta a backtest nell'AI Gym contro Vulhub, NYU CTF Bench e 314 task black-box basati su CVE prima di avvicinare una farm di produzione, e l'intero sistema gira on-premise senza callback verso il cloud: dettaglio non secondario quando il target è l'archivio che contiene i vostri fascicoli legali e HR. Interrogato con questo pattern d'attacco, il Knowledge RAG del motore ha fatto emergere CVE-2025-53770 — ToolShell — entro tre hop, senza suggerimenti: la macchina quel film lo aveva già visto, e ha riconosciuto il sequel dal solo percorso di deserializzazione.
La metà del problema che riguarda l'esfiltrazione richiede un sensore diverso. Trasferimenti HTTPS a blocchi da 5 MB in uscita da un server documentale, preparati da librerie nascoste sotto un account di farm legittimo, non fanno scattare alcuna firma e non sembrano sbagliati in nessuna singola richiesta. Il modello di AI Traffic Analysis di Zero Hunt — quattro teste di inferenza parallele per traffico sospetto, classificazione malware, identificazione del tipo di attacco e fingerprinting applicativo, addestrato su miliardi di sequenze PCAP e operativo a 2,7+ Gbit/s sulla GPU dell'appliance — valuta la forma della sessione invece del payload, mentre il trasferimento è in corso e non nel digest SIEM del mattino dopo. Per un'intrusione la cui proprietà distintiva è che ogni richiesta inviata è crittograficamente valida, il comportamento è l'unica cosa rimasta da rilevare.
Quattro CVE SharePoint in ventidue giorni non sono un problema di patching che si vince applicando patch più in fretta. Ecco come la validazione continua si differenzia dallo scanning periodico, oppure scriveteci se volete rigiocare l'ondata SharePoint di luglio contro la vostra farm.