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, 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 выделенные файлы ненужного бэкапа, а в правой - выделенные файлы удаленно подключенной боевой БД. Ты нажимаешь F8 -> Удалить все И СУДОРОЖНО ВСПОМИНАЕШЬ КАКАЯ ПАНЕЛЬ БЫЛА АКТИВНА.
     
     
  • 3.26, kleem_head, 16:59, 09/04/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    в левой и правой, попутался от остроты вспомненного
     
  • 2.27, Fomalhaut, 17:07, 09/04/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +2 +/
    Нередко осознание приходит уже в процессе полёта пальца к кнопке, но сознание уже не успевает отозвать команду.
     
  • 2.29, KonstantinB, 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, 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, 12:58, 09/04/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +2 +/
    Чего там не понимать-то Если совсем упрощённо - это автомат, который работает п... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.31, klalafuda, 17:44, 09/04/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +2 +/
    > Чего там не понимать-то? Если совсем упрощённо - это автомат, который работает
    > по схеме: закоммитили в наблюдаемую ветку -> CI собирает проект ->
    > не собралось - плохо, ищем что сломалось (логи и отчёты в
    > помощь) / собралось - хорошо, CI гоняет автотесты -> тесты где-то
    > сфейлились - плохо, но хотя бы собирется, выясняем где фейлы (логи
    > и отчёты тестов в помощь) / тесты успешны - можно деплоиться
    > или что-там ещё делать по желанию -> далее по кругу с
    > первого шага.

    Это хорошо можно прочувствовать только если проект собирается/прогоняется под N разных платформ и даже сборка не то что прогон под каждую из них занимает существенное время.

     
  • 2.13, myhand, 13:12, 09/04/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Ага А писание рукой не путать с рукоблудием , причем православными школьными... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.40, Michael Shigorin, 23:30, 09/04/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • –2 +/
    > Ага.  А писание рукой (не путать с рукоблудием!),
    > причем православными школьными чернилами -
    > "развивает мелкую моторику" (тм).

    А уж когда лекцию наговаривают, не особо тормозя на поворотах (как у нас в лицее) -- так ещё и навыки сжатия на лету развиваются буквально за пару недель.  Не путать с путаньем всего со всем.

     
     
  • 4.44, myhand, 12:14, 10/04/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    >> "развивает мелкую моторику" (тм).
    > А уж когда лекцию наговаривают, не особо тормозя на поворотах (как у
    > нас в лицее) -- так ещё и навыки сжатия на лету развиваются буквально за пару недель.

    Ну раз за пару - смело увольняйте "умников", которые каждый раз заново "наговаривают" то, чему место на 99% в слайдах презентации и готовых конспектах.


     
  • 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 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    это уровень понимания кодошлепами и их тимлидами как новостей, так и вообще используемых ими технологий.

    зато у всех остальных, конечно же, зип и они "ничего не умеют".

    Чем ci от ct отличается, похоже, тоже им не объяснили, давай-давай, проект не ждет пока ты разберешься в используемых тобой инструментах.

     
     
  • 7.46, Аноним, 12:47, 10/04/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    ct? вы хотя бы аббревиатуры расшифровывайте что ли
     
     
  • 8.47, Аноним, 13:12, 10/04/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Вот да CI знаю, CD знаю, CT 8212 что-то внезапно родившееся в мозге нашего д... весь текст скрыт [показать]
     
  • 6.48, Аноним, 13:15, 10/04/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Отвал CI на несколько часов разработке не помеха, многие его наверняка вообще не... весь текст скрыт [показать]
     
  • 2.39, Michael Shigorin, 23:27, 09/04/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +1 +/
    > Никогда не понимал все эти сервисы непрерывной интеграции.
    > Зачем это? Интеграция ради интеграции? А когда же отдыхать?

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

     
  • 1.16, Аноним, 13:18, 09/04/2018 [ответить] [смотреть все]     [к модератору]  
  • +5 +/
    А я вот всегда если вижу старый терминал -- делаю новый Кто его знает какие там... весь текст скрыт [показать]
     
     
  • 2.43, J.L., 11:59, 10/04/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    >>  Много дней спустя разработчик в том же сеансе запустил локальный тест, в котором вызывался скрипт Database Cleaner, производящий очистку всех таблиц пред генерацией тестовой нагрузки.
    > А я вот всегда если вижу старый терминал -- делаю новый. Кто
    > его знает какие там тараканы с пауками успели завестись.

    а монитор из спящего включаете по пробелу/ентеру или по контролу?

     
     
  • 3.52, Вы забыли заполнить поле Name, 14:45, 10/04/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    только NumLock, только хардкор
     
  • 1.18, YetAnotherOnanym, 13:28, 09/04/2018 [ответить] [смотреть все]    [к модератору]  
  • +6 +/
    Сеансы - это дефицитнейший ресурс! Их надо сохранять и многократно повторно использовать!
     
  • 1.21, Аноним, 14:07, 09/04/2018 [ответить] [смотреть все]    [к модератору]  
  • +3 +/
    Мда,терминальные окна надо экономить, а то закончатся - придется покупать новые
     
     
  • 2.41, Michael Shigorin, 23:32, 09/04/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    > Мда,терминальные окна надо экономить, а то закончатся - придется покупать новые

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

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

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

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

     
  • 1.22, Адекват, 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 +/
    Инженеры гугла могут только скрывать, удалять запрещено решением АНБ Та же ерун... весь текст скрыт [показать] [показать ветку]
     
     
  • 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, 01:23, 11/04/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Вполне себе нормальная ситуация, когда разработчик проверяет, что происходит на прод или запускает какую-либо аналитику для компании.
     
  • 1.57, Аноним, 13:39, 11/04/2018 [ответить] [смотреть все]     [к модератору]  
  • +/
    Никогда не доверял этим конфигурациям через переменные окружения Больные люди э... весь текст скрыт [показать]
     

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


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