Патчи для DIR-645 и DIR-890L одинаковые, поэтому я буду писать только про DIR-890L.
Хоть в предыдущем посте я рассматривал только выполнение команд, патч указывает на несколько дыр в безопасности, которые появились из-за использования strstr
для валидации HNAP-заголовка SOAPAction
:
- Использование неутентифицированных пользовательских данных в вызове
system
- Использование неутентифицированных пользовательских данных в вызове
sprintf
- Неаутентифицированные пользователи могут выполнять привилегированные HNAP-запросы (такие, как смена пароля администратора)
Видите, D-Link признала все это в информации об уязвимости, и они ясно представляли все векторы атаки.
Итак, убрали ли они переполнение стека
sprintf
?
sprintf(cmd_buf, “sh %s%s.sh > /dev/console”, “/var/run”, SOAPAction);
Убрали ли они вызов system
?
system(cmd_buf);
Конечно нет!
Используют ли они strcmp
вместо strstr
для валидации заголовка SOAPAction
?
if(strstr(SOAPAction, “http://ift.tt/1Hcp4tY”) != NULL)
Пфф, че заморачиваться-то?
Все их решение этих фундаментальных проблем сводится к использованию функции access
для проверки того, что в SOAPAction
допустимое, ожидаемое значение, путем проверки существования файла /etc/templates/hnap/<SOAPAction>.php
:
Вызов sprintf(), затем сразу access()
Ага, это хотя бы защитит от внедрения произвольных данных в sprintf
и system
Однако, они добавили еще один sprintf
до access
; их патч для закрытия неаутентифицированного переполнения стека в sprintf
добавляет еще одно неаутентифицированное переполнение стека в sprintf
.
А вот еще один неожиданный поворот: этот патч не делает ничего для того, чтобы запретить выполнение допустимых административных запросов HNAP, т.к. он только проверяет, допустим ли запрос. Все верно, их патч не закрывает все уязвимости, о которых они писали в информации об уязвимости!
Думаю, никому нет дела до того, что любой неаутентифицированный пользователь может получить информацию о хостах во внутренней сети, просматривать и изменять системные настройки или сбросить роутер на заводские настройки:
$ wget --header="SOAPAction: http://ift.tt/1FRQkvE" http://ift.tt/1D4FxNB
Оставайся таким же классным, D-Link.
This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.
Комментариев нет:
Отправить комментарий