CVE-2025-39735 in Linuxinfo

Zusammenfassung

von VulDB • 28.06.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

jfs: Behebung eines slab-out-of-bounds-Lesefehlers in ea_get()

Während der Ausführung des Labels „size_check" in ea_get() prüft der Code, ob die Größe der erweiterten Attributliste (xattr) mit ea_size übereinstimmt. Falls nicht, wird die Meldung „ea_get: invalid extended attribute" protokolliert und print_hex_dump() aufgerufen.

Hierbei gibt EALIST_SIZE(ea_buf->xattr) den Wert 4110417968 zurück, was INT_MAX (2.147.483.647) übersteigt. Anschließend wird ea_size geklemmt:

int size = clamp_t(int, ea_size, 0, EALIST_SIZE(ea_buf->xattr));

Obwohl clamp_t darauf abzielt, ea_size zwischen 0 und 4110417968 zu begrenzen, wird die Obergrenze als int behandelt, was zu einem Überlauf oberhalb von 2^31 - 1 führt. Dies bewirkt, dass „size" überläuft (wrap-around) und negativ wird (-184549328).

Der Wert „size" wird anschließend an print_hex_dump() übergeben (in print_hex_dump() als „len" bezeichnet). Da er vom Typ size_t ist (ein vorzeichenloser Typ), wird er in einer Variable namens „int remaining" gespeichert, die dann „int linelen" zugewiesen und schließlich an hex_dump_to_buffer() weitergegeben wird. In print_hex_dump() durchläuft die for-Schleife den Bereich von 0 bis len-1, wobei len den Wert 18446744073525002176 hat, und ruft in jeder Iteration hex_dump_to_buffer() auf:

for (i = 0; i < len; i += rowsize) {
linelen = min(remaining, rowsize); remaining -= rowsize;

hex_dump_to_buffer(ptr + i, linelen, rowsize, groupsize, linebuf, sizeof(linebuf), ascii);

... }

Die erwartete Abbruchbedingung (i < len) ist effektiv gebrochen, da len korrupt und sehr groß ist. Dies führt schließlich dazu, dass „ptr+i" an hex_dump_to_buffer() übergeben wird, um sich dem Ende der tatsächlichen Grenzen von „ptr" zu nähern; dabei erfolgt im folgenden for-Loop ein Zugriff außerhalb des gültigen Bereichs (out of bounds access) in hex_dump_to_buffer():

for (j = 0; j < len; j++) {
if (linebuflen < lx + 2) goto overflow2; ch = ptr[j];
... }

Um dies zu beheben, sollte „EALIST_SIZE(ea_buf->xattr)" vor der Verwendung validiert werden.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Zuständig

Linux

Reservieren

16.04.2025

Veröffentlichung

18.04.2025

Moderieren

akzeptiert

Eintrag

VDB-305624

CPE

bereit

EPSS

0.00228

KEV

nein

Aktivitäten

very low

Quellen

Interested in the pricing of exploits?

See the underground prices here!