Im Rahmen des Projekts Ein Modul zur Anbindung an den PHP7-Interpreter, das dazu dient, die Sicherheit der Umgebung zu erhöhen und typische Fehler zu blockieren, die zu Schwachstellen in ausgeführten PHP-Anwendungen führen können. Das Modul ermöglicht zudem die Erstellung virtueller Patches zur Behebung spezifischer Probleme, ohne dass die Quelltexte der anfälligen Anwendung geändert werden müssen. Dies ist besonders praktisch für Systeme im Shared Hosting, in denen es schwierig ist, alle benutzergenerierten Anwendungen auf dem neuesten Stand zu halten. Das Modul ist in C geschrieben und wird als Shared Library eingebunden („extension=snuffleupagus.so“ in php.ini) und unter der LGPL 3.0-Lizenz bereitgestellt.
Snuffleupagus bietet ein Regelsystem, das sowohl Standardvorlagen zur Erhöhung des Schutzes nutzt als auch die Erstellung eigener Regeln zur Kontrolle von Eingabewerten und Funktionsparametern ermöglicht. Zum Beispiel erlaubt die Regel „sp.disable_function.function(„system“).param(„command“).value_r(„[$|;&`\n]“).drop();“ die Begrenzung der Verwendung von Sonderzeichen in den Argumenten der Funktion system(), ohne dass die Anwendung verändert wird. Ähnlich können Regeln zur Blockierung bekannter Schwachstellen erstellt werden.
Laut den Tests, die von den Entwicklern durchgeführt wurden, reduziert Snuffleupagus die Leistung nahezu nicht. Um die eigene Sicherheit zu gewährleisten (potenzielle Schwachstellen in der Schutzschicht können zusätzliche Angriffsvektoren bieten), wird in diesem Projekt eine gründliche Prüfung jedes Commits in verschiedenen Distributionen vorgenommen, es kommen statische Analysetools zum Einsatz, und der Code wird strukturiert und dokumentiert, um eine einfache Überprüfung zu ermöglichen.
Es werden integrierte Methoden bereitgestellt, um solche Klassen von Schwachstellen zu blockieren, wie z. B. Probleme, mit der Datenserialisierung Verwendung der PHP-Funktion mail(), dem Auslaufen von Cookie-Inhalten bei XSS-Angriffen, Problemen durch Dateiuploads mit ausführbarem Code (z. B. im Format ), minderwertiger Zufallszahlengenerierung sowie inkorrekter XML-Konstrukte zu umgehen.
Zu den Modi zur Verbesserung der Sicherheit von PHP gehören:
- Automatische Aktivierung der Flags „secure“ und „samesite“ (Schutz vor CSRF) für Cookies, von Cookies;
- Ein integrierter Regelbestand zur Erkennung von Spuren von Angriffen und der Kompromittierung von Anwendungen;
- Globale erzwungene Aktivierung des Modus „» (zum Beispiel wird der Versuch, eine Zeile als ganzzahligen Wert zu übergeben, blockiert) und Schutz vor ;
- Standardmäßige Blockierung (zum Beispiel das Verbot von „phar://“) mit deren ausdrücklicher Genehmigung auf der Whitelist;
- Verbot der Ausführung von Dateien, die beschreibbar sind;
- Schwarze und weiße Listen für eval;
- Erzwingung der TLS-Zertifikatprüfung beim Einsatz von
curl; - Hinzufügung von HMAC zu serialisierten Objekten, um sicherzustellen, dass bei der Deserialisierung die vom ursprünglichen Programm gespeicherten Daten erhalten bleiben;
- Anfrageprotokollierungsmodus;
- Blockierung des Ladens externer Dateien in libxml über Verlinkungen in XML-Dokumenten;
- Möglichkeit zur Anbindung externer Validatoren (upload_validation) zur Überprüfung und Scannen von hochgeladenen Dateien;
Das Projekt wurde entwickelt und wird zur Sicherheit der Benutzer in der Infrastruktur eines der großen französischen Hosting-Anbieter eingesetzt. , was bedeutet, dass die bloße Aktivierung von Snuffleupagus viele gefährliche Schwachstellen, die in diesem Jahr in Drupal, WordPress und phpBB entdeckt wurden, hätte verhindern können. Schwachstellen in Magento und Horde könnten durch die Aktivierung des Modus
„sp.readonly_exec.enable()“ blockiert werden.
Quelle: opennet.ru
