Когда обычные обновления системы заставляли критические системы хостинга терпеть неудачу и оставили машины, не разбитыми, команда 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