Как критический сбой хостинга решил кризис DevOps

Когда обычные обновления системы заставляли критические системы хостинга терпеть неудачу и оставили машины, не разбитыми, команда DevOps Pentera оказалась в гонке со временем против кошмарного ошибки.

С остановкой операции, они сотрудничали с собственными исследователями безопасности компании с другой точки зрения. Это сотрудничество выявило недостаток в хостинговой платформе и продемонстрировала силу междисциплинарной командной работы для решения сложных проблем. Эта история предлагает план для устойчивости для организаций, сталкивающихся с аналогичными проблемами: объединение технических ноу-хау со стратегическим сотрудничеством, чтобы оставаться впереди разрушений.

Неожиданная ошибка загрузки

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

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

Глядя немного дальше вверх по терминалу, они также могли видеть:

Что -то заставляло libcrypto.so.1.1 отсутствует во время процесса загрузки, что делает машину непригодным.

Если сомневаться (и столкнуться с кризисом времени): мозговой штурм

Под давлением, чтобы развернуть обновления продуктов по графику, команда DevOps столкнулась с трудным решением. Они не знали, откуда возникла проблема, и им нужно было быстро ее выяснить. Был убедительный признак того, что что -то с initramfs было неверным, что является ключевым компонентом во время загрузки Debian и других систем Linux, но немного больше, чем это. С этими знаниями они могли бы связаться с командой Debian для долгосрочных пониманий, но нет никакого прогнозирования, сколько времени это займет, и это не решит непосредственную проблему возвращения в Интернет в ближайшее время.

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

Будучи исследовательской группой в команде Pentera Labs, мой опыт и перспектива отличаются от опыта команды DevOps. Хотя их опыт в основном фокусируется на создании и поддержании продуктов, моя роль включает в себя исследование последних тенденций и методов атаки, понимание того, как актеры угроз используют уязвимости, и, по сути, выяснить, как эффективно нарушать и использовать вещи.

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

Debian mkinitramfs недостаток

Я провел две недели, анализируя систему и тесно сотрудничая с DevOps. Мы обнаружили основную причину: ошибка, которая была бездействием в системе, пока этот конкретный сценарий не вызвал его. Интересно, что проблема не была напрямую связана с выбором инструментов или обновлений инфраструктуры, но выявила более значительную системную слабость в Debian.

Виновник

Обычной частью установки нашего продукта является обновление пакетов системы, чтобы иметь последние версии. Чтобы достичь этого, мы собрали код Python, который запускает обновления APT. В этом случае это была нашей проблемой причины. Во время расследования мы обнаружили, что запуск апгрейда APT в файле ELF, который был составлен с использованием Pyinstaller, является причиной этой ошибки. Далее копаясь, почему это происходило, это выглядело как Pyinstaller упаковал некоторые библиотеки с помощью исполняемого файла, а затем использовал переменную среды LD_Library_Path для их загрузки. Короче говоря, LD_Library_Path указывает каталоги, в которых система должна искать динамические библиотеки перед поиском стандартных путей библиотеки.

Удаление обновления APT из файла ELF привело к исчезновению сбоя.

Этот аварий может быть легко воспроизведен с помощью следующей команды (протестирована на Ubuntu 20.04).

mkdir /tmp /lib & amp; cp/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1/tmp/lib & amp; & amp; Ld_library_path = «/tmp/lib» apt -y обновление & amp; & amp; перезагрузить 1 mkdir /tmp /lib & amp; & amp; cp/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1/tmp/lib & amp; & amp; Ld_library_path = «/tmp/lib» apt -y обновление & amp; & amp; перезагрузить

Основная причина

Процесс обновления может обновить ядро ​​или другие критические пакеты, требующие изменений в начальной файловой системе RAM (initramfs). Initramfs содержат основные драйверы и инструменты для монтажа корневой файловой системы и загрузки системы, поэтому они должны быть восстановлены, когда обновления влияют на процесс загрузки.

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

Copy Exec использует команду DD для проверки библиотечных зависимостей для этих двоичных файлов и копирует их. Например, запуск LDD ON /SBIN /MODPROBE:

Мы можем увидеть libcrypto.so.1.1 здесь.

В начале сценария Mkinitramfs он создает необходимые каталоги для копирования этих библиотек.

Однако из -за переменной среды LD_Library_path вывод LDD изменяется.

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

Копирование/tmp/lib/libcrypto.so.1.1 to /var/tmp/mkinitramfs_e4jscd//tmp/lib/libcrypto.so.1.1 1 Копирование/tmp/libcrypto.so.1.1 to/var/tmp/mkinitramfs_e4jsc.so.1.1 to/var/tmp/mkinitramfs_e4jsc.so.1.1 to/var/tmp/mkinitramfs_e4jsc. tmp/lib/libcrypto.so.1.1

Directory /TMP /LIB никогда не создавался во временном каталоге Mkinitramfs, в результате чего команда CP не удалась. Таким образом, любая библиотека внутри каталога LD_Library_Path была исключена из изображения initramfs.

Исправление

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

Похоже, что команда Debian сталкивалась с аналогичной проблемой в прошлом, о чем свидетельствует использование LDD в Copy_exec:

Переменная среда LD_PRELOAD не является при использовании команды LDD.

LD_PRELOAD работает очень аналогично LD_LIBRARY_PATH, за исключением того, что она указывает на конкретную библиотеку, а не на каталог библиотек.

Итак, чтобы исправить ошибку, которую мы нашли, все, что нужно сделать, это добавить еще один флаг к использованию команды LDD:

-unset = ld_library_path 1-unset = ld_library_path

Перспектива безопасности

Как исследователь безопасности, исследующий ситуацию, я был заинтригован потенциальным использованием того, что я нашел в качестве вектора атаки. Результатом будет массовая атака DOS на критические услуги хостинга, очень разрушительный эндшпиль. Тем не менее, логически, с моей точки зрения, это не самая привлекательная тактика, если ваша цель с самого начала заключается в том, чтобы закрыть всю операцию.

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

Междисциплинированное сотрудничество: план устойчивости

Этот инцидент подчеркивает, как междисциплинированное сотрудничество повышает устойчивость на организационном уровне. Объединяя эксплуатационную экспертизу команды DevOps с расследовательным мышлением исследователей безопасности, мы избегали ждать команды Debian для поддержки. Этот подход позволил нам определить основную проблему и развить реальное исправление, а не полагаться на грубый обходной путь.

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

Чтобы сделать сотрудничество, подобное этому, повторяющимся процессом, лидеры могут предпринять преднамеренные шаги, чтобы институционализировать его. Например:

Создать межфункциональные «Tiger Teams» решать проблемы с высоким приоритетом, которые сокращают дисциплины
Создать общие центры знаний где команды могут документировать и обмениваться пониманиями, инструментами и стратегиями для решения повторяющихся задач
Продвигать возможности для перекрестных тренировок, Таким образом, члены команды разрабатывают базовое понимание других дисциплин, улучшая общение и доверие, когда пришло время сотрудничать

Устойчивость — это не только решение сегодняшних проблем — речь идет о строительных системах и культурах, которые могут адаптироваться к завтрашним задачам. Стратегическая командная работа-это не просто «приятное»; Это то, как организации процветают в все более сложном и непредсказуемом мире.

Сегодняшний цифровой мир требует устойчивости и исключительной работы. Цифровые предприятия обращаются к платформе IPM Catchpoint IPM, чтобы активно выявлять и решать проблемы в интернет -стеке, прежде чем они повлияют на клиентов или рабочую силу. Интернет опирается на Catchpoint. Узнайте больше последних из The Catchpoint Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Matan Liber — руководитель группы по кибератак, исследователь безопасности и разработчик эксплуатации в Pentera. До прихода в Pentera Matan служил в классифицированном подразделении в IDF, специализируясь на анализе вредоносных программ, обратной инженерии и IR. Узнайте больше от Matan Liber

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *