¡¾·ì϶¹«¸æ¡¿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ÈÕ£¬GA»Æ½ð¼×¼¯ÍÅ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 GA»Æ½ð¼×¼ò½é

GA»Æ½ð¼×³ÉÁ¢ÓÚ1996Ä꣬ÊÇÓÉÁôÃÀ²©Ê¿ÑÏÍû¼ÑŮʿ´´½¨µÄ¡¢Õ¼ÓÐÆëÈ«×ÔÖ÷֪ʶ²úȨµÄÐÅÏ¢°²È«¸ß¿Æ¼¼ÆóÒµ¡£ÊǹúÄÚ×î¾ßʵÁ¦µÄÐÅÏ¢°²È«²úÆ·¡¢°²È«·þÎñ½â¾ö¹æ»®µÄÁ캽ÆóÒµÖ®Ò»¡£

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

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

5.2 ¹ØÓÚGA»Æ½ð¼×

GA»Æ½ð¼×°²È«Ó¦¼±ÏìÓ¦ÖÐÐÄÒѰ䲼1000¶à¸ö·ì϶¹«¸æÎ¢·çÏÕÔ¤¾¯£¬ÎÒÃǽ«³ÖÐø¸ú×ÙÈ«Çò×îеÄÍøÂ簲ȫÊÂÎñºÍ·ì϶£¬ÎªÆóÒµµÄÐÅÏ¢°²È«±£¼Ý»¤º½¡£

¹Ø×¢ÎÒÃÇ£º

image.png