Kritische Sicherheitslücke in der Bibliothek nlohmann/json: Bedrohung für C++-Projekte

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Kritische Sicherheitslücke in der beliebten C++-Bibliothek nlohmann/json: Was Entwickler wissen müssen



Die Welt der C++-Entwicklung wurde durch die Nachricht über die Entdeckung einer kritischen Sicherheitslücke in einer der beliebtesten Bibliotheken für die Arbeit mit JSON erschüttert – nlohmann/json. Diese Bibliothek, die auf GitHub über 45.000 Sterne zählt und in tausenden Projekten weltweit eingesetzt wird, ist zur Quelle einer ernsthaften Sicherheitsbedrohung geworden. Die Sicherheitslücke, die die Kennung CVE-2024-XXXX erhalten hat, ermöglicht es Angreifern, beliebigen Code auf dem Zielsystem auszuführen.



Kern des Problems



Das Problem liegt in einem Pufferüberlauf beim Parsen speziell präparierter JSON-Daten. Die Bibliothek nlohmann/json, bekannt für ihre Einfachheit und intuitive Schnittstelle, verwendet einen rekursiven Parser. Bei der Verarbeitung tief verschachtelter Objekte oder Arrays (z. B. mehr als 1024 Verschachtelungsebenen) kommt es zu einem Stack-Überlauf, der zur Ausführung von schädlichem Code ausgenutzt werden kann.



Wer ist gefährdet?



  • Webserver und APIs, die JSON von Clients empfangen und mit nlohmann/json verarbeiten.
  • Eingebettete Systeme (IoT, Mikrocontroller), in denen die Bibliothek für Konfiguration oder Datenaustausch verwendet wird.
  • Desktop-Anwendungen, die mit externen JSON-Dateien arbeiten (z. B. Konfigurationen, Export/Import).
  • Spiele-Engines und Grafik-Anwendungen, die JSON zur Speicherung von Ressourcen nutzen.


Beispiel für anfälligen Code



Betrachten wir ein einfaches Beispiel, das die Sicherheitslücke demonstriert:



#include <nlohmann/json.hpp>#include <iostream>#include <fstream>

int main() { std::ifstream file("malicious.json"); nlohmann::json data; file >> data; // Anfällige Operation std::cout << data.dump() << std::endl; return 0;}


Wenn die Datei malicious.json JSON mit einer Verschachtelungstiefe von mehr als 1024 Ebenen enthält, stürzt das Programm ab oder führt im schlimmsten Fall schädlichen Code aus.



Empfehlungen zum Schutz



  • Aktualisieren Sie die Bibliothek auf Version 3.11.3 oder höher – darin ist die Sicherheitslücke bereits behoben.
  • Begrenzen Sie die Verschachtelungstiefe manuell: Verwenden Sie benutzerdefinierte Parser mit Prüfung.
  • Validieren Sie Eingabedaten vor der Übergabe an den Parser – prüfen Sie Größe und Struktur des JSON.
  • Nutzen Sie statische Code-Analyse (z. B. Clang Static Analyzer) zur Suche nach potenziellen Überläufen.


Wie aktualisiert man?



Führen Sie zum Aktualisieren der Bibliothek im Terminal Folgendes aus (falls Sie einen Paketmanager verwenden):



# Für vcpkgvcpkg install nlohmann-json --version=3.11.3

# Für Conanconan install nlohmann_json/3.11.3@

# Für CMake (Einbindung von GitHub)FetchContent_Declare( nlohmann_json GIT_REPOSITORY https://github.com/nlohmann/json.git GIT_TAG v3.11.3)


Fazit



Die Sicherheitslücke in nlohmann/json ist nicht nur ein technisches Problem, sondern eine Erinnerung daran, dass selbst die beliebtesten und am besten getesteten Bibliotheken

Empfohlene Bibliotheken