CVE-2026-46294
Beschrijving NL
In de Linux kernel is de volgende kwetsbaarheid verholpen:
dm: herstel een bufferoverloop in ioctl-verwerking
Tony Asleson (met behulp van Claude) vond een bufferoverloop in dm-ioctl in de
function retrieve_status:
1. De code in retrieve_status controleert of de uitvoerstring erin past
de uitvoerbuffer en schrijft de uitvoerreeks daar
2. Vervolgens lijnt de code de variabele "outptr" uit met de volgende 8-byte
grens:
outptr = align_ptr(outptr);
3. De uitlijning controleert de overloop niet, dus outptr kan voorbij de
buffereind
4. De "voor" -lus wordt opnieuw herhaald, deze voert uit:
resterend = len - (outptr - outbuf);
5. Als "outptr" voorbij "outbuf + len" wijst, wikkelt de rekenkunde zich rond
en de variabele "resterend" bevat een ongewoon hoog aantal
6. Omdat "resterende" hoog is, schrijft de code meer gegevens na het einde van
de buffer
Gelukkig heeft deze bug geen beveiligingsimplicaties omdat:
1. Alleen root kan apparaatmapper-ioctls uitgeven
2. De veelgebruikte bibliotheken die communiceren met apparaatmapper
(libdevmapper en devicemapper-rs) gebruik buffergrootte die is afgestemd op
8 bytes - dus "outptr = align_ptr(outptr)" kan de invoer niet overschrijden
buffer en de bug kan niet per ongeluk gebeuren
Origineel (Engels) tonen
In the Linux kernel, the following vulnerability has been resolved:
dm: fix a buffer overflow in ioctl processing
Tony Asleson (using Claude) found a buffer overflow in dm-ioctl in the
function retrieve_status:
1. The code in retrieve_status checks that the output string fits into
the output buffer and writes the output string there
2. Then, the code aligns the "outptr" variable to the next 8-byte
boundary:
outptr = align_ptr(outptr);
3. The alignment doesn't check overflow, so outptr could point past the
buffer end
4. The "for" loop is iterated again, it executes:
remaining = len - (outptr - outbuf);
5. If "outptr" points past "outbuf + len", the arithmetics wraps around
and the variable "remaining" contains unusually high number
6. With "remaining" being high, the code writes more data past the end of
the buffer
Luckily, this bug has no security implications because:
1. Only root can issue device mapper ioctls
2. The commonly used libraries that communicate with device mapper
(libdevmapper and devicemapper-rs) use buffer size that is aligned to
8 bytes - thus, "outptr = align_ptr(outptr)" can't overshoot the input
buffer and the bug can't happen accidentally