CVE-2026-28230

HIGH CVSS 4.0: 7,1 EPSS 0.05%
Обновлено 27 февраля 2026
Steve
Параметр Значение
CVSS 7,1 (HIGH)
Тип уязвимости CWE-284 (Неправильный контроль доступа)
Поставщик Steve
Публичный эксплойт Нет

SteVe — это система управления зарядными станциями для электромобилей с открытым исходным кодом. В версиях до 3.11.0 включительно, когда зарядное устройство отправляет сообщение StopTransaction, SteVe ищет транзакцию исключительно по идентификатору транзакции (последовательное целое число, начинающееся с 1), не проверяя, соответствует ли запрашивающее зарядное устройство зарядному устройству, которое первоначально запустило транзакцию. Любое аутентифицированное зарядное устройство может завершить активный сеанс любого другого зарядного устройства во всей сети.

Основная причина заключается в OcppServerRepositoryImpl.getTransaction(), который запрашивает только идентификатор транзакции без проверки владения chargeBoxId. Валидатор проверяет, что транзакция существует и еще не остановлена, но никогда не проверяет идентичность. Как злоумышленник, контролирующий одно зарегистрированное зарядное устройство, я мог перечислять последовательные идентификаторы транзакций и отправлять сообщения StopTransaction, нацеленные на активные сеансы на всех остальных зарядных устройствах в сети одновременно.

В сочетании с FINDING-014 (неаутентифицированные конечные точки SOAP) даже не требуется никакого зарегистрированного зарядного устройства — атака может быть выполнена с помощью одной команды завивки, требующей только известного chargeBoxId. Коммит 7f169c6c5b36a9c458ec41ce8af581972e5c724e содержит исправление этой проблемы.

Показать оригинальное описание (EN)

SteVe is an open-source EV charging station management system. In versions up to and including 3.11.0, when a charger sends a StopTransaction message, SteVe looks up the transaction solely by transactionId (a sequential integer starting from 1) without verifying that the requesting charger matches the charger that originally started the transaction. Any authenticated charger can terminate any other charger’s active session across the entire network. The root cause is in OcppServerRepositoryImpl.getTransaction() which queries only by transactionId with no chargeBoxId ownership check. The validator checks that the transaction exists and is not already stopped but never verifies identity. As an attacker controlling a single registered charger I could enumerate sequential transaction IDs and send StopTransaction messages targeting active sessions on every other charger on the network simultaneously. Combined with FINDING-014 (unauthenticated SOAP endpoints), no registered charger is even required — the attack is executable with a single curl command requiring only a known chargeBoxId. Commit 7f169c6c5b36a9c458ec41ce8af581972e5c724e contains a fix for the issue.

Характеристики атаки

Способ атаки
По сети
Атака возможна удалённо
Сложность
Низкая
Легко эксплуатировать
Условия для атаки
Не требуются
Нет дополнительных условий
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Нет
Нет утечки данных
Целостность
Нет
Нет модификации данных
Доступность
Высокое
Полный отказ в обслуживании

Строка CVSS v4.0