Более трех лет особенности работы рендеринга URL-адресов в мессенджерах iMessage, WhatsApp, Signal и многих других позволяли создавать фишинговые сообщения, выглядящие крайне достоверно.

Издание Bleeping Computer рассказывает, что уязвимости связанные с ошибками рендеринга, приводят к тому, что интерфейс приложений некорректно отображает URL-адреса с внедренными символами Unicode RTLO (Right to Left Override), которые обычно применяются для отображения сообщений на арабском языке или иврите. Проблема заключается в том, что после такого управляющего символа все последующие отображаются справа налево, и это делает пользователя уязвимым для атак с подменой URI.

Фишеры злоупотребляли этим, чтобы их вредоносные сообщения выглядели как настоящие, содержащие ссылки на надежные, официальные домены apple.com и google.com.

Уязвимостям были присвоены следующие идентификаторы CVE:

CVE-2020-20093 – Facebook* Messenger 227.0 и более ранних версий для iOS, а также 228.1.0.10.116 и более ранних версий для Android;
CVE-2020-20094 – Instagram* 106.0 и более ранних версий для iOS и 107.0.0.11 и более ранних версий для Android;
CVE-2020-20095 – iMessage 14.3 и более ранних версий для iOS;
CVE-2020-20096 – WhatsApp 2.19.80 и более ранних версий для iOS, а также 2.19.222 и более ранних версий для Android.

Хотя Signal проблема тоже коснулась, для него CVE пока нет, так как метод атаки на этот мессенджер был обнаружен совсем недавно. В целом, как можно заметить, идентификаторы CVE были назначены уязвимостям еще в 2020 году, так как впервые эти баги еще в 2019 году заменил ИБ-специалист, известный под ником zadewg.

Недавно эти CVE были обнародованы в Twitter CVE Program, где на них наткнулся внештатный исследователь Sick.Codes и решил продолжить их изучение. Он обратился к zadewg и спросил, не делал ли тот недавно свой репозиторий общедоступным, но исследователь тоже оказался удивлен тем, что CVE были опубликованы только теперь, спустя столько времени. Дополнительной информацией об эксплуатации уязвимостей, которые ранее были показаны только на видео, он делиться не захотел, поэтому аналитик Sick.Codes решил воспроизвести эксплоит самостоятельно и написать PoC.

В итоге PoC был опубликован на GitHub, так как уязвимости, скорее всего, уже давно и активно эксплуатируются преступниками. Этот однострочный эксплоит крайне прост и злоупотребляет доверием iOS и Android к gTLD, а также внедряет между двумя URL управляющий символ U+202E, чтобы все последующие отображались справа налево, как в примере ниже.

Более того, отмечается, что URL-адрес gepj.xyz будет отображаться как безобидный файл изображения zyx.jpeg, а kpa.li превратится в APK-файл li.apk и так далее.

При этом Bleeping Computer обращает внимание на некоторые особенности работы эксплоита в iMessage, Signal и даже в Gmail. Хотя объединенные таким способом URL-адреса могут выглядеть как один, на самом деле они рассматриваются приложением как два URL-адреса. То есть, если пользователь кликнет на левую часть адреса, он перейдет на настоящий Google.com, а если на правую сторону, то перейдет по вредоносной ссылке.

Журналисты пишут, что существует немало свидетельств эксплуатации проблем RTLO хакерами, хотя такие атаки часто бывают связаны с более сложными техническими концепциями. Более того, аналогичные уязвимости, скорее всего, можно обнаружить во многих других приложениях, включая мессенджеры и клиенты для работы с электронной почтой (вышеперечисленные CVE просто уже являются подтвержденными).

К примеру, сообщается, что раньше перед RTLO-атаками был уязвим Telegram, но его разработчики одними из первых решили эту проблему. Команда разработчиков Signal, в свою очередь, отреагировала на отчет Sick.Codes крайне оперативно и сообщила, что патч войдет в состав следующего релиза.

Sick.Codes пишет, что баги по-прежнему представляют опасность во всех протестированных приложениях. Для защиты пользователям пока предлагается отключить везде предварительный просмотр ссылок, не заходить на подозрительные сайты со странными всплывающими окнами и не нажимать на сообщения с «розыгрышами призов».

Так как символы Unicode RTLO имеют и вполне «мирное» применение, неясно, смогут ли разработчики приложений окончательно избавиться от этих проблем, ведь патчи могут нарушить нормальную функциональность их продуктов.

* Заблокирован в России, принадлежит компании Meta, признанной экстремистской организацией, запрещенной на территории РФ.

Источник: xakep