14 января на хабре мне в приват написали об уязвимости в компоненте Auth фреймворка CakePHP и в качестве доказательства была приведена ссылка на скриншот дефейса thechaw.com, да и на самом сайте дефейс не был убран. В чем суть уязвимости, мне сообщить отказались, сославшись на то, что подробные инструкции переданы разработчикам. И действительно за предыдущий день есть changeset со скупым описанием «updating auth component and test with additional checks for missing data». И уже 16 числа выходит релиз 1.2.1, на который настоятельно рекомендуют обновится.

И в самом деле уязвимость довольно серьёзная. Приложив минимум усилий, можно получить доступ в качестве любого пользователя системы…

  1. Нужно найти форму, через которую происходит логин
  2. Найти поле вида data[User][username]. Название может отличаться, но суть ясна — это логин пользователя
  3. Любым образом (хоть сохранить страницу, хоть через firebug) изменить имя этого поля на что-то вроде data[User][usernage]. Конкретное значение не важно, главное чтобы логин не попал на сервер
  4. В поле data[User][password] ввести id пользователя под которым вы хотите залогиниться.
  5. Вы внутри

Как с этим бороться?

  • обновиться на версию 1.2.1. и следить за обновлениями регулярно
  • не забывать использовать Auth вместе с компонентом Security. Он добавляет в формы подпись и описанный метод изменения полей уже не прокатит.

Успехов!