Description
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::(&format!("device.tags->>'{}' =", k)).bind::(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.
Severity (CVSS)
| Base score | 6.5 |
|---|---|
| Severity | Medium |
| Version | CVSS 3.1 |
| Vector | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N |
| Provided by | CNA |
Weaknesses
- CWE-89 — CWE-89
Affected products
| Vendor | Product | Versions |
|---|---|---|
| chirpstack | chirpstack | 0 to <=4.19.0-test.5 |
References
Generated from the official CVE List on 06 Aug 2026 07:06 UTC.