Xakep #305. Многошаговые SQL-инъекции
Студент датского Skive College Альберт Педерсен (Albert Pedersen) сумел проникнуть в закрытую бету Cloudflare Email Routing (без приглашения) и обнаружил уязвимость, которую злоумышленники могли использовать для захвата и кражи чужой электронной почты. В итоге Педерсен получил 6000 долларов от Cloudflare через программу bug bounty.
В статье, опубликованной ранее на этой неделе, Педерсен рассказал, что предупредил Cloudflare о проблеме через HackerOne еще 7 декабря 2021 года. По его словам, компания устранила баг в течение нескольких дней, однако сведения об ошибке были обнародованы только 28 июля 2022 года, после чего Педерсен наконец получил возможность опубликовать собственный отчет о случившемся.
Напомним, что разработчики Cloudflare представили собственную службу Email Routing осенью 2021 года, сделав ее доступной только в виде закрытой беты. Эта служба, которая в феврале текущего года перешла в фазу открытого тестирования, позволяет клиентам создавать и управлять email-адресами для своих доменов, а также перенаправлять почту на определенные ящики.
Педерсен пишет, что первым испытанием для него стало само проникновение в закрытую бету:
«Когда я обнаружил эту уязвимость, Cloudflare Email Routing еще находилась в стадии закрытого бета-теста, и только нескольким доменам был предоставлен доступ. К сожалению, меня не пригласили на эту вечеринку, так что я просто обязан был туда вломиться».
В итоге исследователь проник в бету, манипулируя данными, отправленными бэкэнд-серверов Cloudflare на панель инструментов Cloudflare, открытую в его браузере. Он пишет, что просто использовал Burp, чтобы перехватить ответ и заменить 'beta': false на 'beta': true, из-за чего панель управления решила, что у него есть доступ к бета-версии.
После этого он настроил Email Routing для одного из своих доменов, чтобы почта с кастомного адреса в этом домене (например, albert@example.com) направлялась на его личный адрес в Gmail.
На тот момент его домен был связан с его основной учетной записью Cloudflare, верифицирован, а Email Routing был настроен и работал как должно. Стоит отметить, что под верификацией подразумевается, что DNS-записи домена были настроены таким образом, чтобы Cloudflare знала, что именно Педерсен владеет или, по крайней мере, управляет этим доменом.
Тогда исследователь задался вопросом, что произойдет, если он добавит свой домен в другую учетную запись Cloudflare, где этот домен неверифицирован. Он был уверен, что окажется невозможно настроить для него Email Routing и перенаправить электронную почту. Однако все получилось.
Когда неверифицированный домен был добавлен к дополнительной учетной записи, Педерсен включил для него Email Routing и настроил оригинальный email-адрес (albert@example.com) для перенаправления на другой email-адрес (который уже не был его личным ящиком Gmail). После этого он послал сообщение на albert@example.com, и то попало в папку «Входящие» мошеннического получателя, а не в его личный ящик Gmail.
По сути, исследователь захватил albert@example.com, просто добавив домен в другую учетную запись, и проинструктировал Cloudflare, куда следует передавать сообщения для albert@example.com.
«Я предполагал, что либо Cloudflare API выполнит проверку на стороне сервера и выдаст ошибку, говорящую мне верифицировать зону, либо моя мошенническая конфигурация просто не сработает, — говорит Педерсен, и уточняет, что в итоге не увидел ошибки, и все сработало. — Подозреваю, что почтовый сервер Cloudflare хранит лишь одну запись для каждого адреса, и она попросту была перезаписана, когда я применил свои мошеннические настройки.
Сейчас вы можете настроить Email Routing в неверифицированной зоне, однако конфигурация не вступит в силу до тех пор, пока домен не будет верифицирован».
По сути, хакер, использующий эту уязвимость, мог получать сообщения, отправленные на адрес незнакомца, просто добавив домен этого незнакомца к своей учетной записи и пересылая почту по нужному адресу. Впрочем, это работало лишь при условии того, что незнакомец уже использует Cloudflare, его домен верифицирован, и Email Routing настроен.
«Это не просто серьезная проблема с конфиденциальностью. В силу того, что ссылки для сброса паролей часто отправляются на почту пользователя, злоумышленники потенциально могли получить контроль над любыми учетными записями, связанными с этим email-адресом», — отмечает Педерсен, добавляя, что это хороший аргумент в пользу использования двухфакторной аутентификации.
Исследователь говорит, что на момент закрытой беты Email Routing использовали около 600 доменов, и вся их электронная почта могла быть скомпрометирована, если бы какой-то хакер воспользовался уязвимостью.
Представители Cloudflare сообщили изданию The Register, что проблемой не успели воспользоваться злоумышленники, а Email Routing все еще находится на стадии бета-теста, только теперь открытого. Также в компании подчеркнули, что обнаруженный Педерсеном баг – лишнее доказательство пользы и необходимости программ bug bounty.