В функционале социальной сети Вконтакте обнаружен и успешно эксплуатировался опасный баг — хранимая XSS с функционалом сетевого червя.


В данный момент уязвимость устранена.


Сообщества и пользователи ВКонтакте вечером 14 февраля начали публиковать одну и ту же запись. В записи говорится о том, что в личных сообщениях в соцсети появилась реклама.



За сутки до взлома в сообществе «Багосы» было обсуждение уязвимости, тем не менее соц сеть оказалась не готова к атаке.



После начала атаки сообщество было заблокировано, но тут же появилось несколько клонов.


При получении вредоносного кода он тут же транслируется во все личные диалоги и сообщества атакуемого, увеличивая пандемию.




Используемый javascript код можно найти по ссылке.


Примечательно то, что в коде js-пейлоада содержится несколько сообщений, произвольно добавляющихся при распространении:


var t = ["Всё меньше причин оставаться ВК.. Ждем пока mail group окончательно загонят сайт в яму и переходим на telegram", "Дурову пора создавать новый вконтакте, этот уже испортили", "Прости, Паша, мы все прое*али", "Ну это уже ни в какие рамки", "ВКонтакте окончательно загнулись", "Мда, меилру продолжает губить все, к чему прикасается", "Это пи*дец, товарищи", "Раньше было лучше", "стало очень неудобно", "лучше бы делом занялись", "я просто в шоке", "без комментариев", "Как же достали со своими обновлениями", "Фуфло полное ,не трогайте сообщения!", "сначала музыка, теперь ЭТО", "С такими говновведениями, что тут бодяжат последнее время, со всякими дебильными ветоШными комментами, тупыми закладками, невидимыми репостами и т.д., все и так сбегут скоро"],

d = ["Социальная сеть ВKонтакте зaпустила реклaму в личных сообщенияx пользоватeлей", "СМИ: ВКонтакте запустили pекламу в личных соoбщениях", "ВКонтакте запустили рекламу в сообщениях", "ВКонтакте появилась реклама в сообщениях", "ВКонтакте ввели рекламу в сообщениях", "ВКонтакте тестирует рекламу в личныx сообщениях", "ВКонтакте представили рекламу в личных сообщениях", "Реклaма в личных сoобщениях появилась ВКонтакте", "Пользователей BКонтакте взбесила реклама в личных сообщениях", "Пользователи ВКонтакте протестуют против рекламы в личных сообщениях", "Реклама в личных сообщениях вывела из себя пользователей ВКонтакте", "ВКонтакте: мы запускаем рекламу в личных сообщениях", "ВКонтакте: теперь рекламодатели могут размещать рекламу в сообщениях пользователей", "ВКонтакте прокомментировали жалобы пользoвателей на рекламy в сообщeниях", "Пользователи ВКонтакте в ярости из-за рекламы в личных сообщениях", "Пользователи бегут из социальной сети ВКонтакте из-за рекламы в личных сообщениях"],

Уязвимости такого класса и эффекта довольно редки, но тем не менее все еще встречаются. Стоимость такой уязвимости должна оцениваться исходя из ее импакта и того урона, который она может нанести пользователям. Некоторые ресерчеры могут быть не согласны с политикой выплаты вознаграждения и выбирают альтернативный путь — использование ее in the wild ради шутки и привлечения внимания к проблеме.




Что делать: выйдите из всех сессий социальной сети и смените пароль (необязательно, но желательно), а также проверьте номер телефона и email, привязанные к аккаунту.

Комментарии (41)


  1. andreymal
    14.02.2019 21:08
    +2

    за сообщение о такой ошибке MailRu Group выплатили бы щедрое баунти

    А сами багоси пишут, что не платили в течение целого года, именно поэтому и запустили сабж


    1. LukaSafonov Автор
      14.02.2019 21:09
      -3

      1. andreymal
        14.02.2019 21:11
        +10

        Это называется систематическая ошибка выжившего


  1. AlexRed
    14.02.2019 21:08

    Говорят у них (VK) даже политика CSP не настроена


  1. FlamyXD
    14.02.2019 21:14
    +1

    Шикарная работа, багосы


  1. pyrk2142
    14.02.2019 21:47
    +13

    причем за сообщение о такой ошибке MailRu Group выплатили бы щедрое баунти

    Как человек, который сообщал в Баг Баунти о возможности доступа к многомиллионному количеству аккаунтов в ВК, а через месяц получивший крайне щедрое «мы знаем об этом из внутренних источников» я больше не хочу сообщать туда что-то серьёзное. Сейчас думаю о том, что делать с другими интересными багами.


    1. LukaSafonov Автор
      14.02.2019 21:52

      Уже изменил последний абзац, но как багхантера понимаю Вас. Не применимо к ББ ВК, а в целом, примеры приводить не буду, по чатикам и так все о них знают.


    1. andreymal
      14.02.2019 21:57
      +3

      что делать с другими интересными багами

      Примерно то же, что произошло с одним из багов сегодня


      1. kzhyg
        14.02.2019 23:01

        Делать добро и бросать его в воду? =\


    1. QtRoS
      15.02.2019 13:20
      +3

      А, ясно, зря я надеялся на рассмотрение моего medium-репорта за обозримый срок (на данный момент больше месяца уже), раз critical никто не смотрит...


  1. bzzz00
    14.02.2019 22:37
    +10

    совет — выйдите из ВК и не заходите.


    1. shifttstas
      15.02.2019 08:10
      +2

      Я бы даже сказал:


      1. Зайдёт в ВК
      2. Удалите страницу


      1. sumanai
        16.02.2019 21:38

        У меня не выйдет. Удалил станицу пару лет назад ((


  1. swelf
    14.02.2019 22:47

    У меня пару вопросов от нуба
    1)В вк в сообщениях можно посылать сырые html теги? в данном случае iframe с любыми параметрами
    2)Как вк(любой сайт) должен защищаться от такого, когда в его теле загружается iframe с левого домена.


    1. andreymal
      14.02.2019 22:51

      1) Нет, это следствие некорректной обработки ссылки
      2) В данной уязвимости не было iframe с левым доменом


      1. TimsTims
        15.02.2019 01:24

        А что было то? Есть техническое описание, как это было? А то получается, вы всё знаете, но капитаните и молчите. Добавьте еще:
        3) Вам стоит выйти из vk и зайти снова.


        1. andreymal
          15.02.2019 01:26

          Знаю только то, что уже успели написать в комментарии ниже


    1. Merkat0r
      15.02.2019 05:33

      )Как вк(любой сайт) должен защищаться от такого, когда в его теле загружается iframe с левого домена.

      CSP: frame-src


      1. DarkByte
        15.02.2019 09:15

        В ВК подразумевается легитимная возможность отображения роликов с ютуба во фрейме. Но в данном случае загвоздка же не в iframe-src была.


        1. Merkat0r
          15.02.2019 15:26

          подразумевается, и?)
          бтв — это ответ на вопрос про ифреймы, а не конкретно эту ситуацию все же


          1. DarkByte
            15.02.2019 15:31

            Вопрос был в том числе про ВК. CSP в данном случае спасло бы, но только script-src.


  1. tempick
    14.02.2019 23:01
    +2

    Вот тут чел расписал более коротко и ёмко vk.com/wall278247703_262


    1. popov654
      15.02.2019 08:58

      Он как-то несколько странно всё описал. Во-первых, про Вики-страницы совершенно ничего не понятно — наверное имелось в виду, что править разметку HTML можно только при редактировании вики-страницы, но никак не при отправке обычного сообщения в ЛС — хотя механизм вставки видеоролика и там и там должен быть примерно одинаковым по идее. И дальше про iframe немного намудрил: вк получает результат парсинга страницы с видеозаписью через локальный скрипт-«гейт», расположенный на домене vk.com, и делается это через обычный XHR скорее всего (в ЛС точно именно так всё происходит). Таким образом, вредоносный скрипт подключается прямо в head текущей страницы.

      А вот что именно он делает — автор толком не рассказал, а ведь это как раз достаточно интересно.


      1. egormerkushev
        15.02.2019 11:14

        Всё там хорошо описано.


        1. popov654
          15.02.2019 20:23

          Я бы не сказал. Слог у автора довольно корявый (я надеюсь, он меня простит, если это читает).


      1. tempick
        15.02.2019 17:06

        Что делает? Перебирает группы пользователя в цикле и размещает пост там, где это можно. Это же логично. А если нет — можно самому открыть скрипт (там есть скрин, где ссылка на скрипт на гитхабе есть. Достаточно вбить этот url в адресную строку и увидите, как оно работает). Но такой скрипт написать — как раз плюнуть. Гораздо сложнее найти xss-уязвимость и внедрить его. А как это было сделано — об этом как раз автор и рассказывает.


        1. popov654
          15.02.2019 20:25

          Да я-то знаю, что он делает. Но не все же тут JS кодеры, кто читает эту новость (возможно). На самом деле, тут есть три интересных момента:

          1) То, что мы внедрили вредоносный скрипт прямо в документ, дало нам возможность читать через XHR ответы от share.php
          2) share.php выдаёт список групп и hash, причём последний — не является одноразовым, поэтому и возможна рассылка в цикле подряд без его обновления
          3) Капчи при этом действительно нет


  1. vintage
    15.02.2019 07:27

    Так всегда бывает, когда фронтендом занимаются бэкендеры.


    1. babylon
      15.02.2019 08:47
      -1

      Как всегда беспощаден в своих комментариях:) Впрочем, а чего сюсюкать. Правильный фронтенд как по мне на порядок сложнее бэкенда.


      1. vintage
        15.02.2019 10:39
        -3

        Не в этом суть. Отсутствие санитайзинга пользовательского контента по белому списку — это детский сад. Что понятно любому, кто знаком со всем многообразием тегов, аттрибутов и, внезапно, css-свойств.


        1. popov654
          15.02.2019 11:00
          +1

          А что можно через CSS-свойства сделать плохого? Кроме раздражающей анимации


          1. e_juke
            15.02.2019 11:19
            +1

            1. TheShock
              15.02.2019 12:07

              Вытащить часть пароля/текста, используя шрифты
              Круто! А как это пофиксили в итоге?


              1. caffeinum
                15.02.2019 15:47

                Из статьи по ссылке:

                I reported this trick to Chrome Team but it has been marked WontFix on Issue 543078.

                Chrome отказались исправлять баг, сославшись на спецификацию.
                https://bugs.chromium.org/p/chromium/issues/detail?id=543078


          1. vintage
            15.02.2019 11:19

            Самые эпичные — это -moz-binding в мозилле и expression в ишаке. Но эти лавочки уже прикрыли.


  1. OnelaW
    15.02.2019 14:14
    +1

    Черномырдин (с)
    Лавров (с)


    1. sensem
      15.02.2019 15:55
      +3

      Получилось аж микростихотворение.


    1. Chamie
      15.02.2019 17:27

      А что именно из Черномырдина?


      1. OnelaW
        15.02.2019 17:32
        +1

        Отродясь такого не бывало, и опять то же самое


  1. bliznezz
    15.02.2019 16:43

    Помню такие же развлечения на заре развития, во времена ласипаН -а, когда стена еще была, GET-запросы ты в разных местах создавали записи на стене.


  1. lotse8
    15.02.2019 17:02
    +1

    Извечные проблемы России — дураки, дороги, а теперь еще и социальные сети.