Π ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Kubernetes ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ ingress-nginx Π²ΡΡΠ²Π»Π΅Π½Ρ ΡΠ΅ΡΡΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Kubernetes, ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΡ Kubernetes. ΠΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ (9.8 ΠΈΠ· 10). ΠΡΡΠ²ΠΈΠ²ΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ IngressNightmare ΠΈ ΠΎΡΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ ΠΎΠΊΠΎΠ»ΠΎ 43% ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΉ. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΡΡΡΡΠ°Π½Π΅Π½Ρ Π² Π²Π΅ΡΡΠΈΡΡ ingress-nginx 1.11.5 ΠΈ 1.12.1.
Ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π² ΡΠΎΠ»ΠΈ ΡΠ»ΡΠ·Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Kubernetes Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΈΠ· Π²Π½Π΅ΡΠ½Π΅ΠΉ ΡΠ΅ΡΠΈ ΠΊ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ingress-nginx ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅Ρ NGINX Π΄Π»Ρ ΠΏΡΠΎΠ±ΡΠΎΡΠ° ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΡ, ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΡΠΎΠ΅ΠΊΡ Kubernetes ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±Π°Π·ΠΎΠ²ΡΠ΅ ingress-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π΄Π»Ρ AWS, GCE ΠΈ nginx, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠΌ kubernetes-ingress, ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ F5/NGINX (ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ NGINX, ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ nginx Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ ingress-nginx ΡΠ²ΡΠ·Π°Π½ΠΎ Π»ΠΈΡΡ Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ nginx Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠΊΡΠΈ).
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π΅Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ Π°ΡΠ°ΠΊΡΡΡΠ΅ΠΌΡ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ingress-nginx, ΠΏΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΠΊ web-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Admission. Π Ρ ΠΎΠ΄Π΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠΈ Π²ΡΡΠ²Π»Π΅Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ 6500 ΡΡΠ·Π²ΠΈΠΌΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² Kubernetes, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ Π΄Π»Ρ Π²Π½Π΅ΡΠ½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ Admission.
Π ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΉ Π°ΡΠ°ΠΊΡΡΡΠΈΠΌ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ingress, Π² ΠΊΠΎΡΠΎΡΡΡ , ΡΡΠ΅Π΄ΠΈ ΠΏΡΠΎΡΠ΅Π³ΠΎ, Ρ ΡΠ°Π½ΡΡΡΡ ΠΈ ΡΡΡΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌ Kubernetes, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΠ΅ΡΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ Π·Π°ΡΠΈΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ Π² ingress-nginx ΡΡΠ½ΠΊΡΠΈΡ Β«Validating Admission ControllerΒ».
ΠΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Admission Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ pod-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²Ρ ΠΎΠ΄ΡΡΠΈΡ ingress-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ web-ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Admission ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π°ΠΏΡΠΎΡΡ Π±Π΅Π· Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠ· ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ. ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Admission ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΄Π»Ρ http-ΡΠ΅ΡΠ²Π΅ΡΠ° nginx Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ingress-ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ.
ΠΡΡΠ²Π»Π΅Π½Π½ΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠ²ΠΎΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ Π² nginx ΡΠ΅ΡΠ΅Π· ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ingress-ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π°ΠΏΡΡΠΌΡΡ Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Admission. ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π²ΡΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² ΠΏΠΎΠ»Π΅ Β«.request.object.annotationsΒ», Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ nginx. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ, Π° Π»ΠΈΡΡ ΡΠ΅ΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΡΡΡΠΌ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Β«nginxΒ» c ΠΎΠΏΡΠΈΠ΅ΠΉ Β«-tΒ».
Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π²Π½Π΅ΡΠ½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Β«mirror-targetΒ», Β«mirror-hostΒ» (CVE-2025-1098), Β«auth-tls-match-cnΒ» (CVE-2025-1097) ΠΈ Β«auth-urlΒ» (CVE-2025-24514). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΡΡΠΎΠΊΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Β«set $target {{ $externalAuth.URL }};Β» Π²ΠΌΠ΅ΡΡΠΎ Β«{{ $externalAuth.URL }}Β» ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ URL, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ Β«auth-urlΒ». ΠΡΠΈ ΡΡΠΎΠΌ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ URL Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π°ΡΠ°ΠΊΡΡΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ URL Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π° Β«http://example.com/#;\nΠ½Π°ΡΡΡΠΎΠΉΠΊΠΈΒ» ΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² ΡΠ°ΠΉΠ» ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Β«nginx -tΒ» ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° nginx Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ ΠΈ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ»Ρ, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ. Π‘ΡΠ΅Π΄ΠΈ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ssl_engine ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ SSL-Π΄Π²ΠΈΠΆΠΊΠ°.
ΠΠ»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ²ΠΎΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Kubernetes ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ (CVE-2025-1974) ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² nginx ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ΅Π»ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π·Ρ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ, Π½ΠΎ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Β«/procΒ» Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΎΡΡΠ°ΡΡΡΡ ΠΎΡΠΊΡΡΡΡΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡΡ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ Β«ssl_engineΒ» ΡΠΊΠ°Π·Π°Π½ ΠΏΡΡΡ ΠΊ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Β«/procΒ».
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΡΠ°Π²Π°Π»ΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Β«Content-LengthΒ» Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌ, ΡΠ΅ΠΌ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ (ΡΠ΅ΡΠ²Π΅Ρ Π±ΡΠ΄Π΅Ρ ΠΆΠ΄Π°ΡΡ ΠΏΡΠΈΡΠΌΠ° ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ Π΄Π°Π½Π½ΡΡ ). ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ³Π°Π΄Π°ΡΡ PID ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ Π½ΠΎΠΌΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ, Π½ΠΎ ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², Π½ΡΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ³Π°Π΄ΡΠ²Π°ΡΡΡΡ ΠΏΡΡΡΠΌ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΏΡΡΠΎΠΊ. Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅Ρ Π° ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π°ΡΠ°ΠΊΡΡΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Ρ ΡΠ°Π½ΠΈΠΌΡΠΌ Π²Π½ΡΡΡΠΈ pod-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠΌ.
ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΠ³ΠΎ ingress-nginx ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ: kubectl get pods βall-namespaces βselector app.kubernetes.io/name=ingress-nginx
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru