Sicherheitslücken in PHP und PHP-SQLite haben zur Folge, dass ein entfernter Angreifer Befehle mit höheren Rechten ausführen oder Sicherheitsabfragen umgehen kann.
Die Schwachstelle in PHP wird durch einen Programmierfehler in der Funktion “_php_stream_scandir()” in der Datei “main/streams/streams.c” hervorgerufen. Hier kann es zu einem Overflow beim Verarbeiten der “vector_size”-Variablen kommen. Das Patch korrigiert dies, indem es die Overflow-Fälle abfängt:
--- php-5.4.4/main/streams/streams.c 2012-06-13 06:54:23.000000000 +0200
+++ php-5.4.5/main/streams/streams.c 2012-07-18 08:19:16.000000000 +0200
@@ -2332,8 +2332,8 @@ php_stream *stream; php_stream_dirent sdp; char **vector = NULL;
- int vector_size = 0;
- int nfiles = 0;
+ unsigned int vector_size = 0;
+ unsigned int nfiles = 0; if (!namelist) { return FAILURE;
@@ -2349,14 +2349,24 @@ if (vector_size == 0) { vector_size = 10; } else {
+ if(vector_size*2 < vector_size) {
+ /* overflow */
+ efree(vector);
+ return FAILURE;
+ } vector_size *= 2; }
- vector = (char **) erealloc(vector, vector_size * sizeof(char *));
+ vector = (char **) safe_erealloc(vector, vector_size, sizeof(char *), 0); } vector[nfiles] = estrdup(sdp.d_name); nfiles++;
+ if(vector_size < 10 || nfiles == 0) {
+ /* overflow */
+ efree(vector);
+ return FAILURE;
+ } } php_stream_closedir(stream);
Betroffen sind die Versionen vor 5.3.15 und 5.4.x vor 5.4.5.
Die zweite PHP-Schwachstelle kann ein entfernter oder lokaler Angreifer ausnutzen, um in SQLite “open_basedir”-Restriktionen zu umgehen.
Betroffen hiervon sind die Versionen vor 5.3.15.

