Wednesday, March 19, 2008

Спасибо тебе, Google!

Анализируя события HTTP_Post систем обнаружения, я поймал ряд POST-ов на gmail. Сохранение пакетов событий было настроено, таким образом, мне были доступны пакеты примерно следующего вида:

Возникла идея на удачу попробовать ретранслировать пойманный пакет. Я был полон уверенности, что такая простая атака не пройдет с Google, тем не менее, любопытство взяло свое, и я решил все-таки попробовать.

Для ретрансляции я использовал Tamper Data, поместив в строке запроса Firefox то, что было в строке POST, запустил перехват:

Согласившился с запросом вмешаться:

В появившемся списке заголовков я добавил/отредактировал Cookie и Referer, взяв их из пойманного пакета:

Я продолжал соглашаться с вмешательством и подставлять Cookie до тех пор, пока промптеры о необходимости вмешаться престали появляться. Я отключил перехват. Примечательно то, что в окне браузера я все же не увидел Inbox другого пользователя (жертвы, чей пакет был пойман), чего, собственно, я и ожидал. Тем не менее, снова, так просто, на всякий случай, я набрал в строке браузера http://mail.google.com/mail/ и, к своему удивлению, провалился в Inbox жертвы.

Описанное выше происходило в пятницу 14 Марта, вечером. Тогда я решил, что возможно, Cookie еще не успели протухнуть, хотя, то, что эти Cookie можно повторно использовать – уже уязвимость, которую необходимо исправлять.

17 Марта, утром я повторил ту же самую, описанную выше процедуру, взяв за основу тот же самый пакет. К своему ужасу я снова попал в тот же ящик, сделав вывод, что пойманные мной Cookie не протухают никогда.

Далее, я решил выйти из ящика жертвы, сказав “Sign out”. Примечательно, что после этого действия фокус перестал работать: сколько я не пытался повторно послать пакет, я не попадал в Inbox жертвы.

Поскольку я сам являюсь фанатом и активным пользователем сервисов Google, я описал все свои дознания в службу поддержки Google (в раздел советов по улучшению http://mail.google.com/support/bin/request.py?contact_type=suggest )

На мой взгляд (я не считаю себя глубоким специалистом в безопасности Web), на тот момент были возможны следующие «улучшения»:

· Сделать Cookie одноразовыми или как-то шифровать их – это сделает невозможным их повторное использование;

· По окончании работы с GMAIL принудительно завершать сессию пользователя (принудительный Sign out), чтобы никакие Cookie не воспринимались вообще.

Никакой обратной связи о том, что мое «улучшение» принято/отклонено/в таком-то статусе, не было, тем не менее, на следующий день, 18 Марта я решил попробовать работает ли фокус (конечно, я взял другую жертву, не ту, которой я сказал “Sign out”) и, внимание, фокус не работал: как бы я не пытался повторно переслать пойманные пакеты, я постоянно попадал в приглашение ввести логин/пароль. Мне остается только гадать о том, была ли эта простейшая уязвимость изначально и потом исправлена после получения моего «улучшения», или уязвимость проявилась как побочный эффект каких-то работ, которые проводились на Google. Важно, что проблема исчезла, к тому же так быстро!