Ad

CVE-2026-71282

MEDIUM CVSS 3.1: 6,5 EPSS 0.23%
Обновлено 5 августа 2026
PostgreSQL
Параметр Значение
CVSS 6,5 (MEDIUM)
Тип уязвимости CWE-89 (SQL-инъекция)
Поставщик PostgreSQL
Публичный эксплойт Нет

Фильтрация тегов устройств на базе SQLite в ChirpStack (chirpstack/src/storage/device.rs, как в get_count(), так и в list()) интерполирует предоставленный пользователем тег KEY непосредственно в необработанный фрагмент SQL с помощью макроса Rust format!() (`dsl::sql::<Bool>(&format!("device.tags->>'{}' =", k)).bind::<Text, _>(v)`), в то время как только тег VALUE безопасно привязан к параметру через .bind() Дизеля. Аутентифицированный пользователь с доступом к списку устройств может внедрить SQL с помощью созданного ключа тега, когда используется серверная часть SQLite (пакет chirpstack-sqlite); Серверная часть PostgreSQL не затрагивается, поскольку вместо форматирования необработанных строк SQL используется собственный оператор сдерживания JSONB компании Diesel.

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

ChirpStack's SQLite-backend device tag filtering (chirpstack/src/storage/device.rs, in both get_count() and list()) interpolates the user-supplied tag KEY directly into a raw SQL fragment via Rust's format!() macro (`dsl::sql::<Bool>(&format!("device.tags->>'{}' =", k)).bind::<Text, _>(v)`), while only the tag VALUE is safely parameter-bound via Diesel's .bind(). An authenticated user with device-list access can inject SQL via a crafted tag key when the SQLite backend (chirpstack-sqlite package) is in use; the PostgreSQL backend is unaffected as it uses Diesel's native JSONB containment operator instead of raw SQL string formatting.

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

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

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Нет
Нет модификации данных
Доступность
Нет
Нет нарушения работы

Строка CVSS v3.1

Тип уязвимости (CWE)