Skip to content

The kstring integration in gix-attributes is unsound

Low severity GitHub Reviewed Published Jul 25, 2024 to the GitHub Advisory Database • Updated Jan 21, 2025

Package

cargo gix-attributes (Rust)

Affected versions

< 0.22.3

Patched versions

0.22.3

Description

gix-attributes (in state::ValueRef) unsafely creates a &str from a &[u8] containing non-UTF8 data, with the justification that so long as nothing reads the &str and relies on it being UTF-8 in the &str, there is no UB:

// SAFETY: our API makes accessing that value as `str` impossible, so illformed UTF8 is never exposed as such.

The problem is that the non-UTF8 str is exposed to outside code: first to the kstring crate itself, which requires UTF-8 in its documentation and may have UB as a consequence of this, but also to serde, where it propagates to e.g. serde_json, serde_yaml, etc., where the same problems occur.

This is not sound, and it could cause further UB down the line in these places that can view the &str.

References

Published to the GitHub Advisory Database Jul 25, 2024
Reviewed Jul 25, 2024
Last updated Jan 21, 2025

Severity

Low

EPSS score

Weaknesses

CVE ID

No known CVE

GHSA ID

GHSA-cx7h-h87r-jpgr

Source code

Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.