Независимый исследователь Коллин Маллинер (Collin Mulliner) обнаружил неприятный баг в компоненте WebView. Уязвимость заставляет iPhone жертвы позвонить на какой-либо номер, что может привести к самым разным последствиям.
Маллинер пишет, что взяться за исследование данной проблемы его побудил недавний случай в Аризоне. Тогда подросток устроил телефонный DoS на экстренную службу 911, якобы случайно опубликовав в своем твиттере ссылку на страницу с JavaScript-эксплоитом.
Исследователь неплохо знаком с этой проблемой, так как еще в 2008 году он обнаружил первую вариацию этого бага в браузере Safari. Проблема была исправлена с выходом iOS 3.0. Новая вариация уязвимости, по словам Маллинера, аналогична предыдущей, но затрагивает такие приложения как Twitter, LinkedIn, Facebook, Pocket и другие.
Проблема связана с тем, как WebView обрабатывает ссылки на телефонные номера, встроенные в страницы сайтов, то есть TEL URI вида tel:< номер телефона >. Когда пользователь нажимает на такую ссылку, WebView автоматически совершает звонок на указанный номер. Проблема в том, что если атакующий заманит свою жертву на страницу, которая использует meta-refresh тег для перезагрузки с новым URL и указывает на TEL URI, телефон автоматически выполнит звонок на заданный номер.
В браузере Safari проблема устранена, браузер уточняет у пользователя, нужно ли совершить звонок (см. иллюстрацию выше). Похожим образом ведут себя приложения Dropbox и Yelp. Однако с другими приложениями все сложнее. Маллинер пишет, что проблема в том, что нажав на опасную ссылку, пользователь даже не может отменить звонок, как в этот момент ОС открывает еще одно приложение и все подвисает (спасибо за это URI binding). Причем запуск второго приложения в эксплоите исследователя реализован наиболее простым способом: нужно лишь подсунуть жертве URL, который заставит ОС запустить еще одно приложение. «Это может быть что-то из мессенджинговых приложений (SMS: URL) или iTunes (itms-apps: URL)», — пишет исследователь.
Исследователь сумел воспроизвести атаку в Twitter и LinkedIn, но он убежден, что багу подвержены и многие другие приложения. Ниже можно увидеть видео с демонстрацией атаки.
Эксперт уведомил Twitter о проблеме через официальную bug bounty программу HackerOne, однако его заявка была закрыта как дубликат без всяких объяснений. Также Маллинер уведомил о баге LinkedIn и Apple, но не стал дожидаться, пока компании представят патчи для своих продуктов.
«Если вы считаете, что автоматический звонок после клика по безвредной с виду ссылке – это не такая большая проблема, подумайте еще раз. DoS-атака на 911 – это ужасно, но также существуют платные номера, за счет которых атакующий может заработать денег. Сталкер может заставить свою жертву позвонить на его номер, чтобы узнать ее номер. В общем, возможны различные нехорошие вещи, которых вы бы точно не хотели. Apple нужно изменить дефолтное поведение WebViews и внести TEL URI в исключения, запретив автоматическое выполнение», — резюмирует исследователь.