CVE-2026-39956
ŚrednieCVSS 6.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 7 - wyżej niż 7% wszystkich znanych CVE
Streszczenie
jq przed wersją 1.8.2 zawiera podatność w wbudowanej funkcji _strindices, która przekazuje argumenty do jv_string_indexes() bez weryfikacji, czy są one stringami. Funkcja jv_string_indexes() polega wyłącznie na asercjach, które są usuwane w wersjach release kompilowanych z -DNDEBUG. Atakujący może spowodować awarię jq, np. przez _strindices(0), a także uzyskać kontrolowany dereferencję wskaźnika i ograniczony odczyt pamięci.
Ocena ryzyka
Ryzyko obejmuje możliwość zdalnego lub lokalnego spowodowania awarii procesu jq, co może prowadzić do niedostępności usług przetwarzających niezaufane filtry jq. W skrajnych przypadkach może umożliwić odczyt wrażliwych danych z pamięci.
Rekomendacja
Zaleca się aktualizację jq do wersji 1.8.2 lub nowszej, która zawiera poprawkę. Należy również unikać przetwarzania niezaufanych filtrów jq w środowiskach produkcyjnych bez odpowiedniej izolacji.
Inne podatności w jq
Zobacz wszystkie- CVE-2016-4074Wysokie
Funkcja jv_dump_term w jq 1.5 umożliwia zdalnym atakującym spowodowanie odmowy usługi poprzez przygotowany plik JSON, co prowadzi do zużycia stosu i awarii aplikacji. Problem został naprawiony w jq 1.6_rc1-r0.
- CVE-2024-53427Średnie
Funkcja decNumberCopy w pliku decNumber.c w jq do wersji 1.7.1 nieprawidłowo traktuje wartość NaN jako liczbową, co prowadzi do przepełnienia bufora na stosie i zapisu poza zakresem. Problem można wykorzystać na przykład przez użycie opcji --slurp z operacją odejmowania, taką jak filtr .-. przy odpowiednio spreparowanym wejściu.
- CVE-2015-8863Krytyczne
Błąd off-by-one w funkcji tokenadd w pliku jv_parse.c w jq umożliwia zdalnym atakującym spowodowanie awarii (denial of service) poprzez długi, zakodowany w JSON numer, co prowadzi do przepełnienia bufora w pamięci heap.
- CVE-2026-40164Wysokie
jq przed commit 0c7d133c3c7e37c00b6d46b658a02244fdd3c784 używało MurmurHash3 z zakodowanym na stałe, publicznie widocznym ziarnem (0x432A9843) dla wszystkich operacji na tablicach mieszających obiektów JSON. Umożliwiło to atakującemu wstępne obliczenie kolizji kluczy offline i dostarczenie spreparowanego obiektu JSON (~100 KB), w którym wszystkie klucze trafiają do tego samego koszyka, powodując degradację wyszukiwania z O(1) do O(n) i wyczerpanie CPU.
- CVE-2026-39979Średnie
W bibliotece libjq (część narzędzia jq) w funkcji jv_parse_sized() występuje podatność na odczyt poza zakresem bufora. Podczas przetwarzania błędnego JSON-a w buforze niezakończonym znakiem NUL, funkcja formatująca błąd używa %s, które czyta dane aż do napotkania NUL-a, zamiast ograniczyć się do długości podanej przez wywołującego.
Oryginalny opis (angielski, źródło NVD)
jq is a command-line JSON processor. Prior to version 1.8.2, the _strindices builtin in jq's src/builtin.c passes its arguments directly to jv_string_indexes() without verifying they are strings, and jv_string_indexes() in src/jv.c relies solely on assert() checks that are stripped in release builds compiled with -DNDEBUG. This allows an attacker to crash jq trivially with input like _strindices(0), and by crafting a numeric value whose IEEE-754 bit pattern maps to a chosen pointer, achieve a controlled pointer dereference and limited memory read/probe primitive. Any deployment that evaluates untrusted jq filters against a release build is vulnerable. This issue has been patched in commit fdf8ef0f0810e3d365cdd5160de43db46f57ed03, which is part of version 1.8.2.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

