I love the little nugget in the mitigations section. You can plug the hole for a normal filesystem, but then FUSE filesystems have an additional problem: "if an attacker FUSE-mounts a long directory (longer than 8MB), then systemd exhausts its stack, crashes, and therefore crashes the entire operating system (a kernel panic)." If there's one place other than the kernel where truly defensive programming should be appl…
size_t-to-int vulnerability in Linux’s filesystem layer
11–20 of 280 posts
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#12This 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
#13I 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?
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#14Cached 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?
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#15> 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.
#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/3ec9v8Pa4Re: size_t-to-int vulnerability in Linux’s filesystem layer
#16Can we not have one integer type in c that can grow like in js as required and become bigint if too big?
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#17I love the little nugget in the mitigations section. You can plug the hole for a normal filesystem, but then FUSE filesystems have an additional problem: "if an attacker FUSE-mounts a long directory (longer than 8MB), then systemd exhausts its stack, crashes, and therefore crashes the entire operating system (a kernel panic)." If there's one place other than the kernel where truly defensive programming should be appl…
systemd? More like systemK! But seriously, are non-systemd systems not vulnerable to the FUSE portion of this? (CVE-2021-33910)
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#18Earlier 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
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#19Earlier 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
Re: size_t-to-int vulnerability in Linux’s filesystem layer
#20For me it crashes into the fork_userns:177
PS: don't need to downvote. Sometimes managers want you to prove that there's a need to patch. It's dumb but it's what it is