¡¾Îó²îͨ¸æ¡¿Kubernetes Ingress-nginx×¢½âÑéÖ¤ÈÆ¹ýÎó²î£¨CVE-2024-7646£©

Ðû²¼Ê±¼ä 2024-08-19

Ò»¡¢Îó²î¸ÅÊö

Îó²îÃû³Æ

Kubernetes Ingress-nginx×¢½âÑéÖ¤ÈÆ¹ýÎó²î

CVE   ID

CVE-2024-7646

Îó²îÀàÐÍ

ÑéÖ¤ÈÆ¹ý¡¢ÏÂÁî×¢Èë

·¢Ã÷ʱ¼ä

2024-08-19

Îó²îÆÀ·Ö

8.8

Îó²îÆ·¼¶

¸ßΣ

¹¥»÷ÏòÁ¿

ÍøÂç

ËùÐèȨÏÞ

µÍ

ʹÓÃÄѶÈ

µÍ

Óû§½»»¥

ÎÞ

PoC/EXP

δ¹ûÕæ

ÔÚҰʹÓÃ

δ·¢Ã÷

 

ingress-nginxÊÇKubernetesÖÐÒ»¸öÊ¢ÐеÄIngress¿ØÖÆÆ÷ £¬ËüʹÓÃNGINX×÷Ϊ·´Ïò´úÀíºÍ¸ºÔØÆ½ºâÆ÷ £¬Ö¼ÔÚÓÃÓÚ¹ÜÀíÍⲿ»á¼ûµ½Kubernetes¼¯ÈºÄÚ²¿·þÎñµÄ·ÓÉ  ¡£

2024Äê8ÔÂ19ÈÕ £¬×ðÁú¿­¹ÙÍøÈë¿Ú¼¯ÍÅVSRC¼à²âµ½Ingress-nginxÖб£´æÒ»¸öÑéÖ¤ÈÆ¹ýÏÂÁî×¢ÈëÎó²î£¨CVE-2024-7646£© £¬¸ÃÎó²îµÄCVSSÆÀ·ÖΪ8.8  ¡£

ingress-nginx ¿ØÖÆÆ÷ v1.11.2֮ǰ°æ±¾ÖÐ £¬ÓÐȨÔÚKubernetes¼¯ÈºÖн¨ÉèIngress¹¤¾ß£¨ÊôÓÚnetworking.k8s.io»òextensions API×飩µÄÍþвÕß¿ÉÒÔÈÆ¹ý×¢½âÑéÖ¤²¢×¢Èëí§ÒâÏÂÁî £¬½ø¶ø»ñÈ¡ingress-nginx¿ØÖÆÆ÷µÄƾ֤ £¬»á¼û¼¯ÈºÖд洢µÄËùÓÐÃô¸ÐÐÅÏ¢  ¡£

 


¶þ¡¢Ó°Ïì¹æÄ£

ingress-nginx controller < v1.11.2

 

Èý¡¢Çå¾²²½·¥

3.1 Éý¼¶°æ±¾

ÏÖÔÚ¸ÃÎó²îÒѾ­ÐÞ¸´ £¬ÊÜÓ°ÏìÓû§¿ÉÉý¼¶µ½ingress-nginx controller v1.11.2  ¡£

ÏÂÔØÁ´½Ó£º

https://github.com/kubernetes/ingress-nginx/releases/tag/controller-v1.11.2

3.2 ÔÝʱ²½·¥

¸ÃÎó²îÓ°Ïì ingress-nginx £¬ÈôÊǼ¯ÈºÉÏδװÖà ingress-nginx £¬Ôò²»»áÊܵ½Ó°Ïì  ¡ £¿ÉÒÔͨ¹ýÒÔÏ·½·¨Ö®Ò»À´¼ì²é¼¯ÈºÉÏÊÇ·ñ±£´æ ingress-nginx¿ØÖÆÆ÷£º

1.¼ì²éÊÇ·ñ±£´æ ingress-nginx ÃüÃû¿Õ¼ä£º

ʹÓÃkubectl get namespacesÏÂÁî £¬ÈôÊÇÊä³öÖаüÀ¨ ingress-nginx £¬ÔòÅú×¢¼¯ÈºÖб£´æÓë ingress-nginx Ïà¹ØµÄ×ÊÔ´£»»òÕßͨ¹ýkubectl get all -n ingress-nginxÏÂÁîÁгö ingress-nginx ÃüÃû¿Õ¼äÖÐËùÓÐµÄ Pod¡¢·þÎñ¡¢°²ÅŵÈ×ÊÔ´  ¡£ÈôÊÇ¿´µ½ÖøÃûΪ ingress-nginx-controller µÄ Deployment »ò Pod £¬ËµÃ÷ ingress-nginx ¿ØÖÆÆ÷ÒѾ­×°Öà  ¡£

2. ͨ¹ýÔÚKubernetes ÇéÐÎÖвéÕÒÓë ingress-nginx-controller Ïà¹ØµÄ Pod£º

kubectl get po -A | grep ingress-nginx-controller

3.¼ì²éÊÇ·ñ±£´æ ingress-nginx-controller °²ÅÅ

ʹÓÃÏÂÁîkubectl get deployments --all-namespaces | grep ingress-nginx £¬ÈôÊÇÊä³öÖаüÀ¨ ingress-nginx-controller °²ÅÅ £¬ËµÃ÷ ingress-nginx ¿ØÖÆÆ÷Òѱ»×°Öà  ¡£

¼ì²âÓ뻺½â

¹ÜÀíÔ±¿Éͨ¹ý¼ì²é Kubernetes Éó¼ÆÈÕÖ¾ÖÐÊÇ·ñ±£´æÈκοÉÒÉµÄ Ingress ¹¤¾ß £¬ÓÈÆäÊǰüÀ¨»Ø³µ·û ( \r) µÄ×¢½â £¬ÓÉÓڻسµ·û£¨\r£©¿ÉÄܱ»ÓÃÓÚ×¢Èë¶ñÒâ´úÂë»òÈÆ¹ýijЩÑéÖ¤»úÖÆ  ¡£ÈôÊÇÔÚ Kubernetes Éó¼ÆÈÕÖ¾Öз¢Ã÷°üÀ¨»Ø³µ·û (\r) µÄ×¢½â £¬È·ÈÏÊÇ·ñ±£´æ¶ñÒâ»òÒì³£µÄÄÚÈÝ  ¡ £¿ÉÒÔʹÓà kubectl get ingress <ingress-name> -o yaml ÏÂÁîÉó²éÏêϸµÄÉèÖà  ¡£ÈôÊÇÈ·ÈÏÓжñÒâ×¢½â»ò²»Çå¾²µÄÉèÖà £¬¿É˼Á¿£º

l  ÔÝʱ¸ôÀëÊÜÓ°ÏìµÄ·þÎñ»òÃüÃû¿Õ¼ä £¬ÒÔ±ÜÃâ½øÒ»²½¹¥»÷£»

l  ɾ³ý»òÐÞ¸´ Ingress£ºÍ¨¹ý kubectl delete ingress <ingress-name> ɾ³ýÊÜÓ°ÏìµÄ Ingress ¹¤¾ß £¬»òÕßÊÖ¶¯±à¼­×¢½âÈ¥³ý²»Çå¾²µÄ×Ö·û  ¡£ÐÞ¸´ºóµÄ¹¤¾ßÓ¦ÖØÐÂÓ¦ÓÃÖÁ¼¯ÈºÖÐ  ¡£

3.3 ͨÓý¨Òé

l  °´ÆÚ¸üÐÂϵͳ²¹¶¡ £¬ïÔ̭ϵͳÎó²î £¬ÌáÉý·þÎñÆ÷µÄÇå¾²ÐÔ  ¡£

l  ÔöǿϵͳºÍÍøÂçµÄ»á¼û¿ØÖÆ £¬Ð޸ķÀ»ðǽսÂÔ £¬¹Ø±Õ·ÇÐëÒªµÄÓ¦Óö˿ڻò·þÎñ £¬ïÔÌ­½«Î£ÏÕ·þÎñ£¨ÈçSSH¡¢RDPµÈ£©Ì»Â¶µ½¹«Íø £¬ïÔÌ­¹¥»÷Ãæ  ¡£

l  ʹÓÃÆóÒµ¼¶Çå¾²²úÆ· £¬ÌáÉýÆóÒµµÄÍøÂçÇå¾²ÐÔÄÜ  ¡£

l  ÔöǿϵͳÓû§ºÍȨÏÞ¹ÜÀí £¬ÆôÓöàÒòËØÈÏÖ¤»úÖÆºÍ×îСȨÏÞÔ­Ôò £¬Óû§ºÍÈí¼þȨÏÞÓ¦¼á³ÖÔÚ×îµÍÏÞ¶È  ¡£

l  ÆôÓÃÇ¿ÃÜÂëÕ½ÂÔ²¢ÉèÖÃΪ°´ÆÚÐÞ¸Ä  ¡£

3.4 ²Î¿¼Á´½Ó

https://groups.google.com/g/kubernetes-security-announce/c/a1__cKjWkfA

https://github.com/kubernetes/kubernetes/issues/126744

 

ËÄ¡¢°æ±¾ÐÅÏ¢

°æ±¾

ÈÕÆÚ

±¸×¢

V1.0

2024-08-19

Ê×´ÎÐû²¼

 

 

Îå¡¢¸½Â¼

5.1 ×ðÁú¿­¹ÙÍøÈë¿Ú¼ò½é

×ðÁú¿­¹ÙÍøÈë¿Ú½¨ÉèÓÚ1996Äê £¬ÊÇÓÉÁôÃÀ²©Ê¿ÑÏÍû¼ÑŮʿ½¨ÉèµÄ¡¢ÓµÓÐÍêÈ«×ÔÖ÷֪ʶ²úȨµÄÐÅÏ¢Çå¾²¸ß¿Æ¼¼ÆóÒµ  ¡£ÊǺ£ÄÚ×î¾ßʵÁ¦µÄÐÅÏ¢Çå¾²²úÆ·¡¢Çå¾²·þÎñ½â¾ö¼Æ»®µÄÁ캽ÆóÒµÖ®Ò»  ¡£

¹«Ë¾×ܲ¿Î»ÓÚ±±¾©ÊÐÖйشåÈí¼þÔ°×ðÁú¿­¹ÙÍøÈë¿Ú´óÏà £¬¹«Ë¾Ô±¹¤6000ÓàÈË £¬Ñз¢ÍŶÓ1200ÓàÈË, ÊÖÒÕ·þÎñÍŶÓ1300ÓàÈË  ¡£ÔÚÌìϸ÷Ê¡¡¢ÊС¢×ÔÖÎÇøÉèÁ¢·ÖÖ§»ú¹¹ÁùÊ®¶à¸ö £¬ÓµÓÐÁýÕÖÌìϵÄÏúÊÛϵͳ¡¢ÇþµÀϵͳºÍÊÖÒÕÖ§³Öϵͳ  ¡£¹«Ë¾ÓÚ2010Äê6ÔÂ23ÈÕÔÚÉîÛÚÖÐС°å¹ÒÅÆÉÏÊÐ  ¡££¨¹ÉƱ´úÂ룺002439£©

¶àÄêÀ´ £¬×ðÁú¿­¹ÙÍøÈë¿ÚÖÂÁ¦ÓÚÌṩ¾ßÓйú¼Ê¾ºÕùÁ¦µÄ×ÔÖ÷Á¢ÒìµÄÇå¾²²úÆ·ºÍ×î¼Ñʵ¼ù·þÎñ £¬×ÊÖú¿Í»§ÖÜÈ«ÌáÉýÆäIT»ù´¡ÉèÊ©µÄÇå¾²ÐÔºÍÉú²úЧÄÜ £¬Îª´òÔìºÍÌáÉý¹ú¼Ê»¯µÄÃñ×åÐÅÏ¢Çå¾²¹¤ÒµÁì¾üÆ·ÅÆ¶ø²»Ð¸Æð¾¢  ¡£

5.2 ¹ØÓÚ×ðÁú¿­¹ÙÍøÈë¿Ú

×ðÁú¿­¹ÙÍøÈë¿ÚÇå¾²Ó¦¼±ÏìÓ¦ÖÐÐÄÒÑÐû²¼1000¶à¸öÎó²îͨ¸æºÍΣº¦Ô¤¾¯ £¬ÎÒÃǽ«Ò»Á¬¸ú×ÙÈ«Çò×îеÄÍøÂçÇå¾²ÊÂÎñºÍÎó²î £¬ÎªÆóÒµµÄÐÅÏ¢Çå¾²±£¼Ý»¤º½  ¡£

¹Ø×¢ÎÒÃÇ£º

image.png