SOC Prime Bias: Critico

05 Dic 2025 16:35

CVE-2025-55182 e CVE-2025-66478: Rilevamento ad Alta Fedeltà per RSC/Next.js RCE

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
CVE-2025-55182 e CVE-2025-66478: Rilevamento ad Alta Fedeltà per RSC/Next.js RCE
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riepilogo

Una falla di esecuzione di codice remoto interessa le applicazioni Next.js che utilizzano i React Server Components. Il problema può essere attivato senza alcun accesso precedente inviando una richiesta HTTP multipart specificamente creata. Sebbene esistano vari exploit pubblici proof-of-concept, molti sono inaffidabili o errati. L’articolo introduce una tecnica di rilevamento ad alta fedeltà che si basa su una caratteristica risposta di errore del server.

Indagine

I ricercatori hanno esaminato la logica di parsing del React Server Component e hanno scoperto che un riferimento a una proprietà delimitata da due punti può generare un errore 500 quando l’oggetto target è mancante. Hanno quindi creato un payload multipart che attiva costantemente questa condizione e hanno confermato un modello di risposta ripetibile. La regola di rilevamento proposta segnala risposte HTTP 500 che contengono il distintivo E{"digest" frammento nel corpo.

Mitigazione

I passaggi di mitigazione includono l’aggiornamento delle versioni interessate di Next.js a quelle che incorporano ulteriori misure di sicurezza attorno alla notazione dei due punti. Le organizzazioni dovrebbero implementare regole WAF per bloccare la struttura multipart dannosa e garantire che tutte le richieste in arrivo che toccano i React Server Components siano convalidate e sanitizzate.

Risposta

I team di sicurezza dovrebbero scansionare le applicazioni web esposte alla firma richiesta-risposta descritta e dare priorità alle correzioni per le istanze vulnerabili di Next.js. Se si sospetta un’esploitazione, isolare il server interessato, conservare e rivedere i log per le prove di esecuzione del codice e applicare le patch pertinenti senza indugi.

Flusso di Attacco

Stiamo ancora aggiornando questa parte. Iscriviti per ricevere notifiche

Avvisami

Esecuzione della Simulazione

Prerequisito: Il Controllo Preliminare di Telemetria e Baseline deve essere passato.

Ragionamento: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente i TTP identificati e mirare a generare esattamente la telemetria prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.

    • Narrativa dell’Attacco e Comandi:
      L’attaccante, avendo identificato che il target esegue una versione vulnerabile di Next.js, crea una richiesta multipart dannosa che imita un flusso di caricamento di asset legittimo. Impostando il User-Agent a Assetnote/1.0.0 e iniettando gli header interni di Next.js Next-Action: x e X-Nextjs-Request-Id: b5dce965, il payload attiva il componente server-side che deserializza dati non attendibili, causando un’eccezione a runtime. Il server risponde con HTTP 500 e include il digest serializzato (E{"digest), che la regola di rilevamento osserva.

    • Script di Test di Regressione:

      #!/usr/bin/env bash
      #
      # Simulazione di exploit per la regola di rilevamento RCE di Next.js (T1595.002)
      # Genera lo schema di pacchetti esatto che la regola Sigma si aspetta.
      #
      TARGET="http://127.0.0.1"
      ENDPOINT="/"
      USER_AGENT="Assetnote/1.0.0"
      BOUNDARY="----WebKitFormBoundary$(date +%s)"
      
      # Corpo multipart minimale; il contenuto è irrilevante per il rilevamento.
      read -r -d '' PAYLOAD <

      Esegui lo script su una macchina che può raggiungere il server web target. Lo stato HTTP previsto è 500 e il log degli errori del server conterrà la stringa E{"digest.

  • Comandi di Pulizia:

    # Nessuna modifica persistente sul target; basta rimuovere eventuali file temporanei localmente
    rm -f /tmp/exploit_payload.tmp 2>/dev/null || true