Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
seal-security-nuget-demo-net7 — .NET 7 fork de seal-security-nuget-demo : même scénario d'exploitation de la CVE-2024-21907, réorienté pour les clients verrouillés sur le SDK .NET 7. | Kitploit
Outils/GitHubGitHub/isecuritytw/seal-security-nuget-demo-net7
Analyse des VulnérabilitésDevSecOpsSécurité de la Chaîne LogistiqueApprentissage et ÉducationRessources Organisées
GitHubisecuritytw/seal-security-nuget-demo-net7

seal-security-nuget-demo-net7

.NET 7 fork de seal-security-nuget-demo : même scénario d'exploitation de la CVE-2024-21907, réorienté pour les clients verrouillés sur le SDK .NET 7.

Voir le dépôt
19il y a 5 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Démo Navigateur + CLI (NuGet/C#) — Édition .NET 7

Pourquoi un fork .NET 7 ?

Ceci est un fork reciblé du dépôt canonique seal-security-nuget-demo (qui cible net9.0). Le scénario d'exploitation, les contrôleurs et la liste des paquets scellés sont identiques — seul le TargetFramework diffère.

Il existe parce que la plupart des clients en entreprise ne peuvent pas migrer vers le dernier SDK .NET à la demande. .NET 7 a atteint la fin de support le 14 mai 2024, mais de nombreux environnements de production tournent encore dessus pour des raisons de compatibilité, de certification ou opérationnelles. C'est précisément le cas d'usage pour lequel Seal Security est conçu : lorsqu'un client ne peut pas (ou ne veut pas) effectuer une montée de version majeure, Seal corrige la dépendance vulnérable sur place dans la même version, sans changement d'API publique ni modification de code dans l'application du client. Cette démo permet d'avoir cette conversation sur la pile technologique réelle du client au lieu de lui demander d'installer d'abord net8/net9.

Le fork épingle le SDK à 7.0.x via global.json afin que des mises à niveau accidentelles ne s'infiltrent pas pendant la démo.


Vue d'ensemble

Cette application de démonstration est une simple page d'accueil ASP.NET Core qui utilise Newtonsoft.Json 12.0.2 pour analyser la saisie utilisateur comme objet de configuration. L'application possède un champ de nom — saisissez votre nom, cliquez sur Go, et elle affiche « Welcome, alice! ». En coulisses, elle fait passer la saisie par JsonConvert.DeserializeObject<NestedConfig>() de Newtonsoft.Json. C'est tout — une utilisation tout à fait standard d'une bibliothèque JSON populaire.

Le problème est que Newtonsoft.Json 12.0.2 (et les versions antérieures à 13.0.1) présente CVE-2024-21907 — une vulnérabilité de déni de service de haute sévérité avec un score CVSS de 7,5 (ÉLEVÉ). Cette démo montre comment Seal Security corrige la vulnérabilité sur place sans exiger de mise à niveau de version majeure.


La vulnérabilité : CVE-2024-21907

Quelle est la vulnérabilité ?

La méthode JsonConvert.DeserializeObject<T>() de Newtonsoft.Json peut être exploitée en créant des charges utiles JSON profondément imbriquées. Lors de la désérialisation dans un objet typé (POCO), le JsonSerializerInternalReader de la bibliothèque effectue des appels véritablement récursifs (CreateValueInternal → CreateObject → PopulateObject → SetPropertyValue → CreateValueInternal) qui provoquent un débordement de pile, entraînant le plantage de l'application (déni de service).

Comment fonctionne l'exploit

L'application prend la saisie utilisateur et l'analyse via Newtonsoft.Json. Si la saisie est une URL, l'application récupère d'abord le contenu — un modèle réaliste utilisé par les chargeurs de configuration, les testeurs d'API et les récepteurs de webhooks :

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

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

Saisie normale : Saisissez alice → affiche « Welcome, alice! »

Exploit : Collez cette URL dans le champ de nom et cliquez sur Go :

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

L'application détecte qu'il s'agit d'une URL, récupère le json-payload (JSON profondément imbriqué {"n":{"n":{...}}}), et le désérialise via Newtonsoft.Json dans la classe récursive NestedConfig — déclenchant le débordement de pile.

Le JsonSerializerInternalReader récure à travers CreateValueInternal → CreateObject → PopulateObject → SetPropertyValue pour chaque niveau d'imbrication. À environ 5 000 niveaux de profondeur, cela épuise la pile du thread et l'application plante avec une StackOverflowException — le processus meurt instantanément (aucune gestion d'erreur gracieuse possible).

Impact dans le monde réel

Avec cette vulnérabilité, les attaquants peuvent :

  • Faire planter l'application en envoyant des charges utiles JSON malveillantes
  • Provoquer un déni de service affectant tous les utilisateurs
  • Épuiser les ressources du serveur par une exploitation répétée
  • Contourner la limitation de débit car chaque requête fait planter le processus

Pourquoi ne pas simplement passer à Newtonsoft.Json 13.0.1 ?

Le correctif publiquement disponible exige une mise à niveau vers la version 13.0.1. Cependant, les mises à niveau de version majeure introduisent souvent :

  • Des changements d'API cassants dans le comportement de sérialisation
  • Des problèmes de compatibilité avec d'autres bibliothèques attendant des versions spécifiques
  • Des exigences de tests approfondis pour tous les chemins de code de sérialisation/désérialisation
  • Un risque de changements de comportement à l'exécution en production

Cela fait du correctif « il suffit de mettre à niveau » un projet qui peut facilement prendre des semaines de temps de développement — laissant la vulnérabilité ouverte entre-temps.

Comment Seal Security le corrige

La version corrigée de Seal (12.0.2-sp1) ajoute une protection de profondeur de récursion sans changer aucune API publique. Le correctif :

  1. Ajoute des limites MaxDepth par défaut pour empêcher une récursion illimitée
  2. Gère gracieusement l'imbrication profonde avec des exceptions appropriées au lieu d'un débordement de pile
  3. Ne change aucune API publique — le code existant continue de fonctionner sans modification

C'est la même stratégie d'atténuation appliquée dans Newtonsoft.Json 13.0.1, rétroportée en 12.0.2 comme remplacement direct.


Autres dépendances vulnérables

Cette démo inclut également d'autres paquets NuGet vulnérables que Seal Security peut corriger :

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

Vulnérabilité d'entité externe XML (XXE) dans l'analyse de configuration XML de log4net. Un attaquant qui peut contrôler le fichier de configuration log4net peut :

  • Lire des fichiers arbitraires depuis le serveur
  • Effectuer une falsification de requête côté serveur (SSRF)
  • Provoquer un déni de service

Note sur System.Net.Http : La démo net9 canonique inclut également une référence vulnérable System.Net.Http 4.3.0 pour CVE-2017-0249. Nous l'avons omise de ce fork net7 car sur .NET 7, System.Net.Http fait partie de la BCL et la référence de paquet autonome est un méta-paquet vestigial — il présente des cas limites connus avec dotnet add package --source <local-nupkg>, ce qui est exactement la façon dont la CLI Seal applique les versions scellées. Le supprimer rend l'étape seal fix fiable sans changer le scénario de la démo (HttpClient fonctionne toujours parfaitement ; le runtime le fournit).


Prérequis

  • SDK .NET 7.0 (téléchargement depuis Microsoft)
  • CLI Seal Security v0.3.238 pour Windows x64 (téléchargement direct)

    Les binaires CLI Windows ont été interrompus après v0.3.238. v0.3.238 est entièrement fonctionnel pour la remédiation NuGet sur Windows.

  • Jeton Seal Security (depuis le tableau de bord Seal)

Un guide détaillé d'installation et d'exécution sur Windows Server est disponible dans README-WINDOWS-SERVER.md. Le démarrage rapide ci-dessous couvre les mêmes étapes sous forme condensée.


Démarrage rapide (Windows Server local)

1. Définir les variables d'environnement

PowerShell :

$env:SEAL_TOKEN = "votre-jeton-seal-ici"
$env:SEAL_PROJECT = "nuget-demo-net7"
Télécharger l’outil