¡¾Îó²îͨ¸æ¡¿runcÈÝÆ÷ÌÓÒÝÎó²î£¨CVE-2024-21626£©

Ðû²¼Ê±¼ä 2024-02-02

 

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

Îó²îÃû³Æ

 runcÈÝÆ÷ÌÓÒÝÎó²î

CVE   ID

CVE-2024-21626

Îó²îÀàÐÍ

ÈÝÆ÷ÌÓÒÝ

·¢Ã÷ʱ¼ä

2024-02-01

Îó²îÆÀ·Ö

8.6

Îó²îÆ·¼¶

¸ßΣ

¹¥»÷ÏòÁ¿

ÍâµØ

ËùÐèȨÏÞ

ÎÞ

ʹÓÃÄѶÈ

µÍ

Óû§½»»¥

ÐèÒª

PoC/EXP

δ¹ûÕæ

ÔÚҰʹÓÃ

δ·¢Ã÷

 

2024Äê2ÔÂ1ÈÕ£¬£¬£¬£¬£¬ £¬Z6×ðÁú¿­Ê±VSRC¼à²âµ½»¥ÁªÍøÉÏÅû¶¶à¸ö½¹µãÈÝÆ÷»ù´¡ÉèÊ©×é¼þÖз¢Ã÷ÁË4¸öÎó²î£¨CVE-2024-21626¡¢CVE-2024-23651¡¢CVE-2024-23652 ºÍ CVE-2024-23653£©£¬£¬£¬£¬£¬ £¬ÕâЩÎó²î±»³ÆÎªLeaky Vessels£¬£¬£¬£¬£¬ £¬Ó°ÏìÁËRuncºÍBuildKit£¬£¬£¬£¬£¬ £¬ÍþвÕß¿ÉʹÓÃÕâЩÎó²î»ñµÃ¶Ôµ×²ãÖ÷»ú²Ù×÷ϵͳµÄδÊÚȨ»á¼û¡£¡£¡£

runc ÊÇÒ»ÖÖ CLI ¹¤¾ß£¬£¬£¬£¬£¬ £¬ÓÃÓÚÆ¾Ö¤ OCI ¹æ·¶ÔÚ Linux ÉÏÌìÉúºÍÔËÐÐÈÝÆ÷¡£¡£¡£runcµÄʹÓúÜÊÇÎÞа£¬£¬£¬£¬£¬ £¬¿ÉÒÔÓëÖÖÖÖÈÝÆ÷¹¤¾ßÇ徲̨¼¯³É£¬£¬£¬£¬£¬ £¬ÈçDocker¡¢KubernetesµÈ¡£¡£¡£ÆäÖÐCVE-2024-21626Éæ¼°runc£¬£¬£¬£¬£¬ £¬runc 1.1.11¼°Ö®Ç°°æ±¾ÖУ¬£¬£¬£¬£¬ £¬ÓÉÓÚÄÚ²¿ÎļþÐÎò·û×ß©£¬£¬£¬£¬£¬ £¬ÍâµØÍþвÕß¿ÉÒÔͨ¹ý¶àÖÖ·½·¨ÊµÏÖÈÝÆ÷ÌÓÒÝ£ºÍþвÕß¿ÉÒÔͨ¹ýʹÐÂÌìÉúµÄÈÝÆ÷Àú³Ì£¨À´×Ôrunc exec£©ÔÚÖ÷»úÎļþϵͳÃüÃû¿Õ¼äÖÐÓµÓÐÒ»¸öÊÂÇéĿ¼£¬£¬£¬£¬£¬ £¬»òÓÕÊ¹ÌØÈ¨Óû§ÔËÐжñÒâ¾µÏñ²¢ÔÊÐíÈÝÆ÷Àú³Ìͨ¹ý runc run »á¼ûÖ÷»úÎļþϵͳ£¬£¬£¬£¬£¬ £¬´Ó¶ø»ñµÃ¶ÔÖ÷»úÎļþϵͳµÄ»á¼ûȨÏÞ¡£¡£¡£ÕâЩ¹¥»÷»¹¿ÉÓÃÓÚÁýÕÖ°ëí§ÒâÖ÷»ú¶þ½øÖÆÎļþ£¬£¬£¬£¬£¬ £¬´Ó¶øÊµÏÖÈÝÆ÷ÌÓÒÝ¡£¡£¡£

BuildKit ÊÇDocker¹Ù·½ÉçÇøÍÆ³öµÄÏÂÒ»´ú¾µÏñ¹¹½¨×é¼þ£¬£¬£¬£¬£¬ £¬¿ÉÒÔÔ½·¢¿ìËÙ¡¢ÓÐÓá¢Çå¾²µØ¹¹½¨docker ¾µÏñ¡£¡£¡£MobyÊÇDocker½¨ÉèµÄÒ»¸ö¿ªÔ´ÏîÄ¿£¬£¬£¬£¬£¬ £¬Ö¼ÔÚʵÏÖÈí¼þÈÝÆ÷»¯¡£¡£¡£BuildKiºÍMobyÖл¹±£´æÈç϶à¸öÎó²î£º

CVE-2024-23651£º¸ÃÎó²îµÄCVSSÆÀ·ÖΪ8.7£¬£¬£¬£¬£¬ £¬ÔÚ BuildKit <= v0.12.4 ÖУ¬£¬£¬£¬£¬ £¬²¢ÐÐÔËÐеÄÁ½¸ö¶ñÒâ¹¹½¨°ì·¨Óë×Ó·¾¶¹²ÏíÏàͬµÄ»º´æ¹ÒÔØ¿ÉÄܻᵼÖ¾ºÕùÌõ¼þ£¬£¬£¬£¬£¬ £¬´Ó¶øµ¼Ö¹¹½¨ÈÝÆ÷¿ÉÒÔ»á¼ûÖ÷»úϵͳÖеÄÎļþ¡£¡£¡£Ö»Óе±Óû§ÊÔͼ¹¹½¨¶ñÒâÏîÄ¿µÄDockerfileʱ£¬£¬£¬£¬£¬ £¬²Å»á±¬·¢ÕâÖÖÇéÐΡ£¡£¡£

CVE-2024-23652£º¸ÃÎó²îµÄCVSSÆÀ·ÖΪ10.0£¬£¬£¬£¬£¬ £¬ÔÚ BuildKit <= v0.12.4 ÖУ¬£¬£¬£¬£¬ £¬Ê¹Óà RUN --mount µÄ¶ñÒâ BuildKit ǰ¶Ë»ò Dockerfile ¿ÉÄÜ»áÓÕÆ­É¾³ýΪ¹ÒÔØµã½¨ÉèµÄ¿ÕÎļþµÄ¹¦Ð§£¬£¬£¬£¬£¬ £¬´Ó¶ø´ÓÖ÷»úϵͳÖÐɾ³ýÈÝÆ÷ÍâµÄÎļþ¡£¡£¡£Ö»Óе±Óû§Ê¹ÓöñÒâ Dockerfile ʱ²Å»á±¬·¢ÕâÖÖÇéÐΡ£¡£¡£

CVE-2024-23653£º¸ÃÎó²îµÄCVSSÆÀ·ÖΪ9.8¡£¡£¡£³ýÁË×÷Ϊ¹¹½¨°ì·¨ÔËÐÐÈÝÆ÷Í⣬£¬£¬£¬£¬ £¬BuildKit »¹ÌṩÁË»ùÓÚ¹¹½¨¾µÏñÔËÐн»»¥Ê½ÈÝÆ÷µÄ API¡£¡£¡£ÔÚ BuildKit <= v0.12.4 ÖУ¬£¬£¬£¬£¬ £¬¿ÉÒÔʹÓÃÕâЩ API À´ÒªÇó BuildKit ÒÔÌáÉýµÄȨÏÞÔËÐÐÈÝÆ÷¡£¡£¡£Í¨³££¬£¬£¬£¬£¬ £¬Ö»ÓÐÔÚ buildkitd ÉèÖÃÆôÓÃÁË security.insecure ȨÏÞ£¬£¬£¬£¬£¬ £¬²¢ÇÒ³õʼ»¯¹¹½¨ÇëÇóµÄÓû§ÔÊÐíµÄÇéÐÎÏ£¬£¬£¬£¬£¬ £¬²ÅÔÊÐíÔËÐдËÀàÈÝÆ÷¡£¡£¡£

CVE-2024-23650£¨ÖÐΣ£©£ºÔÚ BuildKit <= v0.12.4 ÖУ¬£¬£¬£¬£¬ £¬¶ñÒâ BuildKit ¿Í»§¶Ë»òǰ¶Ë¿ÉÖÆ×÷Ò»¸öÇëÇ󣬣¬£¬£¬£¬ £¬µ¼Ö BuildKit ÊØ»¤Àú³ÌÒò¿Ö»Å¶øÍ߽⡣¡£¡£

CVE-2024-24557£¨ÖÐΣ£©£ºÔÚ Moby <= v25.0.1 ºÍ <= v24.0.8 ÖУ¬£¬£¬£¬£¬ £¬ÈôÊǾµÏñÊÇÖØÐ¹¹½¨µÄ£¬£¬£¬£¬£¬ £¬¾­µäµÄ¹¹½¨Æ÷»º´æÏµÍ³ºÜÈÝÒ×·ºÆð»º´æÖж¾¡£¡£¡£

 

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

Runc <= 1.1.11

BuildKit <= 0.12.4

Moby (Docker Engine)<= 25.0.1 ºÍ<= 24.0.8

Docker Desktop <= 4.27.0

Containerd < 1.6.28

 

 

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

3.1 Éý¼¶°æ±¾

ÏÖÔÚ²¿·ÖÈÝÆ÷»ù´¡ÉèÊ©ÖÐÒѾ­ÐÞ¸´ÁËÕâЩÎó²î£¬£¬£¬£¬£¬ £¬ÊÜÓ°ÏìÓû§¿ÉÉý¼¶µ½ÒÔϰ汾£º

Runc >= 1.1.12

BuildKit >= 0.12.5

Moby (Docker Engine) >= 25.0.2 ºÍ >= 24.0.9

Docker Desktop >= 4.27.1

Containerd >= 1.6.28

ÏÂÔØÁ´½Ó£º

https://snyk.io/blog/leaky-vessels-docker-runc-container-breakout-vulnerabilities/

3.2 ÔÝʱ²½·¥

ÈçÎÞ·¨Éý¼¶µ½ÐÞ¸´°æ±¾£¬£¬£¬£¬£¬ £¬¿É×ñÕÕÒÔÏÂ×î¼Ñʵ¼ùÀ´½µµÍΣº¦£º

l  ½öʹÓÃÊÜÐÅÈ뵀 Docker ¾µÏñ£¨ÀýÈçDocker ¹Ù·½¾µÏñ£©¡£¡£¡£

l  ²»Òª´Ó²»ÊÜÐÅÈεÄȪԴ»ò²»ÊÜÐÅÈ뵀 Dockerfile ¹¹½¨ Docker ¾µÏñ¡£¡£¡£

l  ÈôÊÇÊÇʹÓà Docker Desktop µÄ Docker Business ¿Í»§£¬£¬£¬£¬£¬ £¬²¢ÇÒÎÞ·¨ÔÚ v4.27.1 Ðû²¼ºóÁ¬Ã¦¸üе½¸Ã°æ±¾£¬£¬£¬£¬£¬ £¬ÇëÈ·±£ÆôÓà Hardened Docker Desktop ¹¦Ð§£¬£¬£¬£¬£¬ £¬ÀýÈ磺

¨¹  ÔöÇ¿µÄÈÝÆ÷¸ôÀ루Enhanced Container Isolation£©£¬£¬£¬£¬£¬ £¬¿ÉÔÚ´Ó¶ñÒâ¾µÏñÔËÐÐÈÝÆ÷µÄÇéÐÎϼõÇáCVE-2024-21626µÄÓ°Ïì¡£¡£¡£

¨¹  ¾µÏñ»á¼ûÖÎÀíºÍ×¢²á±í»á¼ûÖÎÀí£¬£¬£¬£¬£¬ £¬¿ÉÈÃÆóÒµ¿ØÖÆÓû§¿ÉÒÔ»á¼ûÄÄЩ¾µÏñºÍ´æ´¢¿â¡£¡£¡£

l  ¹ØÓÚ CVE-2024-23650¡¢CVE-2024-23651¡¢CVE-2024-23652 ºÍ CVE-2024-23653£¬£¬£¬£¬£¬ £¬Çë×èֹʹÓÃÀ´×Ô²»ÊÜÐÅÈÎȪԴµÄBuildKit ǰ¶Ë¡£¡£¡£Ç°¶Ë¾µÏñͨ³£ÔÚ Dockerfile µÄ #syntax ÐÐÖÐÖ¸¶¨£¬£¬£¬£¬£¬ £¬»òÔÚʹÓà buildctl build ÏÂÁîʱʹÓà --frontend ±ê¼ÇÖ¸¶¨¡£¡£¡£

l  Òª»º½â CVE-2024-24557 µÄÓ°Ï죬£¬£¬£¬£¬ £¬ÇëÈ·±£ÔÚ¹¹½¨¾µÏñʱʹÓà BuildKit »ò½ûÓûº´æ¡£¡£¡£


3.3 ͨÓý¨Òé

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

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

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

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

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

3.4 ²Î¿¼Á´½Ó

https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv

https://snyk.io/blog/leaky-vessels-docker-runc-container-breakout-vulnerabilities/

https://snyk.io/blog/cve-2024-21626-runc-process-cwd-container-breakout/

https://www.docker.com/blog/docker-security-advisory-multiple-vulnerabilities-in-runc-buildkit-and-moby/

 


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

°æ±¾

ÈÕÆÚ

±¸×¢

V1.0

2024-02-02

Ê×´ÎÐû²¼

 


Îå¡¢¸½Â¼

5.1 Z6×ðÁú¿­Ê±¼ò½é

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

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

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

5.2 ¹ØÓÚZ6×ðÁú¿­Ê±

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

¹Ø×¢ÎÒÃÇ£º

image.png