2009-01-23
CakePHP — уязвимость в компоненте Auth
14 января на хабре мне в приват написали об уязвимости в компоненте Auth фреймворка CakePHP и в качестве доказательства была приведена ссылка на скриншот дефейса thechaw.com, да и на самом сайте дефейс не был убран. В чем суть уязвимости, мне сообщить отказались, сославшись на то, что подробные инструкции переданы разработчикам. И действительно за предыдущий день есть changeset со скупым описанием «updating auth component and test with additional checks for missing data». И уже 16 числа выходит релиз 1.2.1, на который настоятельно рекомендуют обновится.
И в самом деле уязвимость довольно серьёзная. Приложив минимум усилий, можно получить доступ в качестве любого пользователя системы…
- Нужно найти форму, через которую происходит логин
- Найти поле вида data[User][username]. Название может отличаться, но суть ясна — это логин пользователя
- Любым образом (хоть сохранить страницу, хоть через firebug) изменить имя этого поля на что-то вроде data[User][usernage]. Конкретное значение не важно, главное чтобы логин не попал на сервер
- В поле data[User][password] ввести id пользователя под которым вы хотите залогиниться.
- Вы внутри
Как с этим бороться?
- обновиться на версию 1.2.1. и следить за обновлениями регулярно
- не забывать использовать Auth вместе с компонентом Security. Он добавляет в формы подпись и описанный метод изменения полей уже не прокатит.
Успехов!