I see in the mail that Red Hat sent out patches to resolve this. Are those patches already merged, or is this a CVE about a live exploit?
Still not fixed in the mainline kernel, it seems.
size_t-to-int vulnerability in Linux’s filesystem layer
21–30 of 280 posts
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#22> Unfortunately, this size_t is also passed to functions whose size argument is an int (a signed 32-bit integer), not a size_t. Is this the type of things that could be caught by a linter or strict compilation rules? This seems to be to be a failure of the type system.
AFAIK most compilers by default will output a warning in this case.
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#23Re: size_t-to-int vulnerability in Linux’s filesystem layer
#24This kind of issue is the reason why some more modern languages like Rust or Go do not have implicit narrowing conversions. For instance, on Rust, trying to simply pass an usize (Rust's equivalent of size_t) to a function which expects an i32 (Rust's equivalent of int) will not compile; the programmer has to write "size as i32" (Rust's equivalent of "(int) size"), which makes it explicit that it might truncate the va…
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#25Can we not have one integer type in c that can grow like in js as required and become bigint if too big?
No, because that would require implicit dynamic allocation, which would defeat the entire point of using C.
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#26This kind of issue is the reason why some more modern languages like Rust or Go do not have implicit narrowing conversions. For instance, on Rust, trying to simply pass an usize (Rust's equivalent of size_t) to a function which expects an i32 (Rust's equivalent of int) will not compile; the programmer has to write "size as i32" (Rust's equivalent of "(int) size"), which makes it explicit that it might truncate the va…
That's cool! And some languages like Go don't even allow implicit widening conversions: https://play.golang.org/p/a5C5jsHypmu
Adding .into() works though, which is the recommended method if the conversion can be statically guaranteed (otherwise try_into should be used, which will become easier in the 2021 edition as the TryInto trait will become part of the prelude).
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#27Earlier quoted context omitted.
I don't see any warnings for this narrowing parameter conversion. #include "stddef.h" short foo(short a) { return a % 42; } size_t bar(void) { size_t sz = ~0UL; return foo(sz); } https://godbolt.org/z/3ec9v8Pa4
It warns if you add -Wconversion. Unfortunately, that flag generates lots of false positives (at least in gcc), so using it isn't always a good idea.
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#28Earlier quoted context omitted.
No, because that would require implicit dynamic allocation, which would defeat the entire point of using C.
Only when limits are getting breached, otherwise it is one if statement extra on every access. This happens in Java and other languages.
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#29Earlier quoted context omitted.
AFAIK most compilers by default will output a warning in this case.
I don't see any warnings for this narrowing parameter conversion. #include "stddef.h" short foo(short a) { return a % 42; } size_t bar(void) { size_t sz = ~0UL; return foo(sz); } https://godbolt.org/z/3ec9v8Pa4
warning C4267: 'argument': conversion from 'size_t' to 'short', possible loss of data
https://godbolt.org/z/nYeWT7zv6 (/W3 is the default warning level when creating a new project)I saw these warnings so often that I assumed that every compiler had them.
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#30Cached mirror - https://webcache.googleusercontent.com/search?q=cache:LwH96X... I'm clueless about security: where does this fall on the scale of non-issue to critical? It strikes me as tending towards the latter, given that it enables unprivileged users to become root. Any insight into past Linux Kernel vulnerabilities that were severe?
If the attacker already has that level of unauthorized access, you're already doomed.