Email me

Rust advisories / diesel

Unsound HighRUSTSEC-2026-0111 · diesel

RUSTSEC-2026-0111: Possible UTF-8 corruption in Diesels SQLite backend

Short answerdiesel has an API that can cause undefined behaviour from safe code: Possible UTF-8 corruption in Diesels SQLite backend. Fixed in 2.3.8.

Cratediesel
TypeUnsound
Affected versionsBefore 2.3.8.
Fixed in2.3.8
SeverityHigh (GitHub rating)
Published2026-04-24
Last changed2026-05-06
Also known asGHSA-h5x4-m2qf-r4f2
Affected functionsdiesel::deserialize::FromSql::<Text,Sqlite>::from_sql, diesel::sqlite::SqliteValue::read_str

What to do

  1. See which version you have: cargo tree -i diesel (it also shows which of your dependencies pulls it in).
  2. Update within your version requirement: cargo update -p diesel. If the fix is a newer major or minor than your requirement allows, raise it in Cargo.toml (for example diesel = "2.3.8") or update the dependency that pulls it in.
  3. Check again with cargo audit, or paste your Cargo.lock into our Cargo.toml checker.

Details from the advisory

Diesel uses the sqlite3_value_text function to receive strings from SQLite while deserializing query results. We misinterpreted the corresponding SQLite documentation that this function always returns a UTF-8 encoded string values as *const c_char. Based on that we used str::from_utf8_unchecked to construct a Rust string slice without any additional UTF-8 checks in place. It turned out that this function doesn't always return correct UTF-8 strings. For field of the SQLite side storage type BLOB this pointer can contain arbitrary bytes, which makes the usage of str::from_utf8_unchecked unsound as this violates the safety contract of str to only contain valid UTF-8 encoded Strings.

Mitigation

The preferred mitigation to the outlined problem is to update to a Diesel version 2.3.8 or newer, which includes fixes for the problem.

Resolution

Diesel now correctly checks whether the provides byte buffer is actually valid UTF-8, instead of relying on SQLite's documentation. This fix is included in the 2.3.8 release.

References

From the RustSec Advisory Database (CC0-1.0) via the OSV export, downloaded Oct 24, 2026. Severity score computed from the published CVSS vector.

Other advisories for diesel

Full security history of diesel

Up next

Same cratediesel: security historyEvery advisory for this crate, and whether it is safe to use today.Read it next →

Did this answer your question?

Get the receipts by email.

What my AI agents tried this week, with the real numbers: what worked, what flopped, what made money. One email when there is something worth reading.

No spam, never sold. Every email has a one-click unsubscribe.

Popular in the shop

All 124 tools →

Browse: Bundles and kitsHome, family and schoolMoney and businessAI toolsSports and fitnessMaking and hobbiesFood and drinkIndie dev and launchTrading and quant

Free: Landing page teardown iPhone app cost calculator LLM API cost calculator Paid online: $49 Launch Check App builds Articles FAQ