Введение
ИТ-организации, которые полагаются на бесплатное программное обеспечение с открытым исходным кодом (FOSS), сталкиваются с постоянной проблемой при обработке незащищенных общих библиотек.
Это нетривиальная проблема, так как общие библиотеки являются объектом атак.
Например, исследования показывают, что OpenSSL является наиболее целевым программным обеспечением в мире, на которое приходится 19% враждебной активности во всем мире – https://hello.global.ntt/en-us/insights/2020-global-threat-intelligence-report
Что такое UChecker
UChecker, сокращение от Userspace Checker, – это бесплатный сканер с открытым исходным кодом, который определяет, какие из ваших процессов все еще используют устаревшие библиотеки и требуют перезапуска.
Инструмент был создан KernelCare во время разработки live patching для общих библиотек.
С помощью Uchecker вы можете идентифицировать уязвимые библиотеки FOSS и исправлять их.
Вам придется перезагрузить затронутые процессы (если вы не используете службы обновления библиотеки без перезагрузки), но, просканировав уязвимости, вы можете определить, какие процессы требуют внимания, а какие нет.
В результате вы избегаете ненужных перезагрузок сервера, которые приводят к ухудшению качества обслуживания и/или сбоям, а также к созданию доступа уязвимостям, поскольку библиотеки остаются без исправлений до тех пор, пока не будет запланирована перезагрузка.
На самом деле, вы можете даже не знать, какие службы используют какие библиотеки, поэтому возникает соблазн просто перезагрузить сервер, чтобы обновить все, или перезапустить основные службы.
Эта практика тоже может быть такой же разрушительной, как и перезагрузка.
Как работает UChecker
Uchecker работает со всеми современными дистрибутивами Linux, начиная с 6-й версии.
Это бесплатное программное обеспечение, созданное на основе JSON и открытое для распространения и/или модификации в соответствии с условиями Стандартной общественной лицензии GNU.
Uchecker обнаруживает процессы, которые используют старые (то есть не исправленные) общие библиотеки.
Он обнаруживает и сообщает об устаревших библиотеках, которые используются запущенными процессами.
Его возможности обнаружения основаны на сравнении BuildID.
В результате инструмент знает об удаленных или замененных файлах.
Инструмент Uchecker может определять идентификатор и имя процесса, а также имена общих библиотек, которые не исправлены, а также их идентификаторы сборки.
Uchecker получает последние BuildID из ресурсов KC.
Затем он запускает процесс путем итерации по /proc/ и получает связанную общую библиотеку из /proc/<pid>/maps.
В этот момент Uchecker спрашивает, не была ли общая библиотека заменена или удалена.
В зависимости от ответа программа будет либо анализировать ELF из файловой системы, либо анализировать ELF из отображаемой памяти.
Затем Uchecker собирает BuildID из .note.gnu.build-id.
Обнаружение устаревших библиотек в памяти с помощью UChecker
Установка не требуется!
Просто запустите скрипт Uchecker, чтобы найти непропатченные библиотеки на вашем сервере Linux:
# curl -s -L https://kernelcare.com/checker | python
Заключение
Uchecker позволяет обновлять библиотеки FOSS.
Вы можете избежать обычных хлопот, связанных с перезагрузкой серверов, потому что вы не знаете, какие процессы необходимо перезапустить.
Это актуально, среди прочего, для библиотек OpenSSL и GNU C (glibc).
Благодаря таким технологиям, как KernelCare +, теперь даже возможно провести оперативное исправление уязвимостей в основных библиотеках пользовательского пространства в дополнение к библиотекам ядра Linux.
Вы можете обновлять приложения, не влияя на их рабочее состояние.
Никаких перезапусков и перезагрузок не требуется.
Скачать скрипт:
https://github.com/cloudlinux/kcare-uchecker