Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
seal-security-nuget-demo-net7 — .NET 7 fork di seal-security-nuget-demo: stessa storia di exploit CVE-2024-21907, reindirizzato per i clienti vincolati a .NET SDK 7. | Kitploit
Strumenti/GitHubGitHub/isecuritytw/seal-security-nuget-demo-net7
Analisi delle VulnerabilitàDevSecOpsSicurezza della Supply ChainApprendimento e FormazioneRisorse Curate
GitHubisecuritytw/seal-security-nuget-demo-net7

seal-security-nuget-demo-net7

.NET 7 fork di seal-security-nuget-demo: stessa storia di exploit CVE-2024-21907, reindirizzato per i clienti vincolati a .NET SDK 7.

Vedi Repository
195 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

Demo Browser + CLI (NuGet/C#) — Edizione .NET 7

Perché un fork .NET 7?

Questo è un fork riadattato del demo canonico seal-security-nuget-demo (che punta a net9.0). La storia dell'exploit, i controller e l'elenco dei pacchetti sigillati sono identici — cambia solo la TargetFramework.

Esiste perché la maggior parte dei clienti enterprise non può passare al più recente .NET SDK su richiesta. .NET 7 ha raggiunto la fine del supporto il 14 maggio 2024, ma molti ambienti di produzione reali continuano a usarlo per motivi di compatibilità, certificazione o operatività. Questo è esattamente il caso per cui Seal Security è progettata: quando un cliente non può (o non vuole) fare un salto di versione maggiore, Seal corregge la dipendenza vulnerabile sul posto mantenendo la stessa versione, senza modifiche all'API pubblica e senza modifiche al codice dell'applicazione del cliente. Questo demo consente di avere questa conversazione sullo stack reale del cliente invece di chiedergli di installare prima net8/net9.

Il fork fissa l'SDK alla versione 7.0.x tramite global.json così da evitare che aggiornamenti accidentali si insinuino durante il demo.


Panoramica

Questa applicazione demo è una semplice pagina di benvenuto ASP.NET Core che usa Newtonsoft.Json 12.0.2 per analizzare l'input dell'utente come oggetto di configurazione. L'app ha un campo nome — digita il tuo nome, clicca su Go, e mostra "Welcome, alice!". Sotto il cofano passa l'input attraverso JsonConvert.DeserializeObject<NestedConfig>() di Newtonsoft.Json. Tutto qui — un utilizzo completamente standard di una popolare libreria JSON.

Il problema è che Newtonsoft.Json 12.0.2 (e le versioni precedenti alla 13.0.1) presenta CVE-2024-21907 — una vulnerabilità Denial of Service ad alta gravità con punteggio CVSS di 7.5 (ALTO). Questo demo mostra come Seal Security corregge la vulnerabilità sul posto senza richiedere un aggiornamento di versione maggiore.


La Vulnerabilità: CVE-2024-21907

Cos'è la vulnerabilità?

Il metodo JsonConvert.DeserializeObject<T>() di Newtonsoft.Json può essere sfruttato creando payload JSON annidati in profondità. Quando si deserializza in un oggetto tipizzato (POCO), il JsonSerializerInternalReader della libreria esegue chiamate realmente ricorsive (CreateValueInternal → CreateObject → PopulateObject → SetPropertyValue → CreateValueInternal) che causano stack overflow, portando al crash dell'applicazione (Denial of Service).

Come funziona l'exploit

L'app prende l'input dell'utente e lo analizza tramite Newtonsoft.Json. Se l'input è un URL, l'app recupera prima il contenuto — un pattern realistico usato da config loader, API tester e webhook receiver:

public class NestedConfig
{
    [JsonProperty("n")]
    public NestedConfig? N { get; set; }
}

var config = JsonConvert.DeserializeObject<NestedConfig>(name);

Input normale: Digita alice → mostra "Welcome, alice!"

Exploit: Incolla questo URL nel campo nome e clicca su Go:

https://raw.githubusercontent.com/seal-sec-demo-2/json-payload/main/payload.json

L'app rileva che è un URL, recupera il json-payload (JSON annidato in profondità {"n":{"n":{...}}}) e lo deserializza tramite Newtonsoft.Json nella classe ricorsiva NestedConfig — innescando lo stack overflow.

Il JsonSerializerInternalReader ricorre attraverso CreateValueInternal → CreateObject → PopulateObject → SetPropertyValue per ogni livello di annidamento. A circa ~5.000 livelli di profondità, questo esaurisce lo stack del thread e l'applicazione va in crash con una StackOverflowException — il processo muore all'istante (nessuna gestione degli errori elegante possibile).

Impatto nel mondo reale

Con questa vulnerabilità, gli attaccanti possono:

  • Mandare in crash l'applicazione inviando payload JSON dannosi
  • Causare Denial of Service che colpisce tutti gli utenti
  • Esaurire le risorse del server attraverso sfruttamenti ripetuti
  • Bypassare il rate limiting poiché ogni richiesta manda in crash il processo

Perché non basta aggiornare a Newtonsoft.Json 13.0.1?

La correzione pubblicamente disponibile richiede l'aggiornamento alla versione 13.0.1. Tuttavia, aggiornare le versioni maggiori spesso introduce:

  • Modifiche alle API che rompono la compatibilità nel comportamento di serializzazione
  • Problemi di compatibilità con altre librerie che si aspettano versioni specifiche
  • Requisiti di test estesi per tutti i percorsi di codice di serializzazione/deserializzazione
  • Rischio di cambiamenti nel comportamento a runtime in produzione

Questo rende la correzione "basta aggiornare" un progetto che può facilmente richiedere settimane di tempo agli sviluppatori — lasciando la vulnerabilità aperta nel frattempo.

Come lo corregge Seal Security

La versione corretta di Seal (12.0.2-sp1) aggiunge protezione sulla profondità di ricorsione senza cambiare alcuna API pubblica. La correzione:

  1. Aggiunge limiti MaxDepth predefiniti per prevenire ricorsioni illimitate
  2. Gestisce con eleganza l'annidamento profondo con eccezioni appropriate invece dello stack overflow
  3. Non cambia alcuna API pubblica — il codice esistente continua a funzionare senza modifiche

Questa è la stessa strategia di mitigazione applicata in Newtonsoft.Json 13.0.1, riportata alla 12.0.2 come sostituto drop-in.


Altre Dipendenze Vulnerabili

Questo demo include anche altri pacchetti NuGet vulnerabili che Seal Security può correggere:

log4net 2.0.5 - CVE-2018-1285 (CVSS 9.8 CRITICO)

Vulnerabilità XML External Entity (XXE) nell'analisi della configurazione XML di log4net. Un attaccante che può controllare il file di configurazione di log4net può:

  • Leggere file arbitrari dal server
  • Eseguire Server-Side Request Forgery (SSRF)
  • Causare Denial of Service

Nota su System.Net.Http: Il demo canonico net9 include anche un riferimento vulnerabile a System.Net.Http 4.3.0 per CVE-2017-0249. L'abbiamo omesso da questo fork net7 perché su .NET 7 System.Net.Http fa parte della BCL e il riferimento al pacchetto standalone è un meta-pacchetto vestigiale — ha casi limite noti con dotnet add package --source <local-nupkg>, che è esattamente il modo in cui la CLI Seal applica le versioni sigillate. Rimuoverlo rende il passaggio seal fix affidabile senza cambiare la storia del demo (HttpClient funziona comunque perfettamente; lo fornisce il runtime).


Prerequisiti

  • .NET 7.0 SDK (scarica da Microsoft)
  • Seal Security CLI v0.3.238 per Windows x64 (download diretto)

    I binari CLI per Windows sono stati interrotti dopo la v0.3.238. La v0.3.238 è completamente funzionale per la correzione NuGet su Windows.

  • Seal Security Token (dalla dashboard Seal)

Una guida dettagliata per installazione ed esecuzione su Windows Server è in README-WINDOWS-SERVER.md. La Guida Rapida qui sotto copre gli stessi passaggi in forma condensata.


Guida Rapida (Windows Server Locale)

1. Imposta le Variabili d'Ambiente

PowerShell:

$env:SEAL_TOKEN = "your-seal-token-here"
$env:SEAL_PROJECT = "nuget-demo-net7"

2. Esegui l'App Vulnerabile (Prima di Seal)

cd seal-security-nuget-demo-net7

# Ripristina (scarica da nuget.org e dal feed Seal — vedi nuget.config)
dotnet restore

# Compila ed esegui
dotnet build
dotnet run

Apri http://localhost:5000 — l'app è in esecuzione con dipendenze vulnerabili.

Scarica lo strumento