В конце мая ВКонтакте торжественно объявила о запуске открытой программы вознаграждений за уязвимости. Это, как и некоторые другие события, побудило меня на написание этой статьи. История началась еще в сентября 2014, когда во время написания мною сервиса, основанного на API социальной сети, я обнаружил уязвимость, которая позволяла узнавать как администратора сообщества, сделавшего пост, так и человека предложившего эту запись.

image

1. Обнаружение уязвимости


Уязвимость заключалась в методе API newsfeed.get. При выполнении самого обычного запроса к нему, в объекте, среди прочих, возвращался массив из 4-5 пользователей (profiles). Они, судя по документации, должны были являться пользователями из ленты новостей. Однако я никак не мог найти в ленте этих людей, и зачастую в массиве встречался только мой собственный аккаунт.

image

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

То есть, сделав к newsfeed.get запрос для получения последнего поста в ленте новостей, в массиве profiles мне возвращало администратора написавшего и пользователя предложившего как эту запись, так и предыдущие три.

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

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

image

Я написал скрипт, который первым делом создавал список новостей с определенным сообществом. Затем собирал для каждого поста этого сообщества свой массив с профилями. Здесь я столкнулся с лимитами API, оно отдавало мне посты лишь за последние 12 дней, но с этим тоже можно было работать.

После сбора массивов для максимально возможного количества постов, скрипт начинал их анализировать. Для начала находились те пользовательские id, которые встречаются ровно в четырех массивах. Из четырех постов, связанных с этими массивами я находил самый ранний. Этот пост был предложен в сообщество пользователем, чей id мы нашли. Затем эти пользователи отфильтровывались из массивов и мною составлялся список администраторов.

При желании вы можете посмотреть код эксплуатации уязвимости на Github .

2. Сообщаем об уязвимости


Являясь сознательным пользователем, после этого я отправился сообщать об уязвимости. Так как открытый баг-трекер я счел не лучшим местом для такого рода уязвимости, я связался сразу напрямую с разработчиками. Первый из разработчиков просто не ответил на мое сообщение, второй ответил спустя 4 дня, поблагодарил и обещал подумать, как это исправить.



Я знал об отсутствии официальной bug bounty программы у ВКонтакте, но также знал, что нередки были случаи поощрения за уязвимости внутренней валютой (голосами), однако решил отложить эти вопросы на момент исправления уязвимости. После этого я стал изредка мониторить уязвимость. Это продолжалось до апреля 2015, когда прочитав очередную статью об уязвимости и вознаграждении, я снова проверил свою уязвимость и она не была исправлена.

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

image

Наступил май, я снова решил проверить уязвимость, и она, наконец, была исправлена. На это потребовалось 8 месяцев. Со мной, несмотря на обещания, никто так и не связался, поэтому я решил написать сам, и заодно узнать критерии, по которым социальная сеть выплачивает вознаграждения. Меня ждала очередная неделя ожидания ответа от техподдержки, и сам ответ, в котором мне предложили подождать ещё.

image

Со мной связались лишь 29 мая, спустя несколько часов после запуска программы вознаграждения за уязвимости, заявив, что раз «уязвимость уже исправлена, то она не подпадает под новую программу и им мне нечего предложить».

Итоги


  1. Очередная уязвимость в приватности ВКонтакте
  2. Потребовалось 8 месяцев и 3 моих обращения для исправления
  3. Вопросы о вознаграждении игнорировались вплоть до запуска bug bounty программы, после чего мне под ее предлогом было отказано в какой-либо выплате
  4. Техподдержка предпочла длительное игнорирование каким-либо действиям


UPD: Похоже, после запуска программы поощрения ситуация изменилась не сильно.

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


  1. DanDare
    02.06.2015 16:25
    +10

    Год назад писал в саппорт «Вконтакта» о кривой верстке. Даже указал номер строчки в css файле и причину.

    www.youtube.com/watch?v=I_1dhI32WYY
    До сих пор не исправили.


    1. zenden2k
      02.06.2015 16:28
      +7

      Я им как-то написал, что счетчик лайков (скроллинг цифр) криво отображается при нестандартном DPI, а они мне ответили, что не оптимизируют сайт под разные масштабы.


      1. crmMaster
        02.06.2015 18:36

        Они вообще такой ерундой не занимаются, как оптимизация под конкретные платформы, им проще плашку вывести «Загрузите православный браузер», чем пытаться баги под IE и оперу фиксить.


        1. brainfucker
          03.06.2015 13:05
          -19

          Перешел на сайт автора данной статьи, bluzir.me/blog/2%27 как такой человек имеет право тут чтото писать?


          1. bleazer Автор
            03.06.2015 13:49
            +13

            Мне льстит, что разработчик VK ищет уязвимости в моем блоге, вместо исправления собственных


            1. brainfucker
              03.06.2015 15:00
              -8

              Мы работаем над исправлением тех уязвимостей, информация о которых доходит до нас, только с открытием программы на h1 у мы начали налаживать правильный подход для получения информации о них. А вы критикуете не разобравшись. Мы открыли информацию о выплатах на h1, при этом на сколько я знаю среди того что мы обработали – ничего с реальным применением не прислали (но большую часть заявок мы пока не успели обработать), но выплатили уже 2000$, что не может считаться жлобством со стороны ВК как ни крутите


              1. crmMaster
                03.06.2015 19:01
                +7

                2000 баксов? Вы издеваетесь? Фейсбук такую сумму за баг в верстке выплачивает. Да, я про те баги, которые вы за баги даже не считаете.


              1. Assorium
                10.06.2015 13:34

                И я по юнешеской дурости когда-то хотел у Вас работать…


      1. DanDare
        03.06.2015 12:10
        +5

        Платные смайлики прибыльнее, чем код править.


        1. fairplay
          05.06.2015 10:42
          +2

          При Дурове такого не было!


        1. mihmig
          10.06.2015 09:15
          +1

          Да уж, платные смайлики/стикеры — вот современный тренд!
          Что ж, создали стадо общество потребителей, создали спрос и предложение…


    1. Nostr
      02.06.2015 17:53

      Мы недавно писали им по поводу проблемы с капчей внутри виджетов. Исправили довольно оперативно.
      Видимо зависит от разных факторов.


    1. justaguest
      02.06.2015 21:32
      +2

      Еще в Августе прошлого года писал им о странном баге с юникодом в мобильной версии сайта. Сказали, что исправят, а воз и ныне там:
      image

      Моб. версия:
      image


      1. Chikey
        03.06.2015 10:01
        +4

        Кстати в мобильной версии под iOS везде <> видно как &-lt &-gt. Фейййл


    1. brainfucker
      03.06.2015 15:07
      -6

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


  1. MichaelBorisov
    02.06.2015 16:25
    +84

    Решение очевидно: если администрации не нужны сообщения об уязвимостях, или она не хочет за них платить — то не стоит ломиться в закрытую дверь, а предложить информацию тем, кому она нужнее.


    1. BelBES
      02.06.2015 16:33

      хм… а продажа уязвимостей в даркнете не наказуема разве?


      1. Terras
        02.06.2015 16:36
        +11

        Ну… например, можно потопить группу по типу «подслушано», если рассказать людям, что теперь можно видеть автора поста и так далее=)


      1. OnYourLips
        02.06.2015 16:38
        +5

        Использование наказуемо по российским законам.
        Продажа, насколько мне известно, под это не попадает.

        Ситуация похожа на речи бабок у подъезда: «Вот эта мелкая прошман*овка из 114 квартиры всегда в 10 вечера уходит, внучек, а бохатая дура, телевизор у нее на всю стенку, живет то одна».


        1. BelBES
          02.06.2015 17:02
          +2

          Ну, тогда возникает вопрос, как декларировать доходы от продажи уязвимостей…


          1. datacompboy
            02.06.2015 17:06
            +2

            Это единственный вопрос, который возникает?


            1. rednaxi
              02.06.2015 17:12
              +67

              Еще какой автомобиль взять, Астон мартин ДБ9 воланте или Мазерати Гран Кабрио?


              1. TimsTims
                04.06.2015 11:11
                +1

                Обожаю хабрахабр вот за это!


          1. MichaelBorisov
            02.06.2015 17:28
            +7

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


          1. makcums
            03.06.2015 16:25
            +1

            Откройте автомойку, ага :) Ну или лазертаг.


            1. SinnerLike
              04.06.2015 12:21
              +2

              Автомойка лучше.
              Можно бабки в тележке с кока-колой ввозить ;-)


        1. Terras
          02.06.2015 17:26
          +8

          Сделать парсер всех неудовлетворенных девушек из разных групп, и продавать эту информацию на специальных форумах различным альфачам?


      1. MichaelBorisov
        02.06.2015 17:18

        Вряд ли в США вас накажут, если вы предложите эту информацию АНБ, например. Надо просто смотреть по юрисдикции.


        1. BelBES
          02.06.2015 17:24
          +2

          Мне кажется, если я буду продавать уязвимости вконтактика АНБ, живя в России, то меня осудят за государственную измену (=


          1. MichaelBorisov
            02.06.2015 17:27
            +5

            Так я же говорю, смотрите по юрисдикции. Живете в России — предложите информацию ФСБ.


            1. Kolonist
              02.06.2015 17:44
              +2

              Боюсь, это не так выгодно ;)


              1. MichaelBorisov
                02.06.2015 18:06
                +1

                Иметь хорошие контакты в СБ государства, в котором живете — всегда выгодно. Вам могут предложить выгодную работу или подряды, если даже много не предложат за конкретную найденную уязвимость.


            1. mammuthus
              02.06.2015 17:59

              Боюсь, они в курсе.


              1. MichaelBorisov
                02.06.2015 18:08
                +5

                А вы проверьте. Думаете, там боги сидят и все знают?


                1. Temirkhan
                  02.06.2015 20:41
                  -5

                  Есть слушок, что «военные технологии» на порядок опережают все остальные.


      1. amarao
        02.06.2015 17:27

        Опишите статью, под которую попадает продажа уязвимости.


        1. BelBES
          02.06.2015 17:34

          Ну так я потому, что я не знаю такой статьи, но сомнения по этому поводу имеются.

          В порядке бреда: при жалении суд наверняка может упустить момент продажи и будет формулировка аля «гражданин А, получив инструкции от гражданина Б, совершил преступление предусмотренное статьями...» им пойдет горе-продавец как соучастник преступления.


          1. amarao
            02.06.2015 17:46
            +1

            Для соучастия надо знать про готовящееся предступление. Незаконный доступ к ЭВМ и изготовление вредоносных программ не покрывают информацию об уязвимости.

            Я не вижу ни одной статьи (кроме «резиновых» хулиганства и экстримизма), которые можно было притянуть к продаже информации об уязвимости.


            1. forgotten
              03.06.2015 09:13

              Так как бы в суде-то будут бить по морде, а не по паспорту. Вероятно, это будет соучастие в этом самом незаконном доступе к ЭВМ. А строить из себя целочку и рассказывать, что ты знать не знал, что в даркнете обитают злые дяди и даже не подумал, что они дают тебе денежек с целью сделать что-то нехорошее — курам на смех.


      1. Zibx
        02.06.2015 20:26

        нет. Наказуема только продажа уязвимости с несоблюдением должных мер предосторожности.


    1. sebres
      02.06.2015 22:13

      Нельзя так делать, от слова никогда :)
      Тогда уж лучше раскрывать подробности уязвимости только по факту оплаты (см. например habrahabr.ru/post/258513/). Хотя ту идею, кстати не мою, хабрасообщество местами почему-то оценило гораздо менее одобрительно (шантаж и злостное вымогательство).


    1. brainfucker
      03.06.2015 13:16
      -15

      Откуда информация о том, что уязвимости не нужны и что ВК не готовы платить за них, неужели вы думаете, что это то, на чем у нас есть желание экономить, особенно учитывая то, что для компании данные суммы не являются большими?

      Дело в том что налетела куча мудаков и начала клянчить деньги либо за мелкие проблемы, за которые станно ожидать больше 100$ либо за баг который был давно, и о котором репортило в разное время человек 100, потому что он вылез гдето на форуме, что теперь мы всем должны всем школьникам способным перепостить запись с форума в интерфейс поддержки по 10000$ выплачивать, серьезно?


      1. fairplay
        05.06.2015 10:45
        +6

        Можно ли ссылаться на второй абзац, как на позицию VK, озвученную одним из представителей социальной сети?


      1. Beltoev
        07.06.2015 01:38
        +5

        Мне одному показалось, что сейчас автора поста прямым текстом мудаком обозвали?

        Ну, назвался представителем компании, зачем такие вольности в словах допускать?


      1. BelBES
        07.06.2015 12:00
        +5

        либо за баг который был давно, и о котором репортило в разное время человек 100

        А как вы доказываете тот факт, что ошибка уже была найдена? Есть какой-то публичный багтрекер, где можно посомтреть на наденые ошибки? Иначе получается, что абсолютно про любую найденую уязвимость можно сказать, что её уже кто-то нашел…


      1. Pilat
        09.06.2015 10:42
        +7

        То есть 100 человек в течении 8-ми месяцев или больше писали вам об одном и том же баге, а вы не реагировали?


  1. ivaaaan
    02.06.2015 17:23
    +9

    Мне тех поддержка примерно так ответила, когда я им написал про баг в апи:

    Вроде как и баг, но никому не мешает, а иногда бывает полезен.


    Может у вас тоже вроде как и уязвимость, но никому не мешает, а иногда бывает и полезна?


    1. Borz
      02.06.2015 17:28
      +17

      любой баг «иногда бывает полезным» кому либо


  1. kinguru
    02.06.2015 17:54
    -1

    Это наши реалии. Этим «еропейская/американская» приличная компания отличается практически от любой «нашей».
    Отношение к клиенту пофигистское. Я уже давно не вКонтакте.


    1. ximaera
      02.06.2015 20:36
      +9

      Да ни фига она не отличается. Это общемировые реалии.


      1. Chikey
        03.06.2015 10:02

        Это как сравнить яндекс с газпромом. Есть технологич. компании а есть обычные, им можно.


        1. ximaera
          03.06.2015 10:31

          Во-первых, всё равно нельзя. Головотяпство есть головотяпство.

          Во-вторых, а что технологические компании? То же самое, что и в обычной среде: есть нормальные вроде Яндекса, а есть вот такое вот.


      1. MichaelBorisov
        03.06.2015 14:05

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

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

        Но однажды нашелся студент, который раскопал в интернете информацию об одной уязвимости линукса, скачал эксплойт, с его помощью взломал один из центральных серверов и потер на нем содержимое винта. Типа «убедительная демонстрация». И вот этот поступок уже перешел границу. Преподам пришлось потратить уйму времени на восстановление сервера при том, что у юного хакера не было никакой необходимости в такой «жестокой» демонстрации своего успеха. К тому же, это была не его личная заслуга, а чужие разработки. И этого студента уже никто по головке не гладил, у него испортились отношения с компьютерными преподами. Да и я этот поступок не одобрил. По мне так: нашел уязвимость — продемонстрировал взлом с минимальным ущербом — сообщил преподам. Или: нашел уязвимость и тихо используешь для себя, не мешая другим работать.


        1. ximaera
          03.06.2015 14:08
          +1

          Ну логично. А тут это при чём? Автор никому не навредил.


          1. MichaelBorisov
            03.06.2015 22:56

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


            1. ximaera
              04.06.2015 03:32

              Хорошо. А какое отношение это имеет к треду про разницу между русскими и западными компаниями? :-)


            1. ximaera
              04.06.2015 03:41
              +1

              Кстати, описанная вами причина — не единственная и даже (по моему опыту) не главная. Есть ещё как минимум три:

              — «то есть он нас, что, взломал? То есть совершил уголовное преступление? Пусть теперь сядет в тюрьму, куда полиция смотрит вообще»
              — «это он на меня наехал, что ли? Типа, крутой, за лоха меня держит? Да я ему сейчас!..»
              «зачастую накрывшаяся премия безопасников сейчас намного для них важнее чем украденные пару миллионов долларов у компании через пару лет, когда они уже будут работать в другом месте»


              1. SVlad
                09.06.2015 10:46

                Пункт два — это ведь как раз то, что описано в комментарии выше.


                1. ximaera
                  09.06.2015 14:00

                  ИМХО технически не совсем. Между формами восприятия «вторгся в личное пространство» и «пытается подорвать авторитет» есть некоторая существенная разница — людям из 90-х первое перенести куда проще, чем второе.


      1. kinguru
        05.06.2015 08:46

        Приведу в пример Амазон. Kindle.
        Девайс ломается здесь по вине пользователя (треснул экран).
        Что делает амазон — меняет девайс бесплатно и берет на себя все расходы по доставкам в обе стороны.

        Что делает вКонтакте? Морозится как мелкий жулик, делает вид что никаких договоренностей не было.
        Человеческий фактор не отменить. Воспитание этого недоменеджера, который так себя ведет позорит всю компанию.

        И таких недоменеджеров все ещё большинство на постсоветском пространстве. Почему именно тут, скажите пожалуйста?


        1. ximaera
          09.06.2015 13:56

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

          Если говорить про ритейл, могу привести пример, как мне М-Видео скидку в 50% выписало за то, что у товара на чеке не тот ценник был указан. Дело было в Москве, вполне себе на постсоветском пространстве.


  1. dginz
    02.06.2015 18:24
    +4

    «ВКонтакте» не платит пользователям за найденные уязвимости


    image


    1. Terras
      02.06.2015 18:36
      +4

      А теперь давайте сроки согласования данной штуки?


      1. dginz
        02.06.2015 19:41

        Какой штуки?


    1. vodopad
      02.06.2015 20:11
      +31

      Шутка про то, что ВК вместо денег даёт шоколадки «Баунти». Просто другие обычно указывают сумму.


      1. dginz
        02.06.2015 20:23

        Шутка про шоколадку с минимальной стоимостью в 100$.


        1. sayber
          02.06.2015 22:36
          +1

          vk выплачивает в долларах? Интересно.


          1. gospodinmir
            04.06.2015 11:14

            Очевидно, что это связано с работой сервиса hackerone.


        1. kinguru
          05.06.2015 08:53
          +1

          Можно огласить конкретные цифры и сложность уязвимости?


  1. TsarIoann
    02.06.2015 20:03
    +23

    Мораль сей басни такова — не надо никуда обращаться, надо сразу статью на Хабре писать про уязвимость)


  1. TimsTims
    02.06.2015 21:30
    +10

    Так говорили же в той теме, что о баге было заявлено до старта HackerOne.
    Это что, если следуя логике автора Вконтакте должен сейчас выплатить всем, кто за все эти 10+лет сообщил о баге? У них конечно бюджет позволит это сделать, но найти информацию «кто первый это узнал» действительно сложно, используя только открытые источники, ведь действительно не было еще формы «сообщаю о баге первым»

    Лично я считаю это стандартной практикой, когда ты сначала закрываешь кучу своих багов, всё проверяешь и вроде всё работает правильно, и когда уже ТЫ САМ(тестеры) не можешь найти ошибки, то запускаешь программу баунти-ревардов, чтобы найти другие ошибки.


  1. dezconnect
    02.06.2015 23:20
    -17

    Школота негодует.


  1. artishok
    03.06.2015 10:22
    +7

    Техподдержка сидит на аутсорсе, иногда из дома. Поэтому с ними вести переговоры об уязвимостях бесполезно…


    1. IamKarlson
      07.06.2015 21:04
      +6

      судя по адекватости представителей в этом посте, иногда еще и с уроков сидят


  1. InteractiveTechnology
    01.07.2015 20:26

    Да, вк очень не оперативно реагирует на баги. В API есть серьёзный баг с данными, они отдаются неправильно вообще!
    Запостил в саппорт 23 мая 2015 в 16:26, после немного глупых вопросов с периодичностью ответа раз в неделю.
    17 июн 2015 в 11:24 баг подтвердили и на этом история пока закончилась…


    1. TsarIoann
      02.07.2015 15:41

      А что за баг? Можете скинуть ссылку на него?