jq to procesor JSON działający z wiersza poleceń. Przed wersją 1.8.2 porównywanie dwóch wystarczająco głębokich zagnieżdżonych tablic za pomocą operatora == wyczerpywało stos C na zwykłej powierzchni wiersza poleceń jq, powodując denial of service poprzez exhaustion stosu (niekontrolowana rekursja). Błąd występuje w rekurencyjnym kodzie porównania strukturalnego jq, z rekursją powtarzającą się przez jvp_array_equal() i jv_equal() w src/jv.c podczas porównywania głębokich tablic; podobna ścieżka komparatora sortowania przez jv_cmp() w src/jv_aux.c przepełnia stos na większej głębokości zagnieżdżenia z powodu braku ochrony rekursji. Dotknięci są wszyscy uruchamiający porównania jq na kontrolowanych przez atakującego głębokich wartościach JSON, lub osadzający jq w kontekście, gdzie niezaufane dane mogą dotrzeć do ścieżki porównania
▸ Pokaż oryginał (EN)
jq is a command-line JSON processor. Prior to 1.8.2, comparing two sufficiently deeply nested arrays with the == operator exhausts the C stack on jq's ordinary command-line surface, resulting in denial of service via stack exhaustion (uncontrolled recursion). The crash occurs in jq's recursive structural comparison code, with the recursion repeating through jvp_array_equal() and jv_equal() in src/jv.c when comparing deeply nested arrays; a nearby sort comparator path through jv_cmp() in src/jv_aux.c overflows the stack at a larger nesting depth from the same missing recursion guard. Anyone running jq comparisons on attacker-controlled deeply nested JSON values, or embedding jq in a context where untrusted data can reach the == comparison path, is affected. This vulnerability is fixed in 1.8.2.
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XJqlang Jq
APPJqlang< 1.8.2
Powiązane podatności
jq: heap out-of-bounds write przez --rawfile przy zbyt długim pliku
jq is a command-line JSON processor. An integer overflow vulnerability exists through version 1.8.1 within the...
jq is a command-line JSON processor. In versions up to and including 1.7.1, a heap-buffer-overflow is present ...
decNumberCopy in decNumber.c in jq through 1.7.1 does not properly consider that NaN is interpreted as numeric...
decToString in decNumber/decNumber.c in jq 88f01a7 has a one-byte out-of-bounds write via the " []-1.2e-111111...