Skip to content
KitploitKITPLOIT
StrumentiBlog
Log in
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-33439 — Prima implementazione di exploit condivisa pubblicamente per CVE-2026-33439 (RCE pre-autenticazione OpenAM tramite deserializzazione di jato.clientSession). | Kitploit
Strumenti/GitHubGitHub/themalwareguardian/cve-2026-33439
Analisi delle VulnerabilitàAnalisi del CodiceExploitReverse EngineeringSfruttamento di Applicazioni WebAnalisi MalwarePenetration TestingApprendimento e FormazioneSviluppo Payload
Binary Exploitation
Lab e Pratica
GitHubthemalwareguardian/cve-2026-33439

CVE-2026-33439

Prima implementazione di exploit condivisa pubblicamente per CVE-2026-33439 (RCE pre-autenticazione OpenAM tramite deserializzazione di jato.clientSession).

Vedi Repository
21375 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

🐞 CVE-2026-33439: OpenAM Pre-Auth RCE via jato.clientSession Deserialization

Intuizione umana + analisi assistita da IA + reverse engineering + advisory → exploit

Prima implementazione di exploit condivisa pubblicamente per CVE-2026-33439

Vulnerabilità di deserializzazione Java non autenticata in ForgeRock OpenAM che consente l'esecuzione remota completa di codice tramite oggetti di sessione JATO appositamente costruiti. Lo stesso fiume scorre due volte: hanno corretto jato.pageSession (CVE-2021-35464) e si sono dimenticati di jato.clientSession (CVE-2026-33439). Una catena di gadget di deserializzazione non chiede credenziali.




📑 Indice dei contenuti

  • Panoramica
  • La discendenza di CVE-2021-35464
  • Analisi della vulnerabilità CVE-2026-33439
    📂
    • Causa principale
    • Versioni interessate
    • Superficie d'attacco
  • La catena di gadget
    📂
    • Deserializzazione Java 101
    • Encoder.decodeHttp64
    • Interni della catena di gadget
  • Ambiente di laboratorio
    📂
    • Architettura
    • Configurazione
    • Accesso
  • Sfruttamento
    📂
    • Prerequisiti
    • Scoperta e ricognizione
    • Comprendere la codifica
    • Costruzione dell'exploit
    • Consegna del payload
    • Utilizzo dello strumento PoC
  • Mitigazione
  • Riferimenti



🎯 Panoramica

CVE-2026-33439 è una vulnerabilità di Remote Code Execution pre-autenticazione in OpenIdentityPlatform OpenAM (versioni precedenti alla 16.0.6). La vulnerabilità deriva dalla deserializzazione Java non sicura del parametro HTTP jato.clientSession all'interno di ClientSession.deserializeAttributes(), che chiama Encoder.deserialize() → ApplicationObjectInputStream.readObject() senza alcuna whitelist di classi applicata.

Un attaccante non autenticato invia una richiesta HTTP GET o POST appositamente costruita contenente un oggetto Java serializzato a qualsiasi endpoint JATO ViewBean la cui JSP renderizza tag <jato:form>. Al ricevimento, il server deserializza l'oggetto senza validazione, attivando una catena di gadget costruita interamente con classi incluse nel WAR di OpenAM – senza richiedere librerie esterne – ed eseguendo comandi OS arbitrari come utente del processo applicativo.

Vettore 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 → 9.3 Critico

Vettore CVSS 3.1: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H → 9.8 Critico




🧬 La discendenza di CVE-2021-35464

Questa vulnerabilità è una regressione diretta della correzione incompleta applicata dopo CVE-2021-35464.

  • CVE-2021-35464 (ForgeRock AM / OpenAM): RCE pre-autenticazione tramite deserializzazione non sicura del parametro jato.pageSession. Ampiamente sfruttata in natura; elencata nel KEV di CISA. La correzione ha introdotto WhitelistObjectInputStream all'interno di ConsoleViewBeanBase.deserializePageAttributes() – una sottoclasse personalizzata di ObjectInputStream che controlla ogni nome di classe rispetto a una allowlist hardcoded di ~40 classi sicure prima di istanziarla.

  • CVE-2026-33439 (OpenAM ≤ 16.0.5): La correzione è stata applicata solo a jato.pageSession. Il parametro jato.clientSession – gestito da un percorso di codice completamente separato in ClientSession.deserializeAttributes() – non è mai stato corretto e utilizza ancora Encoder.deserialize() → ApplicationObjectInputStream senza filtri, che chiama ObjectInputStream.readObject() senza whitelist di classi.

Il primitivo d'attacco è lo stesso. Il sink di deserializzazione è diverso. È cambiato solo il nome del parametro.




🔬 Analisi della vulnerabilità CVE-2026-33439

Causa principale

JATO serializza lo stato della vista UI in parametri HTTP denominati jato.pageSession e jato.clientSession. Quando arriva una richiesta, OpenAM deserializza questi parametri per ripristinare lo stato della UI prima di renderizzare la risposta. I due parametri seguono percorsi di codice completamente diversi.

Il percorso di codice corretto (post-CVE-2021-35464) per jato.pageSession:```java // PATCHED - ConsoleViewBeanBase.deserializePageAttributes() ObjectInputStream ois = new WhitelistObjectInputStream(new ByteArrayInputStream(decoded)); // class whitelist enforced - gadget chains blocked Object obj = ois.readObject();

Il percorso di codice non patchato per jato.clientSession (vulnerabile):```java
// ClientSession.java
protected ClientSession(RequestContext context) {
	this.encodedSessionString =
		context.getRequest().getParameter("jato.clientSession");
}

protected void deserializeAttributes() {
	if (this.encodedSessionString != null
		&& this.encodedSessionString.trim().length() > 0) {
		this.setAttributes(
			(Map) Encoder.deserialize(
				// VULNERABLE - URL-safe base64 decode then plain ObjectInputStream
				Encoder.decodeHttp64(this.encodedSessionString), false)
		);
	}
}

Encoder.deserialize() costruisce un semplice ApplicationObjectInputStream - una sottoclasse di ObjectInputStream senza filtraggio delle classi. Qualsiasi classe sul classpath JVM può essere istanziata. La deserializzazione viene attivata durante il rendering JSP ogni volta che viene renderizzato un tag < jato:form >:``` getClientSession() → hasAttributes() → getEncodedString() → isValid() → ensureAttributes() → deserializeAttributes()

---

<div id="vulnerability_affected"/>

### ***Versioni interessate***

| Prodotto                    | Vulnerabile                                     | Corretto |
|-----------------------------|-------------------------------------------------|----------|
| OpenIdentityPlatform OpenAM | ≤ 16.0.5                                        | 16.0.6   |
| ForgeRock AM (downstream)   | Potenzialmente interessato a seconda della discendenza delle patch | -        |

---

<div id="vulnerability_attacksurface"/>

### ***Superficie di attacco***

Qualsiasi endpoint JATO ViewBean il cui JSP contiene un tag *< jato:form >* è sfruttabile in pre-autenticazione:

| Endpoint                  | Scopo                              |
|---------------------------|------------------------------------|
| /ui/PWResetUserValidation | Reimpostazione password - input identità utente |
| /ui/PWResetQuestion       | Reimpostazione password - domande di sicurezza  |
Scarica lo strumento