¡¾Îó²îͨ¸æ¡¿Kubernetes Argo CDȨÏÞÌáÉýÎó²î£¨CVE-2022-29165£©

Ðû²¼Ê±¼ä 2022-06-01

0x00 Îó²î¸ÅÊö

CVE   ID

CVE-2022-29165

·¢Ã÷ʱ¼ä

2022-06-01

Àà    ÐÍ

ȨÏÞÌáÉý

µÈ    ¼¶

ÑÏÖØ

Ô¶³ÌʹÓÃ

ÊÇ

Ó°Ïì¹æÄ£


¹¥»÷ÖØÆ¯ºó

µÍ

Óû§½»»¥

ÎÞ

PoC/EXP


ÔÚҰʹÓÃ


 

0x01 Îó²îÏêÇé

Argo CDÊÇÓÃÓÚKubernetesµÄÉùÃ÷ʽGitOpsÒ»Á¬½»¸¶¹¤¾ß¡£¡£¡£¡£¡£

5ÔÂ18ÈÕ £¬£¬£¬£¬ £¬Argo CDÏîÄ¿Ðû²¼Ç徲ͨ¸æ £¬£¬£¬£¬ £¬Argo CDÖб£´æÒ»¸öȨÏÞÌáÉýÎó²î£¨CVE-2022-29165£© £¬£¬£¬£¬ £¬¸ÃÎó²îµÄCVSSÆÀ·ÖΪ10.0¡£¡£¡£¡£¡£

µ±ÆôÓöÔArgo CDʵÀýµÄÄäÃû»á¼ûʱ£¨Ä¬ÈϽûÓã© £¬£¬£¬£¬ £¬Î´¾­Éí·ÝÑéÖ¤µÄÓû§¿ÉÒÔͨ¹ýÔÚÇëÇóÖз¢ËÍÌØÖÆµÄJSON Web Token£¨JWT£©À´Ã°³äµ±ºÎArgo CDÓû§»ò½ÇÉ« £¬£¬£¬£¬ £¬°üÀ¨ÖÎÀíÔ±Óû§ £¬£¬£¬£¬ £¬ÎÞÂÛ¸ÃÕÊ»§ÊÇ·ñ±»ÆôÓûò±£´æÓÚArgo CDʵÀýÉÏ¡£¡£¡£¡£¡£

ÀÖ³ÉʹÓôËÎó²î¿ÉÒÔÔÚ¼¯ÈºÉÏ»ñµÃÓëArgo CDʵÀýÏàͬµÄȨÏÞ £¬£¬£¬£¬ £¬ÔÚĬÈÏ×°ÖÃÖÐÊǼ¯ÈºÖÎÀíÔ±¡£¡£¡£¡£¡£Õ⽫Äܹ»½¨É衢ʹÓúÍɾ³ý¼¯ÈºÉϵÄÈκÎ×ÊÔ´ £¬£¬£¬£¬ £¬»òÖ´ÐÐÆäËü¶ñÒâ²Ù×÷¡£¡£¡£¡£¡£

 

Ó°Ïì¹æÄ£

Argo CD °æ±¾1.4.0 - 2.1.14

Argo CD °æ±¾ 2.2.8

Argo CD °æ±¾ 2.3.3

0x02 Çå¾²½¨Òé

ÏÖÔÚ´ËÎó²îÒѾ­ÐÞ¸´ £¬£¬£¬£¬ £¬½¨ÒéËùÓÐ Argo CD Óû§¾¡¿ì¸üе½ÒÔÏÂÐÞ¸´°æ±¾ £¬£¬£¬£¬ £¬ÎÞÂÛÄúµÄʵÀýÖÐÊÇ·ñÆôÓÃÁËÄäÃû»á¼û£º

Argo CD °æ±¾ v2.3.4

Argo CD °æ±¾ v2.2.9

Argo CD °æ±¾ v2.1.15

ÏÂÔØÁ´½Ó£º

https://github.com/argoproj/argo-cd/releases

»º½â²½·¥£º

½ûÓÃÄäÃû»á¼û

ÈôÊÇÔÝʱÎÞ·¨Éý¼¶µ½ÐÞ¸´°æ±¾ £¬£¬£¬£¬ £¬¿ÉÒÔÑ¡Ôñ½ûÓÃÄäÃû»á¼û£¨ÈôÊÇÒÑÆôÓã©¡£¡£¡£¡£¡£

1.ÈôÒªÅÌÎÊArgo CDʵÀýÊÇ·ñÆôÓÃÁËÄäÃû»á¼û £¬£¬£¬£¬ £¬¿ÉÒÔÅÌÎÊArgo CDµÄ×°ÖÃÃüÃû¿Õ¼äÖеÄargocd-cm ConfigMap¡£¡£¡£¡£¡£ÏÂÀý¼ÙÉèÒѾ­°ÑArgo CD×°Öõ½argocdÃüÃû¿Õ¼ä£º

$ kubectl get -n argocd cm argocd-cm -o jsonpath=¡¯{.data.users\.anonymous\.enabled}¡¯

ÈôÊÇ´ËÏÂÁîµÄЧ¹ûΪ¿Õ»ò"false" £¬£¬£¬£¬ £¬ÔòÌåÏÖδÆôÓöԸÃʵÀýµÄÄäÃû»á¼û¡£¡£¡£¡£¡£ÈôÊÇЧ¹ûÊÇ"true" £¬£¬£¬£¬ £¬ÔòÒâζ×ÅʵÀýºÜÈÝÒ×Êܵ½¹¥»÷¡£¡£¡£¡£¡£

2. Òª½ûÓÃÄäÃû»á¼û £¬£¬£¬£¬ £¬ÇëÐÞ²¹argocd-cmConfigMap ÒÔɾ³ý¸Ãusers.anonymous.enabled×ֶλò½«´Ë×Ö¶ÎÉèÖÃΪ"false"£º

A£®½«×Ö¶ÎÉèÖÃΪ"false"£º

$ kubectl patch -n argocd cm argocd-cm --type=json -p='[{"op":"add", "path":"/data/users.anonymous.enabled", "value":"false"}]'

B£®Ò²¿ÉÒÔÑ¡ÔñÍêȫɾ³ý¸Ã×Ö¶Î £¬£¬£¬£¬ £¬´Ó¶ø½ûÓÃÄäÃû»á¼û £¬£¬£¬£¬ £¬ÓÉÓÚĬÈÏֵΪfalse£º

$ kubectl patch -n argocd cm argocd-cm --type=json -p='[{"op":"remove", "path":"/data/users.anonymous.enabled"}]'

 

0x03 ²Î¿¼Á´½Ó

https://github.com/argoproj/argo-cd/security/advisories/GHSA-r642-gv9p-2wjj

https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/#anonymous-access

https://latesthackingnews.com/2022/05/31/serious-argo-cd-vulnerability-could-allow-admin-access-to-the-attackers/

 

0x04 °æ±¾ÐÅÏ¢

°æ±¾

ÈÕÆÚ

ÐÞ¸ÄÄÚÈÝ

V1.0

2022-06-01

Ê×´ÎÐû²¼

 

0x05 ¸½Â¼

ÄϹ¬NGÓéÀÖ¼ò½é

ÄϹ¬NGÓéÀÖ¹«Ë¾½¨ÉèÓÚ1996Äê £¬£¬£¬£¬ £¬²¢ÓÚ2010Äê6ÔÂ23ÈÕÔÚÉî½»ËùÖÐС°åÕýʽ¹ÒÅÆÉÏÊÐ £¬£¬£¬£¬ £¬ÊǺ£ÄÚ¼«¾ßʵÁ¦µÄ¡¢ÓµÓÐÍêÈ«×ÔÖ÷֪ʶ²úȨµÄÍøÂçÇå¾²²úÆ·¡¢¿ÉÐÅÇå¾²ÖÎÀíÆ½Ì¨¡¢Ç徲ЧÀÍÓë½â¾ö¼Æ»®µÄ×ÛºÏÌṩÉÌ¡£¡£¡£¡£¡£

¹«Ë¾×ܲ¿Î»ÓÚ±±¾©ÊÐÖйشåÈí¼þÔ° £¬£¬£¬£¬ £¬ÔÚÌìϸ÷Ê¡¡¢ÊС¢×ÔÖÎÇøÉèÓзÖÖ§»ú¹¹ £¬£¬£¬£¬ £¬ÓµÓÐÁýÕÖÌìϵÄÇþµÀϵͳºÍÊÖÒÕÖ§³ÖÖÐÐÄ £¬£¬£¬£¬ £¬²¢ÔÚ±±¾©¡¢ÉϺ£¡¢³É¶¼¡¢¹ãÖÝ¡¢³¤É³¡¢º¼ÖÝµÈ¶àµØÉèÓÐÑз¢ÖÐÐÄ¡£¡£¡£¡£¡£

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


¹ØÓÚÄϹ¬NGÓéÀÖ

ÄϹ¬NGÓéÀÖÇå¾²Ó¦¼±ÏìÓ¦ÖÐÐÄÖ÷ÒªÕë¶ÔÖ÷ÒªÇå¾²Îó²îµÄÔ¤¾¯¡¢¸ú×ٺͷÖÏíÈ«Çò×îеÄÍþвÇ鱨ºÍÇå¾²±¨¸æ¡£¡£¡£¡£¡£

¹Ø×¢ÒÔϹ«ÖںŠ£¬£¬£¬£¬ £¬»ñȡȫÇò×îÐÂÇå¾²×ÊѶ£º

image.png