CIOlogia Безопасность бизнеса · не на словах, а с доказательствами
← Все разборы Информационная безопасность

Зарядный разъём электромобиля как вектор атаки: разбор кейса на 800 000 рублей в сутки

Полный доступ к сети склада получили не через пароль администратора, а через диагностический канал зарядного кабеля — детально о том, как это работает и почему это системная проблема EV-инфраструктуры.

Разбор CIOlogia

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

Почему зарядный разъём — это не «просто провод»

В зарядных станциях стандарта CCS (Combined Charging System) и в DC-станциях используется не только силовая линия, но и линия управления — Control Pilot (CP) и Proximity Pilot (PP). Именно через CP поверх модуляции сигнала передаётся цифровой канал связи между станцией (EVSE — Electric Vehicle Supply Equipment) и электромобилем. Для этого применяется технология PLC (Power Line Communication) на базе HomePlug Green PHY — того же семейства протоколов, что используется в некоторых домашних сетевых адаптерах, только адаптированного под автомобильную специфику (стандарты ISO 15118 и DIN 70121).

Проблема в том, что этот канал изначально проектировался для обмена служебными данными «станция — автомобиль»: параметры зарядки, идентификация, тарификация, старт/стоп сессии. Но в реализациях многих производителей эта же PLC-сеть логически не отделена от сети управления самой станцией — вплоть до того, что через неё можно получить IP-адрес в сегменте, откуда виден веб-интерфейс менеджмента, OCPP-соединение с центральной системой и иногда даже соседние устройства на площадке.

Как это эксплуатируется

Ниже — типовой сценарий атаки на такую инфраструктуру, собранный из практики пентестов подобных объектов. Оборудование минимальное: PLC-адаптер HomePlug Green PHY (используются как готовые EVSE-совместимые дongl'ы, так и модифицированные под автомобильный профиль устройства на базе Qualcomm/Atheros), ноутбук с Kali Linux и разъём-переходник для физического подключения к CP-линии кабеля — совокупно это укладывается в 10-15 тысяч рублей.

Шаг 1. Физическое подключение и получение сетевого линка

Адаптер подключается к CP/PP линиям зарядного кабеля (без разбора самого кабеля, только через диагностический разъём или переходник). После этого на интерфейсе появляется PLC-линк, аналогичный обычному Ethernet-соединению.

ifconfig eth1 up
sudo plctool -i eth1 -a
# вывод: обнаружены соседние PLC-устройства (SECC станции) в сети

Инструменты из семейства open-plc-utils (plctool, plcstat, chkpayload) изначально созданы для сервисной настройки HomePlug-устройств, но прекрасно работают и для разведки в PLC-сегменте зарядной станции.

Шаг 2. Обнаружение SECC и захват V2G-трафика

Станция (SECC — Supply Equipment Communication Controller) анонсирует себя через SECC Discovery Protocol (SDP) по IPv6 multicast. Это можно поймать даже без специализированных EV-инструментов — обычным сканером пакетов.

tcpdump -i eth1 -w evse_capture.pcap ip6 and udp port 15118
wireshark evse_capture.pcap -Y "v2gtp || homeplug_av"

В захвате видно SDP-запрос/ответ, далее — установление V2GTP-сессии (V2G Transfer Protocol, порт 15118 по умолчанию), в рамках которой станция обменивается с «автомобилем» служебными XML/EXI-сообщениями: идентификация, параметры сессии, иногда — данные аутентификации по протоколу Plug & Charge (ISO 15118-2/-20).

Шаг 3. Получение IP в управляющем сегменте

Если станция не изолирует PLC-интерфейс от внутренней сети управления (частая ошибка конфигурации при инсталляции), устройство пентестера получает IP-адрес по DHCP или через ND (Neighbor Discovery) в том же VLAN, где находится веб-панель станции и OCPP-клиент.

nmap -sV -p- 192.168.50.0/24

PORT     STATE SERVICE      VERSION
80/tcp   open  http         nginx (EVSE management UI)
443/tcp  open  https        nginx
8080/tcp open  http-alt     WebSocket (OCPP 1.6-J)
502/tcp  open  modbus       Modbus TCP (счётчик энергии)

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

Шаг 4. Атака на веб-интерфейс и OCPP

Панель управления станцией нередко работает с дефолтными или слабыми учётными данными — производители далеко не всегда меняют заводской пароль при инсталляции.

hydra -l admin -P /usr/share/wordlists/rockyou.txt -s 443 https-post-form \
  "192.168.50.10/login:user=^USER^&pass=^PASS^:Invalid credentials"

[443][http-post-form] host: 192.168.50.10   login: admin   password: admin123

Отдельный класс проблем — сама реализация Central System по протоколу OCPP. В открытых проектах централизованного управления зарядными станциями (в частности, известные CVE в open-source платформах для OCPP 1.6, включая SQL-инъекции класса CVE-2021-33372 и проблемы аутентификации CVE-2021-32858) неоднократно фиксировались уязвимости, позволяющие без авторизации получать доступ к сессиям зарядки, менять тарифы и отправлять команды Remote Start/Stop Transaction на все подключённые станции сразу.

sqlmap -u "https://192.168.50.10/api/chargepoints?id=1" --batch --dbs
sqlmap identified the following injection point(s):
Parameter: id (GET)
    Type: boolean-based blind
available databases [3]:
[*] ocpp_core
[*] information_schema
[*] mysql

Дальше — сканер уязвимостей по готовым шаблонам для веб-панелей EVSE-оборудования:

nuclei -u https://192.168.50.10 -t exposures/ -t default-logins/

[default-login] [http] [medium] EVSE-Management-Panel default credentials
[exposed-panel] [http] [info] OCPP WebSocket endpoint exposed without auth

Что и почему сработало бы дальше

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

  • Массовая остановка зарядки — команда Remote Stop Transaction через OCPP на все станции сразу, либо перевод их в состояние Faulted через подмену диагностических кодов CP-сигнала.
  • Подмена учёта энергии — запись в Modbus-регистры счётчика или перехват MeterValues в OCPP-сообщениях, что напрямую бьёт по биллингу B2B-клиентов, если зарядка тарифицируется.
  • Латеральное перемещение — если станции физически находятся в общей VLAN с остальной инфраструктурой склада, дальше в ход идут стандартные техники: ARP-спуфинг (arpspoof), сканирование доступных SMB-шар (smbclient -L //192.168.50.0/), поиск учёток в открытых конфигах, попытки достучаться до сервера 1С или видеонаблюдения через уже скомпрометированный сегмент.
  • Закрепление — модификация прошивки станции или добавление скрытого пользователя в веб-панель управления, чтобы сохранить доступ после устранения очевидных следов.

Ключевая ошибка в таких инцидентах — не «слабый пароль», а архитектурная: диагностический/PLC-интерфейс, который физически доступен любому человеку с зарядным кабелем в руках, логически не отделён от критичной инфраструктуры предприятия.

Как закрыть

Устранение подобной уязвимости — это в первую очередь сетевая архитектура, а не патч на одном устройстве.

  • Вынести все EVSE в отдельный VLAN/подсеть без маршрутизации в основную сеть предприятия. На уровне коммутатора — ACL, полностью блокирующий трафик от подсети станций к серверам, камерам и 1С:
    access-list 110 deny ip 192.168.50.0 0.0.0.255 192.168.10.0 0.0.0.255
    access-list 110 permit ip any any
  • Закрыть диагностический доступ физически — исключить возможность подключения стороннего адаптера к CP/PP линиям без вскрытия корпуса станции либо использования сервисного ключа производителя.
  • Обновить прошивку станции и Central System до версий, где закрыты известные проблемы аутентификации OCPP, и перейти на OCPP 2.0.1 Security Profile 3 (TLS + mutual authentication) вместо небезопасного WebSocket без шифрования.
  • Отключить Modbus TCP от внешнего доступа или ограничить его только локальным контроллером станции, без выхода в управляющую сеть.
  • Сменить дефолтные учётные данные веб-панели управления и включить блокировку после нескольких неудачных попыток входа — это закрывает брутфорс через hydra.
  • Настроить мониторинг аномалий: правило IDS/Suricata на нетипичные SDP-запросы или на появление нового устройства в PLC-сегменте, плюс уведомление ответственному лицу при любой нештатной попытке подключения к диагностическому порту.
  • Регулярно тестировать зарядную инфраструктуру отдельно от остального ИТ-периметра — это тот класс оборудования, который обычные ИТ-аудиты просто не включают в область проверки.

В описанном кейсе весь комплекс мер занял два дня и обошёлся кратно дешевле одного дня простоя доставки. Но сама история показательна: чем «физичнее» устройство выглядит для пользователя — розетка, кабель, зарядный пистолет — тем реже про него вспоминают в контексте кибербезопасности, и тем охотнее там оседают архитектурные ошибки, которые в ИТ-периметре давно считаются неприемлемыми.