Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2024-38828 | Kitploit
Outils/GitHubGitHub/funcid/cve-2024-38828
Analyse des VulnérabilitésAnalyse de CodeExploitationSécurité WebApprentissage et Éducation
GitHubfuncid/cve-2024-38828

CVE-2024-38828

Voir le dépôt
il y a 1 anPas 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

Vulnérabilité CVE-2024-38828

Description

Le test vérifie le comportement/réaction dans Spring Framework avec et sans la vulnérabilité CVE-2024-38828. Dans ByteArrayHttpMessageConverter, la mémoire est allouée dans ByteArrayOutputStream en fonction de l'en-tête de requête Content-Length, ce qui peut ne pas correspondre à la réalité avec un corps de 0 octet. En cas de forte augmentation de ces requêtes (DoS), la mémoire est utilisée de manière sous-optimale, des nettoyages GC réguliers apparaissent et l'application commence à laguer. Je vais montrer comment implémenter/corriger cela ainsi que les métriques.

Graphiques des métriques

Description de la vulnérabilité

CVE-2024-38828 est une vulnérabilité de type Déni de service (DoS) dans Spring Framework qui permet à un attaquant de provoquer l'épuisement de la mémoire du serveur via un contrôleur Spring MVC avec un paramètre de type byte[].

Détails techniques

  • Versions vulnérables : Spring Framework 5.3.x (toutes les versions)
  • Type de vulnérabilité : Déni de service (DoS)
  • Vecteur d'attaque : requêtes HTTP POST avec Content-Length = 2 ^ 31 - 1
  • Impact : épuisement de la mémoire du serveur, conduisant à un refus de service

Solution

Correctif implémenté

  1. Création d'un HttpMessageConverter personnalisé pour traiter les tableaux d'octets
  2. Implémentation d'une vérification de la taille des données entrantes
  3. Utilisation d'une approche de flux pour traiter les gros payloads

Tests

Structure du projet

root@kitploit:~
.
├── src/
│   └── main/
│       └── java/
│           └── me/
│               └── func/
│                   └── demo/
│                       ├── config/
│                       │   └── WebConfig.java
│                       ├── converter/
│                       │   └── SafeByteArrayHttpMessageConverter.java
│                       ├── controller/
│                       │   └── DemoController.java
│                       └── DemoApplication.java
├── tests/
│   ├── load_test.py
│   └── results/
│       ├── результаты_теста.png
│       └── метрики.json
└── README.md

Paramètres du test

  • Nombre de requêtes : 6000
  • Nombre maximal de requêtes simultanées : 5
  • Délai entre les groupes de requêtes : 0.1 seconde
  • Taille de la requête : 1 octet
  • En-tête Content-Length : 2^31 - 1 (valeur maximale pour int)

Code du test

root@kitploit:~
def send_request(url):
    try:
        response = requests.post(
            url,
            data=b'0',  # Минимальный payload
            headers={
                'Content-Type': 'application/octet-stream',
                'Content-Length': str(2**31 - 1)  # Максимальный размер
            }
        )
        return response.status_code, response.text
    except Exception as e:
        return f"Ошибка: {str(e)}", None

Exécution des tests

  1. Installez les dépendances Python :
root@kitploit:~
pip install -r requirements.txt
  1. Lancez le test :
root@kitploit:~
python tests/load_test.py
Télécharger l’outil