
Анализ уязвимости CVE 2024 3273: командная система устройств D-Link
D-Link Network Attached Storage (NAS), или сетевое хранилище, — это устройство с жёстким диском (или дисками), подключаемое к компьютерной сети для хранения и совместного использования файлов. В отличие от обычного внешнего жёсткого диска, который подключается напрямую к компьютеру, сетевое хранилище подключается к локальной сети, позволяя нескольким пользователям или устройствам одновременно использовать и обмениваться файлами. Устройства сетевого хранения используются как в домашних, так и в корпоративных решениях.
Компания VulDB Coordination, занимающаяся исследованиями в области безопасности, обнаружила критическую уязвимость (CVE-2024-3273) на некоторых устройствах сетевого хранения D-Link, которая позволяет злоумышленникам выполнять команды по сети, запуская вредоносные программные команды на устройстве жертвы.
Данная уязвимость затрагивает только определённые устройства D-Link, срок службы которых уже истёк, и производитель прекратил их программную и аппаратную поддержку. Затронуты следующие модели:
Эта уязвимость также требует одновременного использования другой уязвимости. А именно, устройство сетевого хранения становится особенно уязвимым из-за бэкдора, вызванного жёстко запрограммированными учётными данными для входа. Этот бэкдор — уязвимость CVE-2024-3272, где пользователь может обойти аутентификацию, используя «системного пользователя» messagebus, присутствующего по умолчанию на всех затронутых устройствах.
С этим пользователем системного демона (system daemon), существующим по умолчанию в системах Linux, нельзя напрямую войти в систему, но для нанесения вреда достаточно искусно составленного HTTP-запроса к определённой конечной точке.
Также необходимо знать ip-адрес атакуемого устройства.
Уязвимость скрыта в файле /cgi-bin/nas_sharing.cgi устройства сетевого хранения, в функции обработки HTTP GET-запроса. Злоумышленник может отправить GET-запрос по сети на устройство жертвы, передав в качестве параметров имя пользователя "messagebus" и оставив пароль пустым. Командная инъекция возникает при использовании параметра system, где значением параметра задаётся желаемая программная команда.
Команда скрывается с помощью кодировки base64 и добавляется в качестве значения параметра system. После декодирования раскрывается вредоносный фрагмент команды, который выполняется как shell-команда на атакуемом устройстве.
🗒️ CVSS Базовая оценка: 7.3 Высокий
Причиной уязвимости CVE-2024-3273 является CWE-77, то есть командная инъекция. Это означает, что злоумышленник может вставить вредоносные команды, которые затем выполняются атакуемой системой, поскольку введённая команда не проверяется.
Поскольку исходный код устройств не является общедоступным, вероятно, для предотвращения этой проблемы необходимо добавить функцию проверки в метод, обрабатывающий запросы. Например, можно было бы создать список разрешённых системных команд, чтобы предотвратить выполнение произвольной команды.
Уязвимость нарушает в первую очередь следующие цели безопасности:
Эта уязвимость затрагивает только устройства, срок службы которых истёк, поэтому производитель рекомендует заменить устройства и не использовать уязвимые устройства.
Поскольку эти устройства больше не поддерживаются, они не могут получать программные обновления безопасности, что означает, что уязвимость не будет исправлена. Таким образом, единственным решением является прекращение использования продуктов с уязвимостью.
Если заменить уязвимое устройство невозможно, необходимо обязательно удалить его из публичной сети и, в крайнем случае, использовать только для устройств в локальной сети (следует установить брандмауэр для блокировки внешних запросов).
По первоначальному отчёту, на момент обнаружения уязвимости в сети находилось более 92 000 устройств. Более позднее исследование показало, что это число могло быть значительно меньше, составляя около 5500 устройств. Тем не менее, многие старые устройства, вероятно, до сих пор подключены к сети и, следовательно, уязвимы.
Опубликовано несколько доказательств концепции атаки (PoC), и, вероятно, уязвимость по-прежнему широко используется. На данный момент выявлено как минимум 146 случаев, когда предпринимались попытки эксплуатации уязвимости CVE-2024-3273.
Фрагмент примера кода:
def execute_command(ip, command: str = "id", verbose: bool = True) -> str:
command_hex = ''.join(f'\\\\x{ord(c):02x}' for c in command)
command_final = f"echo -e {command_hex}|sh".replace(' ', '\t')
base64_cmd: str = base64.b64encode(command_final.encode()).decode()
url: str = f"{ip}/cgi-bin/nas_sharing.cgi"
params: dict = {
"user": "messagebus",
"passwd": "",
"cmd": "15",
"system": base64_cmd,
}