Für Menschen · Seien Sie begeistert und Sie werden begeistern !
Ich habe hier live im Blog die SSEQ-LIB im Einsatz; nur so kann ich eine ausreichend frequentierte Plattform nutzen um die Library zu testen. Wenn jemanden meiner Leser Fehler, Ungereimtheiten oder einfach Unstimmigkeiten auffallen, dann wäre ich sehr dankbar für eine Mail oder einen Kommentar hier.
Zum Hintergrund: sseq-lib ist eine mächtige PHP-Security Bibliothek
Security-Themen, die sseq-lib behandelt:
Viele Informationen stehen im Projektverzeichnis bereit und ebenfalls auf das Blog von Erich Kachel.
bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.
Das Weblog wird angetrieben von WordPress und aktuell gibt es 980 Beiträge, 18722 Kommentare in 14 Kategorien und 464 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet. Erstellt mit ♥ zum Befüllen und Erhalten.
Design und Code ist unter Copyright
© 2001 - 2012 bueltge.de [by:ltge.de]
8. September 2009 um 13:53
Es freut mich sehr, solche Unterstützung zu erfahren!
Als "Danke Schön" habe ich dir per E-Mail eine zusätzliche Filterdefinition geschickt. Damit wird eine kleine Lücke hier im Blog geschlossen
8. September 2009 um 14:46
Wir nutzten hier einige Zeit phpids. Es wurde dann wieder abgeschaltet, weil es zu viele Resourcen verbraucht und der Nutzen doch relativ gering war. Das meiste sind eben XSS Angriffe und die bewältigt der htmlpurifier doch sehr effektiv. Den Rest erledigt mod_security, was aber leider sehr schwer zu konfigurieren ist. Wie sieht es mit SSEQ-LIB aus, wird hier auch mit Kanonen auf Spatzen geschossen?
8. September 2009 um 16:42
Die Ressourcen die von der SSEQ-LIB verbraucht werden sind überschaubar und sollten nicht ins Gewicht fallen. Die Filter kommen ohne "Regular Expressions" aus, was der Performance zu Gute kommt. Schaltet man die "Intrusion Detection" aus, werden wieder weniger Ressourcen gebunden.
Gewissheit bringt letztendlich nur ein Test.
@Frank: Ist die Anwesenheit von SSEQ-LIB denn an der Serverauslastung zu merken?
9. September 2009 um 01:55
Erst einmal danke Frank für den doch sehr interessanten und anscheinend genauso nützlichen Tipp. Ich habe mir SSEQ-LIB auch mal installiert und werde mir mal anschauen wie es sich macht und vor allem WAS es macht (bekomme ich jetzt auch einen persönliche Filtereinstellung?
)
Ich denke bei mir wird nicht ganz so viel auflaufen. Denn ich hatte schon vor recht langer Zeit bemerkt das die meisten "merkwürdigen" Anfragen via wwwlib-perl und wwwghttp durchgeführt werden. Diese User-Agenten habe ich daraufhin einfach mal in der .htaccess gesperrt.
Das ist zwar eine sehr radikale Lösung und sperrt vielleicht auch den einen oder anderen Client aus, für mein 0815-Blog jedoch eine recht gangbare Lösung.
Wer ebenfalls lediglich ein "kleines" Blog hat, auf den einen oder anderen Bot-Besucher verzichten kann weil seine Besucher i.d.R. über den Browser vorbei kommen und nicht zwanghaft alle WP-Updates einspielen will/kann, für den kann dies u.U. auch eine (vorübergehende) Lösung sein.
9. September 2009 um 06:08
gibt es dass auch schon als WP-Plugin?
9. September 2009 um 08:52
@Erich: nein, keine Veränderung in der Serverauslastung.
Als Hinweis: ich würde mich sehr über ein Beitrag bei dir freuen, wie man die Filter erkennt und erweitert. Ich denke, dass das nützlich wäre und man damit deine Bibliothek auch bereichern könnte, in dem man eigene Filter mitteilt.
9. September 2009 um 11:01
Nein. SSEQ-LIB und die Filter machen nur Sinn, wenn sie vor der zu schützenden Anwendung starten und die Eingaben säubern. Ich bezweifle, dass die WordPress Plugins vor WordPress selbst aktiv werden dürfen/können.
Die Verfügbarkeit eines Plugins hat also wegen technischer Einschränkungen ein großes Fragezeichen.
9. September 2009 um 11:06
Leider ja
wpcf_your_name # gp # STR # 0 # 100 # true # &
wpcf_subject # gp # STR # 0 # 200 # true # &
10. September 2009 um 16:41
Frank, wie sieht das Logfile inzwischen aus? Ein Blick da rein entlarvt nebst Angriffsversuche auch mögliche nötige Anpassungen des Filters.
PS: Ich werde etwas über die Filter schreiben. Dauert aus anderen Gründen noch ein wenig.
10. September 2009 um 17:23
@Erich: vielen Dank, Log ist unterwegs; Freue mich auf den Beitrag!
3. November 2009 um 21:19
So ich will jetzt die Leistung des Autors nicht schmälern, aber bei einer Security Lib möchte ich wenn ich in den Code schau nicht das Gefühl haben, dass der Autor keine tiefgreifenden Kenntnisse von PHP hat.
In dem Fall ist das aber leider so.
1: Verwendung von global
grep -i 'global' seq_lib/*.php | wc -l
42
2: unnötige create_functions
/* automatically choose best function to escape input */if (!(mysql_error())) {
$P_ESCAPE_FUNC = create_function('$match_','return mysql_real_escape_string($match_);');
$sec_value = $P_ESCAPE_FUNC($orig);
}
/* fallback if mysql is not available yet */
if (mysql_error()) {
$P_ESCAPE_FUNC = create_function('$match_','return mysql_escape_string($match_);');
$sec_value = $P_ESCAPE_FUNC($orig);
}
3: funktion seq_remove_slashes_
Der Autor kennt scheins get_magic_quotes_gpc() nicht. Das Konstrukt wirkt abenteuerlich.
Die Architektur ist auch nicht immer ideal. Das wirkt als ob es aus einer anderen Sprache portiert wurde irgendwie.
Die Verwendung von rein großen Buchstabennamen bei nicht Konstanten und Funktionen mit ist, sagen wir mal ungewöhnlich.
Der versprochene Funktionsumfang ist interessant.
In dem Zustand würde ich die Lib aber nicht einsetzen, ich hoffe dass das weiter entwickelt wird, das wird bestimmt noch ein interessantes Projekt.
4. November 2009 um 12:05
Danke für Deine Codeanalyse Dominik!
Die SSEQ-LIB ist sicherlich kein Codepoesie-Vorzeigeprojekt. Gott sei dank verrichtet sie ihre Arbeit und schützt vor Schwachstellen im Code anderer PHP-Projekte.
Zu den angesprochenen Codekonstrukten hätte ich (und andere Nutzer sicherlich) dann gerne Deine Meinung:
zu 2: unnötige create_functions:
Wie kann zur Laufzeit festgestellt werden, ob "mysql_real_escape_string" zur Verfügung steht (also mindestens eine MySQL-Verbindung besteht) oder man stattdessen auf "mysql_escape_string" zurück greifen sollte? Die SSEQ-LIB muss in beiden Fällen korrekt und dynamisch reagieren können.
zu 3: funktion seq_remove_slashes_:
Hier muss man wieder verstehen, dass die SSEQ-LIB darauf ausgelegt wurde, in unterschiedlichen Anwendungsfällen zuverlässig zu arbeiten. Durch die Analyse in der "seq_remove_slashes_" ist es möglich, sowohl durch "magic_quotes" geänderte Eingaben als auch welche aus anderer Quelle korrekt zu bearbeiten. Zum Verständnis: die SSEQ-LIB-Funktion vermag einen GET-Wert "O\'reilly" korrekt in "O'reilly" umzuwandeln, während ein String "c:\windows" (z.B. aus der Datenbank) nicht nach "c:windows" umgewandelt und zerstört wird.
Eine simple "if (get_magic_quotes_gpc) then stripslashes" kann das schlichtweg nicht.
Das Ziel der SSEQ-LIB ist, so vielen PHP-Entwicklern zur Verfügung zu stehen, wie möglich. Dabei soll sowohl der Erfahrene als auch der Anfänger schnell eine Anwendung damit sichern können. Es soll weiterhin auch bei "shared-hostern" oder in eher veralteten Systemumgebungen eine Grundsicherheit aufgebaut werden. Daher kann der Code in manchen Fällen nicht die Vorzüge der neuesten PHP/MySQL-Version verwenden und es muss möglichst dynamisch sich ändernden Umgebungen anpassen können.
Ich lade Dich ein, den ersten Teil meiner Arbeit über Sicherheitsschwachstellen zu lesen. Das schafft Verständnis über die Arbeit der SSEQ-LIB.
4. November 2009 um 20:48
Es freut mich, dass du meinen Kommentar als konstruktive Kritik und nicht als
persönlichen Angriff interpretiert hast. Ich bin selbst Open Source Entwickler
und habe daher großen Respekt vor jedem der freiwillig (Freie) Software entwickelt.
Erst dachte ich du hast das nur nach PHP portiert, hab dann aber deinen Blog
gelesen. Also erst mal Entschuldigung, dass ich dich falsch eingeschätzt
hatte.
Ich les gerade deinen Artikel.
Hab das mal im Schnelllesemodus überflogen, gefällt mir sehr gut.
Ist bis jetzt das ausführlichste und beste freie Dokument, dass ich dazu
gelesen habe.
Werde mir das auf jeden Fall mal in Ruhe durchlesen, und alleine, dass ich das
machen werde ist schon ein großes Kompliment.
Beste Grüße
Dominik