- PVSM.RU - https://www.pvsm.ru -
Нормальные люди проводят ночи смотря фильмы, читая статьи, общаясь в социальных сетях или (да, я знаю — это странно) засыпая на кровати.
Я же провожу свои ночи читая документации и тестируя самые разнообразные приложения и сервисы.
Одной ночью я просто читал документацию о ссылках tel [1], так как я был в восторге от старых технологий, которые использовались до сих пор, их недостатков и того, что люди никогда не читали RFC, что и приводит их к RTFM PWNAGE (как я привык это называть).
Как только я закончил читать документацию по tel — я посмотрел на свой iPhone и сказал: Круто, нужно пробовать! Я накодил маленькую HTML страницу и загрузил ее в Safari, вот код:
Как только я кликнул по ссылке — тут-же появилось диалоговое окно, которое спрашивало действительно ли я хочу позвонить по телефону 0000.
На данном этапе была только моя заинтересованность в ссылках tel, я не искал уязвимость. Но тут меня озарило: Apple очень сильно любит менять что-либо и делать вещи лучше, так может быть у Apple есть своя документация по TEL? И я был прав [2]
Документация Apple по ссылке tel очень короткая и легка к прочтению. Читая первый параграф, кое-что привлекло мое внимание:
Когда пользователь тапает по ссылке tel на странице, iOS показывает алерт, который спрашивает действительно ли пользователь хочет набрать номер телефона и инициализирует набор, если пользователь жмет по «Согласен». Когда пользователь открывает URL со ссылкой tel через установленное приложение, iOS не показывает алерт и инициализирует звонок без последующего подтверждения пользователем.
When a user taps a telephone link in a webpage, iOS displays an alert asking if the user really wants to dial the phone number and initiates dialing if the user accepts. When a user opens a URL with the tel scheme in a native app, iOS does not display an alert and initiates dialing without further prompting the user.
Поэтому если я кликну по ссылке в Safari — я получу окошко, которое будет спрашивать у меня действительно ли я хочу позвонить, но если я кликну по ссылке в webView установленного приложения — вызов начнется без моего подтверждения.
Нет. И это печально
После прочитанного меня терзали сомнения относительно таких «больших игроков» как Facebook, Twitter, Google, LinkedIn и так далее. Я думал, что такие «гиганты» могли бы позаботиться о подобной мелкой «дыре», но, как оказалось, я был не прав.
Я отправил ссылку на страницу через Facebook Messenger, кликнул по ней, чтобы попасть через webView на созданную ранее страницу (социальные приложения не хотят, чтобы вы покидали приложение и именно поэтому такие приложения используют webView), а потом кликнул по ссылке «click me»:
Клик по ссылке инициирует звонок. Погодите-ка… это не очень хорошо.
Множество людей считают, что такие вещи, как ссылки могут быть нажаты только пользователем. Как бы да не так! Используя хитрый, но простой до ужаса javascript скрипт, я сделал ссылку «самокликающейся».
Заметка: вы так-же можете делать редирект на стороне сервера, перекидывая пользователя по tel ссылке используя header(«Location: tel://0000»)
Я могу заставить вас набрать любой номер телефона единственным кликом по ссылке в любом приложении, в котором не отрегулирован процесс обработки tel ссылок. Поэтому да, это проблема безопасности.
Только представьте — я зарегистрировал платный номер телефона и отправил вам ссылку в Facebook Messenger или Twitter. Вы нажали и позвонили мне, я поднял трубку, чтобы снять с вашего счета немного денег.
Ну… Компания Apple не виновата. Люди вообще не читают документацию. Первый параграф по ссылке tel все до мельчайших подробностей расписывает — что, когда и как происходит, а также четко формулирует, что как бы то ни было установленные приложения могут быть настроены показывать свои собственные алерты.
А теперь для всех…
Пока я тестировал эту уязвимость только на нескольких приложениях больших компаний, можно также предполагать, что компании, и платформы помельче даже не думали о том, чтобы залатать эту уязвимость.
Автор: xjukebox
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/uyazvimost/68742
Ссылки в тексте:
[1] документацию о ссылках tel: http://tools.ietf.org/html/rfc3966
[2] был прав: https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/PhoneLinks/PhoneLinks.html
[3] Источник: http://habrahabr.ru/post/235311/
Нажмите здесь для печати.