The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

09.04.2018 11:35  Инцидент в сервисе непрерывной интеграции Travis CI

Разработчики сервиса непрерывной интеграции Travis CI раскрыли сведения об инциденте с повреждением инфраструктуры проекта 13 марта, в результате которого случайно была инициирована операция удаления всех таблиц из СУБД. В течение 30 минут после удаления сервис оставался доступен с повреждёнными данными, после чего был отключен на пять с половиной часов для проведения восстановления.

После восстановления всплыл неожиданный эффект - пользователи которые подключились к сервису за те 30 минут, что база оставалась повреждена, оказались подключенными под совсем другими аккаунтами. Подобный эффект объясняется тем, что для пользователей, которые вошли при пустой БД, были созданы новые записи и первичные ключи (данные в Travis CI синхронизируются с GitHub).

После восстановления новые токены аутентификации не были очищены и стали указывать на совсем другие записи (в PosgreSQL идентификатор последовательности (sequences) не был сброшен и созданные при пустой базе записи стали указывать на новые записи, созданные после восстановления). После того как проблема была замечена, разработчики Travis CI примерно через сутки после очистки БД удалили проблемные токены. По логу всего один пользователь успел подключиться к чужим данным. Тем не менее, всем пользователям, для которых было обнаружено пересечение, было направлено уведомление с предложением сгенерировать новые токены доступа.

Что касается причины удаления всех данных, то она кроется в давно забытом сеансе tmux на одной из рабочих машин проекта - когда-то давно один из разработчиков выполнял в данном сеансе инспектирование основной базы и оставил выставленной переменную окружения DATABASE_URL, указывающую на первичную БД. Много дней спустя разработчик в том же сеансе запустил локальный тест, в котором вызывался скрипт Database Cleaner, производящий очистку всех таблиц пред генерацией тестовой нагрузки. Так как переменная окружения DATABASE_URL указывала на основную СУБД, то и очистка была запущена в контексте первичной БД.

Для того чтобы подобное не повторилось в будущем в БД было отозвано право очистки таблиц. Во внутренние скрипты добавлен обработчик (spec_helpers), проверяющий наличие переменной окружения DATABASE_URL, а в утилитах обеспечен вывод соответствующего предупреждения. В gem-пакет Database Cleaner добавлена проверка на наличие переменной DATABASE_URL.

  1. Главная ссылка к новости (https://blog.travis-ci.com/201...)
  2. OpenNews: Инцидент с СУБД проекта GitLab
  3. OpenNews: Инфраструктура проекта Jenkins, возможно, подверглась взлому
  4. OpenNews: Критическая уязвимость в системе непрерывной интеграции Jenkins
  5. OpenNews: Серия уязвимостей в системе непрерывной интеграции Jenkins
  6. OpenNews: Атакующие заработали 3.3 млн долларов, организовав майнинг на уязвимых серверах Jenkins
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: travis, github
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (-), 11:59, 09/04/2018 [ответить] [показать ветку] [···]    [к модератору]
  • +18 +/
    Красивая история :) Бывает когда нажмёшь энтер и через секунду мозг понимает что ты допустим в правилах фаервола допустил ошибку а уже придётся ехать :)
     
     
  • 2.7, myhand (ok), 12:36, 09/04/2018 [^] [ответить]    [к модератору]
  • +/
    iptables-apply в Debian уже десятилетие, наверное, но мозги продолжают ехать...
     
     
  • 3.8, Аноним (-), 12:45, 09/04/2018 [^] [ответить]    [к модератору]
  • +6 +/
    Он написал "допустим", так что ..
     
  • 2.10, Еще анон (?), 12:57, 09/04/2018 [^] [ответить]    [к модератору]
  • +3 +/
    > ..а уже придётся ехать :)

    Причем, не просто ехать, а вот прям быстро-быстро ехать, пока звонки не начались!..

     
  • 2.15, Вы забыли заполнить поле Name (?), 13:14, 09/04/2018 [^] [ответить]    [к модератору]
  • –5 +/
    Скорее очередная грустная история о хиптсерах, которые не могу настроить разграничение доступов.
     
     
  • 3.23, ананим.orig (?), 16:04, 09/04/2018 [^] [ответить]    [к модератору]  
  • +3 +/
    да-да, нужно позвать эффектного манагера.
     
  • 2.19, Anon123 (?), 13:54, 09/04/2018 [^] [ответить]    [к модератору]  
  • +21 +/
    Народная примета: удалённая настройка фаервола - к дороге.
     
  • 2.25, kleem_head (?), 16:58, 09/04/2018 [^] [ответить]     [к модератору]  
  • –1 +/
    это когда в правой панеле mc выделенные файлы ненужного бэкапа, а в правой - выд... весь текст скрыт [показать]
     
     
  • 3.26, kleem_head (?), 16:59, 09/04/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    в левой и правой, попутался от остроты вспомненного
     
  • 2.27, Fomalhaut (?), 17:07, 09/04/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    Нередко осознание приходит уже в процессе полёта пальца к кнопке, но сознание уже не успевает отозвать команду.
     
  • 2.29, KonstantinB (ok), 17:34, 09/04/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    Купите IP-KVM или настройте аварийный PXE boot.

    Хотя, может, вам ездить проще. Ну, не знаю. Когда датацентр в другой стране, вариант "ехать" вообще отсутствует. :)

     
     
  • 3.30, klalafuda (?), 17:41, 09/04/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Ну если вы в Нижнем Уренгое а датацентр в Ларнаке... Может и не все так плохо
     
     
  • 4.42, Аноним (-), 07:56, 10/04/2018 [^] [ответить]    [к модератору]  
  • +/
    Нижний Уренгой? O_o
     
  • 2.55, Аноним (-), 01:16, 11/04/2018 [^] [ответить]     [к модератору]  
  • +/
    Я себе в таких случаях делаю watchdog timer Запускается нечто, что ожидает по... весь текст скрыт [показать]
     
  • 1.2, Аноним (-), 12:02, 09/04/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +4 +/
    DATABASE_URL указывала на основную СУБД (смех нельсона)
     
  • 1.3, Аноним (-), 12:16, 09/04/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    "бывает"
     
     
  • 2.5, rshadow (ok), 12:32, 09/04/2018 [^] [ответить]    [к модератору]  
  • +/
    Не хватает на опеннете стикеров, да?
     
  • 1.6, Gremlin (??), 12:32, 09/04/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    Никогда не понимал все эти сервисы непрерывной интеграции. Зачем это? Интеграция ради интеграции? А когда же отдыхать?
     
     
  • 2.9, Аноним (-), 12:52, 09/04/2018 [^] [ответить]     [к модератору]  
  • +5 +/
    Серьезно Непонятно зачем автоматизировать то, что можно автоматизировать Хотя ... весь текст скрыт [показать]
     
     
  • 3.14, пох (?), 13:13, 09/04/2018 [^] [ответить]     [к модератору]  
  • –6 +/
    это вы CT описали А travis это все же больше к CI, и там выгоды от автоматизац... весь текст скрыт [показать]
     
  • 2.11, llolik (ok), 12:58, 09/04/2018 [^] [ответить]     [к модератору]  
  • +2 +/
    Чего там не понимать-то Если совсем упрощённо - это автомат, который работает п... весь текст скрыт [показать]
     
     
  • 3.31, klalafuda (?), 17:44, 09/04/2018 [^] [ответить]     [к модератору]  
  • +2 +/
    Это хорошо можно прочувствовать только если проект собирается прогоняется под N ... весь текст скрыт [показать]
     
  • 2.13, myhand (ok), 13:12, 09/04/2018 [^] [ответить]     [к модератору]  
  • +/
    Ага А писание рукой не путать с рукоблудием , причем православными школьными... весь текст скрыт [показать]
     
     
  • 3.40, Michael Shigorin (ok), 23:30, 09/04/2018 [^] [ответить]     [к модератору]  
  • –2 +/
    А уж когда лекцию наговаривают, не особо тормозя на поворотах как у нас в лицее... весь текст скрыт [показать]
     
     
  • 4.44, myhand (ok), 12:14, 10/04/2018 [^] [ответить]     [к модератору]  
  • +/
    Ну раз за пару - смело увольняйте умников , которые каждый раз заново наговари... весь текст скрыт [показать]
     
  • 2.17, anonymous (??), 13:26, 09/04/2018 [^] [ответить]    [к модератору]  
  • +3 +/
    Если ты не понимаешь, зачем тебе CI, тогда тебе она не нужна. Ты не программист и не участвуешь в разработке многоплатформенного проекта с несколькими вариантами исполнения готового продукта.
     
     
  • 3.20, Аноним (-), 14:05, 09/04/2018 [^] [ответить]     [к модератору]  
  • +1 +/
    Наверное он не понимает, как можно доверять важные вещи какому-то мутному подели... весь текст скрыт [показать]
     
     
  • 4.35, Аноним (-), 19:41, 09/04/2018 [^] [ответить]     [к модератору]  
  • +/
    да вы поехавшие Какие вещи Доверять Это всего лишь триггер Условие выполн... весь текст скрыт [показать]
     
     
  • 5.36, Аноним (-), 19:49, 09/04/2018 [^] [ответить]    [к модератору]  
  • +/
    ты новость-то читал?
     
     
  • 6.37, пох (?), 20:19, 09/04/2018 [^] [ответить]     [к модератору]  
  • +/
    это уровень понимания кодошлепами и их тимлидами как новостей, так и вообще испо... весь текст скрыт [показать]
     
     
  • 7.46, Аноним (-), 12:47, 10/04/2018 [^] [ответить]    [к модератору]  
  • +/
    ct? вы хотя бы аббревиатуры расшифровывайте что ли
     
     
  • 8.47, Аноним (-), 13:12, 10/04/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Вот да. CI знаю, CD знаю, CT — что-то внезапно родившееся в мозге нашего дражайшего поха. Не иначе как continuous testing (хотя CI включает и тестирование в том числе).
     
  • 6.48, Аноним (-), 13:15, 10/04/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    > ты новость-то читал?

    Отвал CI на несколько часов разработке не помеха, многие его наверняка вообще не заметили. Если такое случается раз в несколько лет, а не каждый день, то фигня.

     
  • 2.39, Michael Shigorin (ok), 23:27, 09/04/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    > Никогда не понимал все эти сервисы непрерывной интеграции.
    > Зачем это? Интеграция ради интеграции? А когда же отдыхать?

    Когда дезинтегрируется, а чинить вон тому парню...

     
  • 1.16, Аноним (-), 13:18, 09/04/2018 [ответить] [показать ветку] [···]     [к модератору]  
  • +5 +/
    А я вот всегда если вижу старый терминал -- делаю новый Кто его знает какие там... весь текст скрыт [показать]
     
     
  • 2.43, J.L. (?), 11:59, 10/04/2018 [^] [ответить]     [к модератору]  
  • +/
    а монитор из спящего включаете по пробелу ентеру или по контролу ... весь текст скрыт [показать]
     
     
  • 3.52, Вы забыли заполнить поле Name (?), 14:45, 10/04/2018 [^] [ответить]    [к модератору]  
  • +/
    только NumLock, только хардкор
     
  • 1.18, YetAnotherOnanym (ok), 13:28, 09/04/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +6 +/
    Сеансы - это дефицитнейший ресурс! Их надо сохранять и многократно повторно использовать!
     
  • 1.21, Аноним (-), 14:07, 09/04/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +3 +/
    Мда,терминальные окна надо экономить, а то закончатся - придется покупать новые
     
     
  • 2.41, Michael Shigorin (ok), 23:32, 09/04/2018 [^] [ответить]    [к модератору]  
  • +/
    > Мда,терминальные окна надо экономить, а то закончатся - придется покупать новые

    Вот Вы ёрничаете, а у них, поди, терминальные лицензии и так заканчиваются.

    PS: ну мне тоже решительно непонятно, как вообще можно лепить такой скрипт, не выставляя тестовое окружение в нём же самом... "defensive programming придумали трусы".

     
     
  • 3.45, myhand (ok), 12:17, 10/04/2018 [^] [ответить]    [к модератору]  
  • –2 +/
    У них тестовое окружение - на .org, который для "нищ*бродов" (Максим, ну это дикость, а не фильтры "неприемлемой лексики"!) и прочего опенсорса.

    Кстати, вроде там ничего в тот раз не ломали.

     
  • 1.22, Адекват (ok), 14:40, 09/04/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    Представил такую ситуацию в гугл - "аккаунты всех пользователей удалены, потому что один из инженеров случайно стер бд с аккаунтами, теперь разобраться кому какие данные принадлежат - невозможно"
     
     
  • 2.24, Аноним (-), 16:57, 09/04/2018 [^] [ответить]    [к модератору]  
  • +10 +/
    Восстановят из архивной копии АНБ.
     
     
  • 3.33, АНБ (?), 18:39, 09/04/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    > Восстановят из архивной копии АНБ.

    это еще зачем? Все что вы разболтали в гугле, может быть использовано против вас, но кто вам обещал, что мы вам это покажем?

     
  • 2.32, Аноним (-), 18:29, 09/04/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Инженеры гугла могут только скрывать, удалять запрещено решением АНБ. Та же ерунда с телеграмом дурова, но говорят что у дурова уже нет ключей шифрования (не об OTR речь).
     
     
  • 3.34, АНБ (?), 18:41, 09/04/2018 [^] [ответить]    [к модератору]  
  • +/
    > Инженеры гугла могут только скрывать, удалять запрещено решением АНБ

    вот еще. Пусть хоть обудаляются - наша копия никуда не денется.

    кстати, забавная идея, учитывая что акаунты всех гуглосервисов нынче объединены в единственную хранилку... (нет, вы не то подумали, мы не хотим потерять нашего замечательного информатора)

     
  • 1.38, Аноним (-), 20:42, 09/04/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    >когда-то давно один из разработчиков
    >Много дней спустя разработчик
    >дней

    Какая милая попытка загладить вину :)

     
     
  • 2.49, Аноним (-), 13:28, 10/04/2018 [^] [ответить]     [к модератору]  
  • +/
    Да какая разница, сколько времени эта сессия висела Цимес не в этом, а в том, ч... весь текст скрыт [показать]
     
     
  • 3.56, zoonman (ok), 01:23, 11/04/2018 [^] [ответить]    [к модератору]  
  • +/
    Вполне себе нормальная ситуация, когда разработчик проверяет, что происходит на прод или запускает какую-либо аналитику для компании.
     
  • 1.57, Аноним (-), 13:39, 11/04/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Никогда не доверял этим конфигурациям через переменные окружения. Больные люди это придумали, банальный config.ini и то лучше.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor