...

вторник, 2 сентября 2014 г.

[Перевод] 0day уязвимость в приложениях для iOS: Gmail, Google+ и FB Messenger

Интро



Нормальные люди проводят ночи смотря фильмы, читая статьи, общаясь в социальных сетях или (да, я знаю — это странно) засыпая на кровати.

Я же провожу свои ночи читая документации и тестируя самые разнообразные приложения и сервисы.

Одной ночью я просто читал документацию по ссылках tel, так как я был в восторге от старых технологий, которые использовались до сих пор, их недостатков и того, что люди никогда не читали RFC, что и приводит их к RTFM PWNAGE (как я привык это называть).
Нужно пробовать



Как только я закончил читать документацию по tel — я посмотрел на свой iPhone и сказал: Круто, нужно пробовать! Я накодил маленькую HTML страницу и загрузил ее в Safari, вот код:

image

Как только я кликнул по ссылке — тут-же появилось диалоговое окно, которое спрашивало действительно ли я хочу позвонить по телефону 0000.



Apple



На данном этапе была только моя заинтересованность в ссылках tel, я не искал уязвимость. Но тут меня озарило: Apple очень сильно любит менять что-либо и делать вещи лучше, так может быть у Apple есть своя документация по TEL? И я был прав
Строка, в которую я влюбился



Apple's documentation on the tel scheme is really short and easy to read. While reading the first paragraph something caught my attention:

Документация 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



Я отправил ссылку на страницу через Facebook Messenger, кликнул по ней, чтобы попасть через webView на созданную ранее страницу (социальные приложения не хотят, чтобы вы покидали приложение и именно поэтому такие приложения используют webView), а потом кликнул по ссылке «click me»:

Клик по ссылке инициирует звонок. Погодите-ка… это не очень хорошо.


Делаем ссылку самокликающейся

A lot of people make fake assumptions such as links are only clicked by users. Using some sneaky-beaky-like javascript I quickly made the link click itself:

Множество людей считают, что такие вещи, как ссылки могут быть нажаты только пользователем. Как бы да не так! Используя хитрый, но простой до ужаса javascript скрипт, я сделал ссылку «самокликающейся».

image


Смотрите что происходит
image


Заметка: вы так-же можете делать редирект на стороне сервера, перекидывая пользователя по tel ссылке используя header(«Location: tel://0000»)


Можно ли считать это проблемой безопасности?



Я могу заставить вас набрать любой номер телефона единственным кликом по ссылке в любом приложении, в котором не отрегулирован процесс обработки tel ссылок. Поэтому да, это проблема безопасности.

Только представьте — я зарегистрировал платный номер телефона и отправил вам ссылку в Facebook Messenger или Twitter. Вы нажали и позвонили мне, я поднял трубку, чтобы снять с вашего счета немного денег.


Это не правильно! Кто же виноват?



Ну… Компания Apple не виновата. Люди вообще не читают документацию. Первый параграф по ссылке tel все до мельчайших подробностей расписывает — что, когда и как происходит, а также четко формулирует, что как бы то ни было установленные приложения могут быть настроены показывать свои собственные алерты.
Кто же не RTFM?



Facebook Messenger
image


Gmail
image


Google+
image


А теперь для всех…


Будьте осторожны



Пока я тестировал эту уязвимость только на нескольких приложениях больших компаний, можно также предполагать, что компании, и платформы помельче даже не думали о том, чтобы залатать эту уязвимость.

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий