CWE ID: 642
Name: External Control of Critical State Data
Das Produkt speichert sicherheitskritische Zustandsinformationen über seine Benutzer oder das Produkt selbst an einem Ort, der für unbefugte Akteure zugänglich ist.
Effektivität: Unknown
Beschreibung: Es ist entscheidend, alle potenziellen Zugriffsstellen für Angreifer zu verstehen. Beispielsweise gehen einige Programmierer fälschlicherweise davon aus, dass Cookies und versteckte Formularfelder nicht von einem Angreifer manipuliert werden können, oder sie berücksichtigen nicht, dass Environment Variables vor der Ausführung eines privilegierten Programms verändert werden können.
Effektivität: Unknown
Beschreibung: Speichern Sie Zustandsinformationen ausschließlich serverseitig. Stellen Sie sicher, dass das System seinen eigenen Zustand und den Benutzerzustand eindeutig und unmissverständlich verfolgt und Regeln für zulässige Zustandsübergänge definiert sind. Erlauben Sie keinerlei Anwendungsmachern, den Zustand direkt zu beeinflussen, außer durch legitime Aktionen, die zu Zustandsübergängen führen.
Effektivität: Unknown
Beschreibung: Für alle Sicherheitsprüfungen, die clientseitig durchgeführt werden, stellen Sie sicher, dass diese auch serverseitig dupliziert werden, um CWE-602 zu vermeiden. Angreifer können clientseitige Prüfungen umgehen, indem sie Werte nach der Prüfung modifizieren oder den Client so verändern, dass die clientseitigen Prüfungen vollständig entfernt werden. Anschließend würden diese modifizierten Werte an den Server übermittelt.
Effektivität: Unknown
Beschreibung: Bei der Verwendung von PHP konfigurieren Sie die Anwendung so, dass register_globals
nicht verwendet wird. Entwickeln Sie die Anwendung während der Implementierung so, dass sie sich nicht auf diese Funktionalität stützt. Seien Sie jedoch vorsichtig bei der Implementierung einer register_globals
-Emulation, die anfällig für Schwachstellen wie CWE-95, CWE-621 und ähnlichen Problemen sein könnte.
Effektivität: Unknown
Beschreibung: Nutzen Sie automatisierte statische Analyse-Tools, die auf diese Art von Schwachstelle abzielen. Viele moderne Techniken verwenden Data-Flow-Analyse, um die Anzahl der false positives zu minimieren. Dies ist keine perfekte Lösung, da eine 100-prozentige Genauigkeit und Abdeckung nicht realisierbar sind.
Effektivität: Unknown
Beschreibung: Setzen Sie dynamische Tools und Techniken ein, die mit dem Produkt interagieren und große Testsuiten mit vielfältigen Eingaben verwenden, wie beispielsweise fuzz testing (Fuzzing), robustness testing und fault injection. Der Betrieb des Produkts kann sich verlangsamen, aber es sollte nicht instabil werden, abstürzen oder falsche Ergebnisse generieren.
Effektivität: Unknown
Beschreibung: Nutzen Sie Tools und Techniken, die eine manuelle (menschliche) Analyse erfordern, wie beispielsweise penetration testing, threat modeling und interaktive Tools, die es dem Tester ermöglichen, eine aktive Session aufzuzeichnen und zu modifizieren. Diese können effektiver sein als rein automatisierte Techniken. Dies gilt insbesondere für Schwachstellen, die mit dem Design und den Geschäftsregeln in Zusammenhang stehen.