0day в расширении Any.DO — доступ к данным на всех сайтах (обход gmail 2-steps auth). Public disclosure. Затронуто ~500 тысяч пользователей

    Введение


    Мы очень часто слышим об уязвимостях в плагинах браузеров, особенно Java. Security отделы в компаниях в курсе этого, отключают java/flash и другие плагины у пользователей, мониторят апдейты, читают security-рассылки. Мы слышим о них настолько часто, что уже инициативные люди создали специальные сайты с отсчетом дней, когда не было бы опубликовано 0day эсксплойтов — java-0day.com


    Расширения VS Плагины


    Но есть еще и расширения, которые встраиваются в браузеры и взаимодействуют с данными. Их безопасность была поднята не так давно, и первые, довольно глубокие, исследования провел Krzysztof Kotowicz. Краткий пересказ его исследований и найденная 0day уязвимость (позволяющая получить доступ к данным на всех сайтах через XSS путем отправки специального письма на gmail), которую игнорирует вендор — под катом.


    Уязвимости в расширениях


    Рассматриваем WebKit (Opera/Chrome).
    Вкратце — расширения для браузеров пишутся на javascript с использованием API браузеров. Они взаимодействуют с контентом, видоизменяют его (например, центрируют изображения), собирают дополнительную статистику, шифруют почту, вызывая дополнительные утилиты и т.д. Перед установкой спрашивают разрешения — к каким сайтам / данным они будут иметь доступ, и очень часто запрашивается доступ ко всем сайтам.
    Здесь и начинаются узкие места, когда расширения некорректно обрабатывают входные для них данные. На примере расширения Cr-gpg v 0.7.4 (gpg в gmail) рассмотрим некоторые уязвимости, которые уже исправлены в новых версиях


    Расшифровка письма

    При расшифровке письма мы могли выполнить XSS, так как данные подставлялись «как есть»
    // content_script.js, line 26
    $($(messageElement).children()([0]).html(
      tempMessage);
    


    А еще и выполнить системные команды, так как для расшифровки было обращение к NPAPI

    Инъекция команды

    Это все исправлено, обычно уязвимости находились в не очень популярных расширениях.

    0day в Any.DO (459,692 users)


    Существует довольно популярное расширение — Any.DO, которым я сам пользовался (до недавнего времени). Обычный TODO лист, с некоторой фишкой — парсит письма в gmail при их открытии и предлагает добавить какое-нибудь новое задание. Расширение подставляет в интерфейс gmail свой элемент

    В котором была найдена XSS уязвимость. А теперь о главном — это не просто XSS, которую можно выполнить только в контексте данного домена (mail.google.com), данная XSS позволяет превратить браузер пользователя в прокси-сервер, который мы можем использовать для доступа к любому сайту с данными браузера жертвы. Почему? Потому что XSS выполняется в контексте расширения, которое имеет привилегии для доступа ко всем сайтам



    Об уязвимости было сообщено разработчику, но ответа не последовало. Лог:

    16/08/2013 — первое письмо об уязвимости;
    26/08/2013 — твит, который был проигнорирован;
    31/08/2013 — повторное письмо разработчику;
    06/09/2013 — публичное раскрытие об уязвимости, ответа от разработчика не последовало.


    Krzysztof разработал два инструмента для проведения атак через уязвимости в расширениях Google Chrome (естественно, уязвимости повторяются в Opera). Один из них — mosquito, будет продемонстрирован в следующем видео (включает в себя демонстрацию обхода 2х факторной авторизации Gmail)



    Ссылки


    Метки:
    Digital Security 113,19
    Безопасность как искусство
    Поделиться публикацией
    Похожие публикации
    Комментарии 12
    • +3
      The Simpsons — Days without an accident
      www.youtube.com/watch?v=hfzbB_B3HS0
      • +8
        Одни вендоры закрывают баги, сотрудничают и даже приглашают на работу, другие — игнорируют, а некоторые даже пишут заявление (мол, что это их детище трогают). Вендор вендору рознь :)
        • 0
          Хм, а где данные пользователей-то?
          Я в смысле для научного интереса онли (сам пользуюсь any.do)
          • 0
            Каких пользователей?
            Вы статью всю читали? Видео смотрели?
            • 0
              Public disclosure ~500 тысяч пользователей
              • +1
                Затронуто ~500 тысяч пользователей (количество пользователей расширения).
                Можете мысленно добавить слово «затронуто».
                • 0
                  Public disclosure — это не затронуто, это публичное раскрытие данных…
                  • 0
                    Публичное раскрытие 0day уязвимости. Затронуто ~500 000 пользователей
                    Это самое главное, что Вы нашли в статье?
                    • –2
                      Да, меня волнуют именно данные пользователей, ибо приблудой для gmail не пользуюсь.
          • +2
            Насколько я понял, это не совсем обход 2-х факторной авторизации, а сродни похищению сессии. Обязательными условиями являются: наличие уязвимого расширения, активная сессия (для 2-х факторной авторизации) на сайте, браузер с уязвимым расширением должен быть запущен.
            Впрочем, ущерб от этого не меньше. Поскольку, есть возможность проксирования в контексте браузера, то ни одна, даже самая хитрая, авторизация не спасёт, а «уязвимыми» будут — все посещаемые сайты. Более того — все внутренние ресурсы тоже могут быть под угрозой.
            Вывод: чем меньше сторонних расширений, тем лучше.
            • 0
              Any.DO написали, что пофиксили twitter.com/AnyDO/status/376837896520491009
              • 0
                Ага, и умолчали о втором письме и твите. Мол было только одно письмо, случайно пропустили) Ну да ладно, запатчились.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое