Sploitus

Exploit for CVE-2021-37740

kitploit · 2026-08-25

Exploit Code

MARKDOWN69 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-ROBERTGUETZKOW-CVE-2021-37740
# Доказательство концепции для CVE-2021-37740

## Содержание

  * Введение
  * Уязвимость
  * Выполнение PoC
  * Устранение
  * Координированное раскрытие уязвимости
  * Лицензия
  * Журнал изменений



## Введение

CVE-2021-37740 — это уязвимость типа «отказ в обслуживании» (DoS), затрагивающая прошивку v3.0.3 маршрутизатора KNXnet/IP Secure SCN-IP100.03 и интерфейса SCN-IP000.03 от MDT. Специально сформированный кадр KNXnet/IP Secure приводит к тому, что устройство перестаёт отвечать на последующие запросы, для восстановления нормальной работы требуется перезагрузка. Данный репозиторий содержит доказательство концепции, демонстрирующее, как можно вызвать ошибку; изначально оно было разработано для координированного раскрытия уязвимости.

## Уязвимость

Злоумышленник может воспользоваться уязвимостью, установив TCP-соединение с целевым устройством, после чего отправить кадр `SESSION_REQUEST` с изменённым полем общей длины, содержащим значение `0x0259` или выше. Устройства, подверженные уязвимости, перестанут отвечать на кадры KNXnet/IP Secure в любом соединении. `SESSION_REQUEST` — это первый кадр, отправляемый при рукопожатии протокола KNXnet/IP Secure unicast, как указано в ISO 22510:2019. Он должен иметь фиксированную длину 46 байт. Стандарт требует, чтобы кадры с отклоняющейся длиной отбрасывались.

![Модифицированный кадр SESSION_REQUEST.](https://raw.githubusercontent.com/robertguetzkow/cve-2021-37740/HEAD/imgs/session-request.svg)

## Выполнение доказательства концепции

Для скриптов, представленных в этом репозитории, требуется Python 3. `healthcheck.py` предназначен для проверки, отвечает ли устройство. Он устанавливает TCP-соединение с целевым устройством и пытается начать рукопожатие KNXnet/IP Secure unicast. Если устройство отправляет ответ, он выводится в шестнадцатеричном виде в `stdout`. `poc.py` пытается вызвать DoS-уязвимость, отправляя недопустимый кадр `SESSION_REQUEST`. Если устройство уязвимо, последующие выполнения `healthcheck.py` не приведут к ответу, пока целевое устройство не будет перезагружено.

Скрипты можно выполнить следующими командами, где `<insert IP address>` необходимо заменить на фактический IP-адрес (например, `192.168.2.137`).

`python3 healthcheck.py -t <insert IP address>`

`python3 poc.py -t <insert IP address>`

В Windows псевдоним для Python, возможно, придётся изменить с `python3` на `python`. Если целевое устройство использует порт управления, отличный от `3671`, то порт в скрипте необходимо соответствующим образом изменить.

## Устранение

Уязвимость была исправлена в прошивке v3.0.4, о чём свидетельствует журнал изменений прошивки MDT. Установка последней версии прошивки устраняет проблему. Инструкции по обновлению прошивки и файл `.hex` предоставлены на веб-сайте MDT.

## Координированное раскрытие уязвимости

  * 2021-07-06 - Проблема сообщена в MDT
  * 2021-07-07 - MDT начало исследование
  * 2021-07-28 - MDT подтвердило ошибку и предоставило исправленную прошивку для тестирования
  * 2021-08-01 - MDT получено подтверждение, что ошибка исправлена
  * 2021-08-02 - MDT выпустило прошивку v3.0.4
  * 2022-04-01 - Публичное раскрытие



## Лицензия

Доказательство концепции распространяется по лицензии MIT.

## Журнал изменений

### 1.0.0 - 2022-04-01

**Загрузка:**

  * Исходный код



**Изменения:**

  * Начальная версия