ChirpStack SQLite Backend SQL Injection via Device Tag Key in ListDevices Filter
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| chirpstack | chirpstack | unaffected |
|
No data.
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Chirpstack | Chirpstack |
|
No CVSS v4.0
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.386% probability within 30 days)
| Type | Values Removed | Values Added |
|---|---|---|
| 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::<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. | 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 , while only the tag VALUE is safely parameter-bound via Diesel's .bind. |
| Title | ChirpStack - SQLite Backend SQL Injection via Device Tag Key in ListDevices Filter | ChirpStack SQLite Backend SQL Injection via Device Tag Key in ListDevices Filter |
| Type | Values Removed | Values Added |
|---|---|---|
| Title | ChirpStack SQLite Backend SQL Injection via Device Tag Key in ListDevices Filter | ChirpStack - SQLite Backend SQL Injection via Device Tag Key in ListDevices Filter |
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Chirpstack
Chirpstack chirpstack |
|
| Vendors & Products |
Chirpstack
Chirpstack chirpstack |
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
| Type | Values Removed | Values Added |
|---|---|---|
| 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::<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. | |
| Title | ChirpStack SQLite Backend SQL Injection via Device Tag Key in ListDevices Filter | |
| Weaknesses | CWE-89 | |
| References |
| |
| Metrics |
cvssV3_1
|