Nach einem Jahr Entwicklung Projektveröffentlichung , das ein Modul für den PHP7-Interpreter bereitstellt, um die Sicherheit der Umgebung zu erhöhen und typische Fehler zu blockieren, die zu Sicherheitsanfälligkeiten in ausgeführten PHP-Anwendungen führen. Das Modul ermöglicht auch die Erstellung zur Behebung konkreter Probleme, ohne die Quelltexte der anfälligen Anwendung zu ändern, was für den Einsatz in Massenghosting-Systemen praktisch ist, bei denen es nicht möglich ist, alle Benutzeranwendungen auf dem neuesten Stand zu halten. Die Nebenkosten für das Modul werden als minimal eingeschätzt. Das Modul ist in C geschrieben, wird als Shared Library eingebunden („extension=snuffleupagus.so“ in php.ini) und unter der Lizenz LGPL 3.0.
Snuffleupagus bietet ein Regelwerk, das sowohl standardisierte Vorlagen zur Verbesserung der Sicherheit als auch die Erstellung eigener Regeln zur Kontrolle von Eingaben und Funktionsparametern ermöglicht. Zum Beispiel erlaubt die Regel „sp.disable_function.function(„system“).param(„command“).value_r(„[$|;&`\n]“).drop();“ die Einschränkung der Verwendung von Sonderzeichen in den Argumenten der Funktion system(), ohne die Anwendungen zu ändern. Eingebaute Methoden zum Blockieren solcher Sicherheitsanfälligkeiten wie Probleme mit der Datenserialisierung, der Verwendung der PHP-Funktion mail(), dem Leck von Cookie-Inhalten bei XSS-Angriffen, Problemen durch den Upload von Dateien mit ausführbarem Code (z. B. im Format ), minderwertiger Zufallszahlen-Generierung und von fehlerhaften XML-Konstruktionen.
Die von Snuffleupagus bereitgestellten Modi zur Erhöhung der PHP-Sicherheit:
- Automatisches Aktivieren der Flags „secure“ und „samesite“ (Schutz vor CSRF) für Cookies, von Cookies;
- Ein integriertes Regelset zur Erkennung von Spuren von Angriffen und Kompromittierung von Anwendungen;
- Zwangswerk Globale Aktivierung des Modus „“ (z. B. blockiert die Angabe einer Zeichenfolge, wenn ein ganzzahliger Wert erwartet wird) und Schutz vor ;
- Standardmäßiges Blockieren (z. B. Verbot von „phar://“) mit deren ausdrücklicher Genehmigung auf einer Whitelist;
- Verbot der Ausführung von Dateien, die schreibbar sind;
- Schwarze und weiße Listen für eval;
- Einschalten der obligatorischen TLS-Zertifikatüberprüfung bei der Verwendung von
curl; - Hinzufügen von HMAC zu serialisierten Objekten, um sicherzustellen, dass beim Deserialisieren die vom ursprünglichen Anwender gespeicherten Daten erhalten bleiben;
- Anfragetagebuchmodus;
- Blockierung des Ladens externer Dateien in libxml über Links in XML-Dokumenten;
- Möglichkeit, externe Handler (upload_validation) zur Überprüfung und Scannen hochgeladener Dateien anzuschließen;
Unter In der neuen Version: Verbesserte Unterstützung für PHP 7.4 und Implementierung der Kompatibilität mit der in Entwicklung befindlichen PHP 8-Version. Möglichkeit zum Protokollieren von Ereignissen über syslog hinzugefügt (zum Aktivieren wird die Direktive sp.log_media vorgeschlagen, die die Werte php oder syslog annehmen kann). Das standardmäßig vorgeschlagene Regelset wurde aktualisiert und enthält neue Regeln für kürzlich entdeckte Schwachstellen und Angriffstechniken auf Webanwendungen. Verbesserte Unterstützung für macOS und erweiterte Anwendung der Continuous Integration-Plattform auf Basis von GitLab.
Quelle: opennet.ru
