VisokoIT security novice

GraphQL-core: ranljivost DoS v validacijskem pravilu OverlappingFieldsCanBeMerged

V knjižnici GraphQL-core je bila odkrita ranljivost CVE-2026-75507, ki omogoča napad na razpoložljivost prek kvadratne zahtevnosti validacije poizvedb. Gre za nadaljevanje problematike, ki jo je leta 2023 že naslavljal CVE-2023-26144 v sorodni knjižnici graphql-js.

CyberRadar ocena62 / 100
CVSS7,5
EPSS1,5 %
KEVNe

Kaj se je zgodilo

V knjižnici GraphQL-core, ki je Python različica referenčne implementacije GraphQL.js, je bila odkrita ranljivost CVE-2026-75507 (GHSA-vj8h-fx38-h3vc). Prizadete so različice od 3.0.0 do 3.2.12 ter 3.3.0rc1. Težava se nahaja v validacijskem pravilu `OverlappingFieldsCanBeMerged`, ki je del privzetih pravil (`specified_rules`) in je tako vključeno v vsak strežnik, ki temelji na GraphQL-core.

Po navedbah GitHub Security Advisories pravilo primerja vsak par polj, ki si deli isto odzivno ime, in se rekurzivno poglablja v njihove podizbore. Pomnilniško predpomnjenje (memoizacija), uvedeno za odpravo starejše ranljivosti CVE-2023-26144, deluje po identiteti poimenovanih fragmentov, zato ne pokrije primera, ko so vrstični (inline) fragmenti pred preverjanjem predpomnilnika sploščeni v nadrejeni izbor polj. Posledica je, da se vsak par polj znova primerja na vsaki ravni gnezdenja. Ponavljanje vrstičnega fragmenta na dveh ravneh gnezdenja po navedbah vira pomnoži oba učinka, kar lahko vodi v kvadratno, v najslabšem primeru pa celo O(n²·m²) procesorsko zahtevnost.

Po navedbah GitHub Security Advisories lahko že en sam 364 KB velik, visoko stisljiv dokument zasede eno procesorsko jedro za več kot pet minut – in to že med fazo validacije, še preden se izvede kakršen koli resolver. Ker za to fazo ni obstajal niti proračun primerjav niti časovna omejitev, se je pravilo izvedlo do konca ne glede na ceno. Po opisu CVEFeed lahko neavtenticiran napadalec na daljavo pošlje plitko, a visoko stisljivo GraphQL poizvedbo, ki zasede delovni proces in lahko nasiči storitev z več delovnimi procesi. Ranljivost je odpravljena v različicah 3.2.12 in 3.3.0rc1. CVE-2026-75507 ima po virih GitHub Security Advisories oceno CVSS 3.1 7.5 (HIGH), v NVD pa zapis ob pisanju tega članka še ni objavljen.

Gre za nadaljevanje problematike iz leta 2023, ko je bil v knjižnici graphql-js (CVE-2023-26144) odkrit soroden problem v istem validacijskem pravilu. Ta starejša ranljivost ima v NVD oceno CVSS 3.1 5.3 (MEDIUM), odpravljena pa je bila v različici 16.8.1. NVD za ta zapis navaja tudi referenco z oznako Patch in referenco z oznako Exploit, kar pomeni javno dostopno PoC referenco – to ni potrditev dejanskega izkoriščanja v praksi.

Kaj to pomeni za slovenska in evropska podjetja

GraphQL je pogosto uporabljena tehnologija za API-je v spletnih in mobilnih aplikacijah, GraphQL-core pa je osnovna knjižnica za Python okolja. Podjetja, ki uporabljajo ogrodja, zgrajena na GraphQL-core, imajo privzeto vklopljeno ranljivo validacijsko pravilo, zato je izpostavljenost potencialno široka. Ker napad ne zahteva avtentikacije in gre za navidezno majhno poizvedbo, obstaja tveganje, da bi storitve z več delovnimi procesi lahko bile nasičene brez potrebe po obsežni infrastrukturi napadalca.

Priporočeni ukrepi

  • Preverite, ali vaše okolje uporablja GraphQL-core v različicah od 3.0.0 do 3.2.12 ali 3.3.0rc1, in posodobite na različico 3.2.12 ali 3.3.0rc1.
  • Preglejte tudi odvisnosti v Node.js okoljih, ki uporabljajo graphql-js, in zagotovite različico 16.8.1 ali novejšo zaradi CVE-2023-26144.
  • Spremljajte uradne objave GitHub Security Advisories in NVD za morebitne dopolnitve CVE-2026-75507, saj zapis v NVD ob objavi tega članka še ni bil dokončno objavljen.
  • Razmislite o dodatnih kontrolah omejevanja kompleksnosti in globine poizvedb na ravni aplikacije, ki delujejo neodvisno od privzetih validacijskih pravil.

Vprašanja in odgovori

Ali je ranljivost CVE-2026-75507 že aktivno izkoriščana? Tega trenutno dejstva ne potrjujejo. Gre za opis tehnične ranljivosti in možnosti napada, ni pa zabeleženega potrjenega izkoriščanja v praksi.

Ali je CVE-2026-75507 uvrščen na seznam CISA KEV? Ne, glede na razpoložljive podatke ranljivost ni uvrščena na seznam CISA KEV.

Je ranljivost povezana s starejšo težavo v graphql-js? Da, gre za isto validacijsko pravilo `OverlappingFieldsCanBeMerged`, ki je bilo leta 2023 že predmet CVE-2023-26144, vendar prejšnja popravka (memoizacija po imenovanih fragmentih) ne pokriva novo odkrite poti prek vrstičnih fragmentov.

Pogosta vprašanja

Ali je ranljivost CVE-2026-75507 že aktivno izkoriščana?

Tega trenutno dejstva ne potrjujejo. Gre za opis tehnične ranljivosti in možnosti napada, ni pa zabeleženega potrjenega izkoriščanja v praksi.

Ali je CVE-2026-75507 uvrščen na seznam CISA KEV?

Ne, glede na razpoložljive podatke ranljivost ni uvrščena na seznam CISA KEV.

Je ranljivost povezana s starejšo težavo v graphql-js?

Da, gre za isto validacijsko pravilo OverlappingFieldsCanBeMerged, ki je bilo leta 2023 že predmet CVE-2023-26144, vendar prejšnji popravek ne pokriva nove poti prek vrstičnih fragmentov.

Sorodne objave

Viri