-
Notifications
You must be signed in to change notification settings - Fork 88
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RUSTSEC-2021-0013: Soundness issues in raw-cpuid
#164
Comments
stlankes
added a commit
to stlankes/kernel
that referenced
this issue
Feb 2, 2021
The workaround should solve issue hermit-os#164 and is only necessry until gz/rust-x86#71 is accepted.
bors bot
added a commit
that referenced
this issue
Feb 3, 2021
166: clearify license text, add workround to use raw-cpuid r=stlankes a=stlankes The workaround should solve issue #164 and is only necessry until gz/rust-x86#71 is accepted. Co-authored-by: Stefan Lankes <[email protected]>
bors bot
added a commit
that referenced
this issue
Feb 3, 2021
166: clearify license text, add workround to use raw-cpuid r=stlankes a=stlankes The workaround should solve issue #164 and is only necessry until gz/rust-x86#71 is accepted. Co-authored-by: Stefan Lankes <[email protected]>
simonschoening
pushed a commit
to simonschoening/libhermit-rs
that referenced
this issue
Aug 26, 2021
The workaround should solve issue hermit-os#164 and is only necessry until gz/rust-x86#71 is accepted.
simonschoening
pushed a commit
to simonschoening/libhermit-rs
that referenced
this issue
Aug 26, 2021
166: clearify license text, add workround to use raw-cpuid r=stlankes a=stlankes The workaround should solve issue hermit-os#164 and is only necessry until gz/rust-x86#71 is accepted. Co-authored-by: Stefan Lankes <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
raw-cpuid
8.1.2
>=9.0.0
Undefined behavior in
as_string()
methodsVendorInfo::as_string()
,SoCVendorBrand::as_string()
,and
ExtendedFunctionInfo::processor_brand_string()
construct byte slicesusing
std::slice::from_raw_parts()
, with data coming from#[repr(Rust)]
structs. This is always undefined behavior.See gz/rust-cpuid#40.
This flaw has been fixed in v9.0.0, by making the relevant structs
#[repr(C)]
.native_cpuid::cpuid_count()
is unsoundnative_cpuid::cpuid_count()
exposes the unsafe__cpuid_count()
intrinsicfrom
core::arch::x86
orcore::arch::x86_64
as a safe function, and usesit internally, without checking the
safety requirement:
> The CPU the program is currently running on supports the function being
> called.
CPUID is available in most, but not all, x86/x86_64 environments. The crate
compiles only on these architectures, so others are unaffected.
This issue is mitigated by the fact that affected programs are expected
to crash deterministically every time.
See gz/rust-cpuid#41.
The flaw has been fixed in v9.0.0, by intentionally breaking compilation
when targetting SGX or 32-bit x86 without SSE. This covers all affected CPUs.
See advisory page for additional details.
The text was updated successfully, but these errors were encountered: