Ein Month of PHP Security: Das haben wir geschafft
Kommentare

Der Mai und damit auch der „MOPS“ abgekürzte
Month of PHP Security
ist vorüber. In
den
ersten
vier
Wochen
wurden 33 Schwachstellen in PHP und 13 in PHP-Anwendungen
veröffentlicht,

Der Mai und damit auch der „MOPS“ abgekürzte Month of PHP Security ist vorüber. In den ersten vier Wochen wurden 33 Schwachstellen in PHP und 13 in PHP-Anwendungen veröffentlicht, dazu gab es 11 „Tips und Tools“. In den letzten 4 Tagen sind noch 14 Schwachstellen in PHP dazu gekommen, außerdem gab es einen zusätzlichen Text.

Schwachstellen in PHP

Ein Großteil der während des „Endspurts“ veröffentlichten Schwachstellen in PHP entstehen durch das ‚call time pass by reference‘-Feature und erlauben das Ausspähen von Speicherbereichen. Betroffen sind die Funktionen trim()/ltrim()/rtrim() (MOPS-2010-047), substr_replace() (MOPS-2010-048), preg_match() (MOPS-2010-050), unpack() (MOPS-2010-051) und pack() (MOPS-2010-052) sowie der ZEND_FETCH_RW-Opcode (MOPS-2010-053).

Weitere Interruption-Schwachstellen haben schwerwiegendere Folgen: Beim Verarbeiten tief verschachtelter Arrays durch die Funktion parse_str() kann es zu einer Memory Corruption kommen, die die Ausführung eingeschleusten Codes erlaubt (MOPS-2010-049). Auch die END_CONCAT/ZEND_ASSIGN_CONCAT-Opcodes enthalten eine entsprechende Schwachstelle, die sowohl das Ausspähen von Speicherbereichen als auch die Ausführung von Code erlaubt (MOPS-2010-054). Ob sich eine Memory Corruption durch eine Schwachstelle in der Methode ArrayObject::uasort() (MOPS-2010-055) ebenfalls zum Ausführen von Code eignet, wurde nicht angegeben.

Betroffen sind wie üblich PHP 5.2 bis einschließlich der aktuellen Version 5.2.13 und PHP 5.3 bis einschließlich der aktuellen Version 5.3.2. Das grundlegende Problem der ‚Interruption Vulnerabilities‘ wurde von Stefan Esser auf der Konferenz ‚BlackHat USA 2009‘ vorgestellt (Präsentation und Paper als PDF).

Weitere Schwachstellen wurden von Stefan Esser in der Mysqlnd-Extension in PHP 5.3 bis einschließlich der aktuellen Version 5.3.2 gefunden: Die Funktion php_mysqlnd_ok_read() enthält ein Informationsleck (MOPS-2010-056), während in den Funktionen php_mysqlnd_rset_header_read() (MOPS-2010-057), php_mysqlnd_read_error_from_line() (MOPS-2010-058) und php_mysqlnd_auth_write() (MOPS-2010-059) Pufferüberlauf-Schwachstellen gefunden wurden. Ob evtl. die Ausführung von Code möglich ist, wurde nicht angegeben.

Die letzte während des MOPS veröffentlichte Schwachstelle befinden sich im Session Serializer von PHP 5.2 bis einschließlich der aktuellen Version 5.2.13 und PHP 5.3 bis einschließlich der aktuellen Version 5.3.2. Das PS_UNDEF_MARKER-Zeichen wird nicht korrekt ausgewertet, so dass über PHP-Code, der Variablen in eine Session schreiben kann, beliebige serialisierte Daten in die Session eingeschleust werden können (MOPS-2010-060).

Schwachstellen in PHP-Anwendungen…

… wurden nicht mehr veröffentlicht, dafür aber ein zusätzlicher Beitrag aus dem Bereich

Tips und Tools

Von Ben Fuhrmannek stammt ein Artikel über ‚Virtual Meta-Scripting – Bytecode for PHP and JavaScript‘. Dessen Abstract:

„Both PHP and JavaScript are frequently being targeted for exploiting web applications. This article elaborates on the idea of building a set of virtual machines on top of each programming language. As a result a single type of bytecode can be executed by both VMs. Particular emphasis is put on designing virtual machines to be most suitable for code obfuscation in a post exploitation scenario.“
Nachträge zu dem vorigen Wochen

Aus der ersten Woche ist eine SQL-Injection-Schwachstelle in ClanTiger offen geblieben, und daran hat sich anscheinend immer noch nichts geändert. Auch ob die SQL-Injection-Schwachstelle in DeluxeBB wie vermutet behoben wurde, steht immer noch nicht fest.

In der dritten Woche waren zwei Schwachstellen in CMSQlite offen geblieben. Diese wurden in Version 1.2.1 behoben, wie ein Blick in die geänderten Skripte verrät. Auf der Website gibt es nur die Information, dass ein „Wichtiges Sicherheits-Patch für CMSQLite 1.2 veröffentlicht“ wurde.

Aus der zweiten und vierten Woche waren keine Schwachstellen mehr offen.

Fazit

Den PHP-Entwicklern bescherte der MOPS 46 neue Schwachstellen sowie eine Erinnerung an eine seit dem „Month of PHP Bugs“ bekannte. Wollen wir hoffen, dass die nun alle recht zügig behoben werden und es nicht in drei Jahren einen weiteren „Month of …“ gibt, der mit einer Erinnerung an eine alte Schwachstelle beginnt. In PHP-Anwendungen wurden insgesamt 13 Schwachstellen veröffentlicht, von denen im besten Fall nur noch die SQL-Injection-Schwachstelle in ClanTiger offen ist. Das ist doch alles in allem ein recht erfreuliches Ergebnis.

Carsten Eilers
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -