PT-2011-48: Множественные уязвимости в AtMail

Уязвимое ПО

Почтовый веб-интерфейс AtMail
Версия: 1.04 и ниже

Ссылка:
http://atmail.org/

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

Уровень опасности: Высокий
Воздействие: Множественные уязвимости
Вектор атаки: Удаленный

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

CVE: отсутствует

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

Atmail - почтовый веб-интерфейс с открытым исходным кодом.

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

Исследовательский центр Positive Research компании Positive Technologies обнаружил множественные уязвимости в почтовом веб-интерфейсе AtMail.

1. Загрузка произвольных файлов
В системе предусмотрена возможность загрузки файлов (прикрепленных к письмам вложений). Расширения загружаемых файлов не проверяются; таким образом, возможна загрузка произвольного файла, в том числе с расширением .php.
В результате загрузки файл будет доступен по адресу:
https://localhost/tmp/username@host.com/username@host.com-string-PositiveShell.php

2. Обход каталогов (Path Traversal)
Уязвимость в файле: /compose.php
Уязвимый фрагмент кода:
$var['unique'] = preg_replace('/\.\.\//', '', $var['unique']);
Из параметра $var['unique'] удаляется строка "../", но удаление происходит не рекурсивно. Таким образом, если параметр будет содержать строку "..././", то после удаления останется строка "../".
В результате возможно проведение атаки "обход каталогов" (Path Traversal).
Пример эксплуатации:
https://localhost/compose.php?
func=renameattach&unique=/..././..././..././..././..././..././..././..././..././..././..././.../
./tmp/positive.test%00&Attachment[]=/../../../../../../../../../etc/passwd

3. Копирование произвольных файлов
В системе предусмотрена возможность копирования прикрепляемых файлов, при этом не реализована проверка имени копируемого файла, что позволяет скопировать произвольный файл.
Имя создаваемого файла не проверяется на наличие специальных символов (например, null-байт), что позволяет создать файл с произвольным расширением.
Кроме того, используя уязвимость "обход каталогов", злоумышленник может создать файл в произвольном каталоге.
Уязвимость в файлах:
/compose.php
/libs/Atmail/SendMsg.php (методы "renameattach" и "copyFile")
Пример эксплуатации:
https://localhost/compose.php?func=renameattach&unique=1.txt%00&Attachment[]
=/../../../../../../../../../etc/passwd
После этого файл будет доступен по адресу:
https://localhost/tmp/username@host.com/username@host.com-1.txt

4. Чтение произвольных файлов
Проверка имени читаемого файла осуществляется некорректно - возможен обход механизма фильтрации. Это позволяет злоумышленникам прочитать произвольные файлы.
Уязвимость в файле: mime.php
Уязвимый фрагмент кода:
$var['src'] = rawurldecode($_REQUEST['file']);
$var['src'] = preg_replace('/^.+[\\\\\\/]/', '', $var['src']); // Don't allow to go down a dir,
sanity check
Если в имени файла содержится символ "/", то все символы до него будут удалены.
Однако в регулярном выражении не используется модификатор "s", символ %0a будет воспринят как два символа (переход на новую строку + возврат каретки).
Управляющий символ "." в регулярном выражении без модификатора "s" может заменять только 1 символ; таким образом, проверка будет осуществляться до символа %0a.
Пример эксплуатации:
https://localhost/mime.php?file=%0A/../../../../../../../../../etc/passwd&name=positive.html

5. Раскрытие важных данных
Файл info.php вызывает функцию phpinfo(). Функция phpinfo() отображает информацию о конфигурации системы.
https://localhost/install/info.php

Решение

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

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

06.12.2011 - Производитель уведомлен
06.02.2012 - Детали уязвимости отправлены в CERT 
26.03.2012 - Производитель выпустил исправление 
26.03.2012 - Публикация уязвимости

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

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

Ссылки

http://www.securitylab.ru/lab/PT-2011-48
http://www.kb.cert.org/vuls/id/743555

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

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

Уязвимости