Sidebar
ein-/ausblenden

SSEQ-LIB im Einsatz

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:

  • XSS (Cross Site Scripting)
  • SQL-Injection
  • CSRF (Cross Site Request Forgery)
  • Session-Fixation
  • Mail-Header-Injection
  • File-Injection
  • HTTP-Header-Manipulation
  • Response-Splitting
  • Informative error messages

Viele Informationen stehen im Projektverzeichnis bereit und ebenfalls auf das Blog von Erich Kachel.

13 Kommentare zu „SSEQ-LIB im Einsatz“

  1. 1
    Kommentar von Erich Kachel

    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 ;-)

  2. 2
    Kommentar von dieter

    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?

  3. 3
    Kommentar von Erich Kachel

    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?

  4. 4
    Kommentar von Ralf

    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.

  5. 5
    Kommentar von Julian

    gibt es dass auch schon als WP-Plugin?

  6. 6
    Kommentar von Frank Bültge

    @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.

  7. 7
    Kommentar von Erich Kachel

    gibt es dass auch schon als WP-Plugin?

    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.

  8. 8
    Kommentar von Erich Kachel

    bekomme ich jetzt auch einen persönliche Filtereinstellung?

    Leider ja :)

    wpcf_your_name # gp # STR # 0 # 100 # true # &
    wpcf_subject # gp # STR # 0 # 200 # true # &

  9. 9
    Kommentar von Erich Kachel

    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. 10
    Kommentar von Frank Bültge

    @Erich: vielen Dank, Log ist unterwegs; Freue mich auf den Beitrag!

  11. 11
    Kommentar von Dominik Bonsch

    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.

  12. 12
    Kommentar von Erich Kachel

    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.

  13. 13
    Kommentar von Dominik Bonsch

    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

Kommentare sind geschlossen.