Suhosin Patch - kann man ihn deaktivieren?

  • Mein Suhosin macht seit heute böse Ärger!
    Sieht ungefähr so aus:


    Code
    [Thu Jul 07 13:07:59 2011] [error] [client 78.XX.XXX.XXX] ALERT - canary mismatch on erealloc() - heap overflow detected (attacker '78.XX.XX.0', file '/var/customers/webs/XXX/fb-jebcorliss/manager/includes/document.parser.class.inc.php(814) : eval()'d code', line 22), referer: http://static.ak.facebook.com/platform/page_proxy.php?v=4


    Der Kanarienvogel erstickt. Nach etwas Recherche habe ich gelesen, dass es bei diesen Fehler um ein MemoryCorruption Problem handelt.


    Ich habe nach einer Empfehlung über die .htaccess bereits die Suhosin Session Encription ausgeschaltet:


    Code
    php_flag 	suhosin.session.encrypt 	Off


    Dies brachte ein wenig Abhilfe, jedoch sobald wieder etwas mehr Load auf den Server kommt treten wieder die Fehler auf und die Seiten werden nicht ausgeliefert.



    JA, es handelt sich hierbei um Facebook Apps, diese liefen Problemlos, inzwischen hoste ich allerdings mehrere davon, nun treten diese Memory-Corruption Probleme auf, daher meine Frage:


    KANN ICH DEN SUHOSIN PATCH GLOBAL ÜBER PHP.INI ODER LOKAL FÜR DOMAINS / VERZEICHNISSE DEAKTIVIEREN?


    Bin für jede hilfreiche Info dankbar!


    Grüße

  • Solche Angaben in einer .htaccess sind oft nicht erlaubt, je nach Webserverkonfiguration. Probiere es doch einmal direkt im jeweiligen vHost oder in der php.ini - falls du Debian verwendest wirf auch einmal einen Blick in die /etc/php5/conf.d/suhosin.ini :)



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Ich glaube du verstehst den Sinn des Suhosin Patches nicht ;)
    Ersteinmal müssen wir den Suhosin Patch von der Suhosin Extension unterscheiden. Der Suhosin Patch ist dafür da die PHP-Runtime sicherer zu machen, die Extension erlaubt darüber hinaus noch einige nette Sicherheitsfeatures zu aktivieren.



    Bei dir greift, wie im Log zu sehen, der Suhosin-Patch und schützt dich vor einem Overflow in PHP, der katastrophale Auswirkungen haben könnte. Das willst du keinesfalls deaktivieren. Der Suhosin-Patch hat seine Existenzberechtigung und sollte in jedes PHP eingebunden wird. Man sehe sich nur mal den Month of PHP Bugs vor Jahren an, fast alle Fehler waren in einem PHP mit Suhosin Patch nicht mehr vorhanden.


    Und nein, der Suhosin Patch lässt sich nicht deaktivieren, er wird fest in den PHP Core einkompiliert.

  • Doch, ich habe den Sinn schon verstanden, der Patch ist in den default Paketen dabei und es ist "Pain in the Ass" da etwas dran zu ändern.


    In meinen Apps greife ich auch externe API Schnittstellen von Videoportalen zu, es gibt eine menge evolve() , efree() und erealloc() die diese heap-overflows produzieren. Geht die Last nun hoch oder werden mehrere Domains / Projekte gleichzeitig aktiv kommt es zu dieser Fehlermeldung. Daher würde ich das doch schon ganz gern deaktivieren.


    Allerdings muss ich sagen, dass nachdem ich die session encryption in allen Projekten deaktiviert habe momentan alles wieder gut zu sein scheint.


    Ich halte euch hier auf dem laufenden. Mir ist klar, das speziell die Speicherüberwachung von Suhosin ein kontroverses Thema ist. Es soll seine Daseinsberechtigung durchaus haben, jedoch fehlt speziell zu dem Thema leglicher support und "Suhosin canary" bei google ergibt eine riesige Liste dieser "kontroversen Diskussionen" in der wir uns hier jetzt nicht einreihen wollen.


    Ich wollts deaktivieren - deaktivieren geht nicht, da der Patch im Kern integriert ist.


    Der beste Tipp ist die session_encryption von Suhosin zu deaktivieren. Dies kann sowohl über die .htaccess als über die von Killerbee erwähnte suhosin.ini erledigt werden.

  • Die suhosin session encryption gehört jedoch zur Suhosin Extension, der kann man gerne kontrovers gegenüberstehen, der Suhosin Patch läuft aber absolut transparent und schützt wirklich nur vor katastrophalen Fehlern.
    Also hast du nur ein Problem mit der Extension, nicht mit dem Patch ;)


    Um es nochmal klarer zu formulieren: Der Suhosin Patch schützt dich vor Programmierfehlern im PHP-Kern oder Extensions, die z.B. sonst zu Buffer-Overflows führen, nicht mehr und nicht weniger. Und diesen Schutz willst du wirklich nicht aufgeben, es seiden du spielst gerne mit dem Feuer. Es gibt zwar noch Dinge die der Suhosin Patch weiter implementiert, aber die machen nichts kaputt.