Mae pedwar gwendid wedi'u nodi yn y rheolydd ingress ingress-nginx a ddatblygwyd gan brosiect Kubernetes. Mae'r gwendidau hyn yn caniatáu i ymosodwyr weithredu cod personol ar weinyddion mewn systemau cwmwl sy'n rhedeg platfform Kubernetes, a thrwy hynny ennill mynediad breintiedig llawn i glwstwr Kubernetes. Mae lefel difrifoldeb critigol (9.8 allan o 10) wedi'i neilltuo i'r problemau. Rhoddodd yr ymchwilwyr a nododd y problemau'r enw cod IngressNightmare i'r gwendidau a nododd eu bod yn effeithio ar oddeutu 43% o amgylcheddau cwmwl. Mae'r gwendidau wedi'u trwsio yn fersiynau 1.11.5 ac 1.12.1 o ingress-nginx.
Mae rheolydd mynediad yn gweithredu fel porth ac fe'i defnyddir yn Kubernetes i ddarparu mynediad o'r rhwydwaith allanol i wasanaethau o fewn y clwstwr. Y rheolydd ingress-nginx yw'r mwyaf poblogaidd ac mae'n defnyddio gweinydd NGINX ar gyfer anfon clwstwr ymlaen, llwybro ceisiadau allanol, a chydbwyso llwyth. Mae prosiect Kubernetes yn darparu rheolyddion mewnlif sylfaenol ar gyfer AWS, GCE, ac nginx, ac nid yw'r olaf ohonynt yn gysylltiedig â'r rheolydd kubernetes-ingress a gynhelir gan F5/NGINX (nid yw'r gwendidau dan sylw yn effeithio ar brosiectau a ddatblygwyd gan ddatblygwyr NGINX; mae'r cyfeiriad at nginx yn yr enw ingress-nginx oherwydd y defnydd o nginx fel dirprwy yn unig).
Mae'r gwendidau'n caniatáu i ymosodwr heb ei ddilysu weithredu cod o fewn cyd-destun y rheolydd ingress-nginx, ar yr amod y gellir anfon cais at y trinwr gwe Admission. Nododd sganio rhwydwaith fwy na 6500 o glystyrau Kubernetes agored i niwed gan ddefnyddio rheolyddion agored i niwed sydd ar gael i'r cyhoedd gyda thrinwr Admission sy'n agored i geisiadau allanol.
Yn y ffurfweddiad diofyn, gall cod a gychwynnir gan ymosodwr gael mynediad at osodiadau'r gwrthrych Ingress, sydd, ymhlith pethau eraill, yn storio manylion mewngofnodi ar gyfer cael mynediad at weinyddion Kubernetes, gan ganiatáu mynediad breintiedig i'r clwstwr cyfan. Fel ateb dros dro, argymhellir analluogi'r nodwedd "Validating Admission Controller" yn ingress-nginx.
Mae'r rheolydd Derbyn yn rhedeg mewn amgylchedd pod ar wahân ac yn dilysu gwrthrychau mewnlif sy'n dod i mewn cyn eu defnyddio. Yn ddiofyn, mae'r trinwr gwe Derbyn yn derbyn ceisiadau heb eu dilysu o'r rhwydwaith cyhoeddus. Wrth gyflawni dilysu, mae'r rheolydd Derbyn yn creu ffurfweddiad ar gyfer y gweinydd HTTP nginx yn seiliedig ar gynnwys y gwrthrych mewnlif a dderbyniwyd ac yn gwirio ei gywirdeb.
Mae'r gwendidau a nodwyd yn caniatáu amnewid cyfluniad personol yn nginx trwy anfon gwrthrych ingress wedi'i grefftio'n arbennig yn uniongyrchol i'r rheolydd Derbyn. Darganfu ymchwilwyr fod rhai priodweddau ceisiadau prawf, a bennir yn y maes ".request.object.annotations", yn cael eu mewnosod yn uniongyrchol i'r cyfluniad nginx. Fodd bynnag, nid yw'r cyfluniad a gynhyrchir yn cael ei gymhwyso, ond yn hytrach yn cael ei brofi trwy redeg y ffeil weithredadwy nginx gyda'r opsiwn "-t".
Yn benodol, mae amnewid data allanol yn y ffurfweddiad yn cael ei berfformio ar gyfer y paramedrau "mirror-target", "mirror-host" (CVE-2025-1098), "auth-tls-match-cn" (CVE-2025-1097), ac "auth-url" (CVE-2025-24514). Er enghraifft, yn y llinell ffurfweddu "set $target {{ $externalAuth.URL }};" mae'r URL a bennir yn y paramedr "auth-url" yn cael ei amnewid yn lle "{{ $externalAuth.URL }}". Ni chaiff cywirdeb yr URL ei wirio. Yn unol â hynny, gall ymosodwr basio gwerth o'r ffurf "http://example.com/#;\nsettings" fel URL a rhoi eu gosodiadau eu hunain yn y ffeil ffurfweddu.
I weithredu cod mympwyol yn ystod gwirio ffurfweddiad gyda'r gorchymyn "nginx -t", manteisiodd yr ymchwilwyr ar y ffaith, yn ogystal â gwirio cystrawen, fod nginx yn llwytho llyfrgelloedd gyda modiwlau ac yn agor ffeiliau a grybwyllir yn y ffurfweddiad i asesu eu hargaeledd. Ymhlith pethau eraill, wrth brosesu'r gyfarwyddeb ssl_engine, llwythir y llyfrgell a rennir a bennir yn y gyfarwyddeb. SSL-injan.
I lwytho eu llyfrgell ar weinydd Kubernetes, manteisiodd yr ymchwilwyr ar (CVE-2025-1974) ar wendid yn nginx, sy'n storio corff y cais mewn ffeil dros dro wrth brosesu ceisiadau mawr. Caiff y ffeil hon ei dileu ar unwaith, ond mae disgrifiwr ffeil agored ar gyfer y ffeil hon yn aros yn y system ffeiliau /proc. Mae hyn yn caniatáu ceisiadau ar yr un pryd i gadw'r ffeil dros dro a chychwyn gwiriad ffurfweddiad lle mae'r gyfarwyddeb "ssl_engine" yn nodi'r llwybr i'r disgrifiwr yn y system ffeiliau /proc.
Er mwyn sicrhau bod y disgrifiwr ffeil yn parhau i fod ar gael am amser hir, gellir nodi bod y gwerth "Hyd-Cynnwys" yn y cais yn sylweddol fwy na'r data gwirioneddol a drosglwyddwyd (bydd y gweinydd yn aros i'r data sy'n weddill gael ei dderbyn). Cymhlethdod ychwanegol yw'r angen i ddyfalu PID y broses a rhif y disgrifiwr ffeil sy'n gysylltiedig â'r llyfrgell a rennir a lwythowyd, ond gan fod y cynhwysydd fel arfer yn defnyddio nifer fach iawn o brosesau rhedeg, mae'r gwerthoedd gofynnol yn cael eu dyfalu trwy ychydig o ymdrechion. Os yw'n llwyddiannus a bod y llyfrgell a rennir a amnewidiwyd wedi'i llwytho, gall yr ymosodwr gael mynediad at baramedrau sydd wedi'u storio o fewn yr amgylchedd pod, yn ddigonol i reoli'r clwstwr cyfan.
I wirio a yw ingress-nginx bregus yn cael ei ddefnyddio, gallwch redeg y gorchymyn: kubectl get pods --all-namespaces --selector app.kubernetes.io/name=ingress-nginx
Ffynhonnell: opennet.ru
