Обнаружение устаревших общих библиотек в памяти с помощью UChecker
В этом руководстве объясняется, что такое UCecker и как обнаружить устаревшие общие библиотеки в памяти с помощью UChecker в операционных системах Linux.
Введение
ИТ-организации, которые полагаются на бесплатное и открытое программное обеспечение (FOSS), сталкиваются с постоянной проблемой обработки неисправленных общих библиотек. Это нетривиальная проблема, поскольку общие библиотеки представляют собой широкую поверхность для атак. Например, исследования показывают, что OpenSSL является наиболее целенаправленным программным обеспечением в мире, на него приходится 19 % враждебной активности во всем мире.
Если вы отвечаете за библиотеки OpenSSL и GNU C (glibc), среди многих сопоставимых наборов кодов с открытым исходным кодом, вы обязаны выполнять своевременные обновления и управление исправлениями. Традиционный подход к обновлению библиотек предполагает перезагрузку всего сервера или перезапуск всех процессов, если нет возможности определить, какие процессы все еще используют устаревшие библиотеки. Однако перезагрузка системы сама по себе вызывает осложнения и риски. Благодаря команде KernelCare мы можем легко решить эту проблему с помощью простого скрипта под названием UCecker.
Что такое UChecker
UCecker, сокращение от Userspace Checker, — это бесплатный сканер с открытым исходным кодом, который определяет, какие из ваших процессов все еще используют устаревшие библиотеки и требуют перезагрузки. Он был создан во время разработки оперативного исправления для общих библиотек компанией KernelCare. С помощью Uchecker вы можете выявить уязвимые библиотеки FOSS и исправить их. Вам придется перезагрузить затронутые процессы (если вы не используете службы обновления библиотек без перезагрузки), но путем сканирования уязвимостей вы можете определить, какие процессы требуют внимания, а какие нет.
В результате вы избегаете ненужных перезагрузок сервера, которые приводят к ухудшению качества обслуживания и/или сбоям в работе, а также к созданию окон уязвимостей, поскольку библиотеки остаются необновленными до тех пор, пока не будет запланирована перезагрузка. Действительно, вы можете даже не знать, какие службы какие библиотеки используют, поэтому возникает соблазн просто перезагрузить весь сервер, чтобы обновить их все, или перезапустить основные службы. Эта практика также может оказаться столь же разрушительной, как и перезагрузка.
Как работает UChecker
Uchecker работает со всеми современными дистрибутивами Linux, начиная с 6-й версии. Это бесплатное программное обеспечение, созданное с использованием JSON и открытое для распространения и/или модификации в соответствии с условиями Стандартной общественной лицензии GNU. Uchecker обнаруживает процессы, использующие старые (т.е. непропатченные) общие библиотеки. Он обнаруживает и сообщает об устаревших общих библиотеках, которые используются запущенными процессами. Его возможности обнаружения основаны на сравнении BuildID. В результате они знают об удаленных или замененных файлах.
На следующей графической иллюстрации показано, как работает Uchecker.
Как работает UChecker
Инструмент Uchecker способен определять идентификатор и имя процесса, а также имена общих библиотек, которые не были исправлены, а также их идентификаторы сборки. Uchecker получает последние BuildID из ресурсов KC. Затем он запускает процесс, перебирая /proc/
, и получает связанную общую библиотеку из /proc/
. В этот момент Uchecker спрашивает, не была ли общая библиотека заменена или удалена. В зависимости от ответа программа либо анализирует ELF из файловой системы, либо анализирует ELF из отображаемой памяти. Затем Uchecker получает BuildID из .note.gnu.build-id
.
Обнаружение устаревших общих библиотек в памяти с помощью UChecker
Установка не требуется! Просто запустите скрипт Uchecker, чтобы найти непропатченные библиотеки на вашем Linux-сервере:
curl -s -L https://kernelcare.com/checker | python
Приведенная выше команда сканирует ваши серверные системы Linux на наличие устаревших общих библиотек, связанных с процессами python, и выводит их список в стандартном выводе.
Обнаружение устаревших общих библиотек в памяти с помощью Uchecker
Затем вы можете обновить эти непропатченные библиотеки, используя менеджер пакетов вашей системы по умолчанию.
Наглядную демонстрацию работы Uchecker смотрите в следующем видео:
Демонстрация Uchecker
Заключение
Uchecker позволяет вам поддерживать ваши библиотеки FOSS в актуальном состоянии. Вы можете избежать обычных проблем, связанных с перезагрузкой серверов, поскольку вы не знаете, какие процессы необходимо перезапустить. Это актуально, среди прочего, для библиотек OpenSSL и GNU C (glibc). Благодаря таким технологиям, как KernelCare+, теперь можно даже оперативно исправлять уязвимости в основных библиотеках пользовательского пространства в дополнение к библиотекам ядра Linux. Вы можете обновлять приложения, не влияя на их рабочее состояние. Никаких перезапусков или перезагрузок не требуется.
Ресурс:
- Репозиторий UCheker на GitHub
Связанное чтение:
- 5 инструментов динамического исправления ядра, которые помогут запускать серверы Linux без перезагрузок