runcÈÝÆ÷ÌÓÒÝÎó²îÇ徲ͨ¸æ

Ðû²¼Ê±¼ä 2019-02-13

Îó²î±àºÅºÍ¼¶±ð


CVE±àºÅ£ºCVE-2019-5736 £¬Î£ÏÕ¼¶±ð£ºÑÏÖØ £¬ CVSS·ÖÖµ£º¹Ù·½Î´ÆÀ¶¨


Ó°Ïì¹æÄ£


ÊÜÓ°Ïì°æ±¾£º 

runC È«°æ±¾

LXC ÒÔ¼° Apache Mesos


Îó²î¸ÅÊö


    runcÊÇÒ»¸öƾ֤OCI(Open Container Initiative)±ê×¼½¨Éè²¢ÔËÐÐÈÝÆ÷µÄCLI tool¡£ÏÖÔÚdockerÒýÇæÄÚ²¿Ò²ÊÇ»ùÓÚrunc¹¹½¨µÄ¡£2019Äê2ÔÂ11ÈÕ £¬Ñо¿Ö°Ô±Í¨¹ýoss-securityÓʼþÁбíÅû¶ÁËruncÈÝÆ÷ÌÓÒÝÎó²îµÄÏêÇé £¬Îó²î¿ÉÄÜÓ°Ïì¿í´óÔÆ·þÎñ³§ÉÌ £¬Î£º¦ÑÏÖØ¡£


    ¸ÃÎó²îÔÊÐí¶ñÒâÈÝÆ÷ÒÔ×îÉÙµÄÓû§½»»¥ÁýÕÖËÞÖ÷»úÉϵÄrunCÎļþ £¬´Ó¶øÔÚËÞÖ÷»úÉÏÒÔ root ȨÏÞÖ´ÐжñÒâ´úÂë¡£µ±Öª×ãÒÔÏÂÌõ¼þʱ £¬¹¥»÷ÕßÓпÉÄÜÒÔrootȨÏÞÖ´ÐÐí§Òâ´úÂ룺


1. ʹÓù¥»÷Õß¿ØÖƵľµÏñ½¨ÉèÐÂÈÝÆ÷ £¬»òÕß¹¥»÷Õß¾ßÓÐijһdockerÈÝÆ÷µÄrootȨÏÞ


2. ¹¥»÷Õß¿ÉÒÔʹÓÃdocker exec·½·¨½øÈëÉÏÊöÈÝÆ÷


    ĬÈϵÄAppArmorÕ½ÂÔ²»¿É×èÖ¹¸ÃÎó²î¡£Í¬ÑùÔÚFedoraÉÏ £¬Ä¬ÈϵÄSELinuxÕ½ÂÔÒ²²»¿É×èÖ¹¸ÃÎó²î¡££¨ÓÉÓÚÈÝÆ÷Àú³ÌÊÇÒÔcontainer_runtime_tÔËÐеģ©¡£¿ÉÊÇ¿ÉÒÔͨ¹ý׼ȷʹÓÃÃüÃû¿Õ¼äµÄ·½·¨×èÖ¹´ËÎó²î£¨²»ÈÃËÞÖ÷»úµÄrootÓ³Éäµ½ÈÝÆ÷µÄÃüÃû¿Õ¼äÖУ©¡£


    ÉÏÊöÄÚÈÝÖ»·ºÆðÔÚ Fedora µÄ¡°moby-engine¡±Èí¼þ°üÖС£ÆäËûµÄdockerÈí¼þ°üÒÔ¼° podman²»»áÊܵ½´ËÎó²îµÄÓ°Ïì¡£ÓÉÓÚËûÃǵÄÈÝÆ÷Àú³ÌÊÇÒÔcontainer_tÔËÐеÄ¡£


Îó²îϸ½Ú


¹¥»÷Õß¿ÉÒÔ½«ÈÝÆ÷ÖеÄÄ¿µÄÎļþÌæ»»³ÉÖ¸ÏòruncµÄ×Ô¼ºµÄÎļþÀ´ÓÕÆ­runcÖ´ÐÐ×Ô¼º¡£ºÃ±ÈÄ¿µÄÎļþÊÇ/bin/bash £¬½«ËüÌæ»»³ÉÖ¸¶¨Ú¹ÊÍÆ÷·¾¶Îª#!/proc/self/exeµÄ¿ÉÖ´Ðо籾 £¬ÔÚÈÝÆ÷ÖÐÖ´ÐÐ/bin/bashʱ½«Ö´ÐÐ/proc/self/exe £¬ËüÖ¸ÏòhostÉϵÄruncÎļþ¡£È»ºó¹¥»÷Õß¿ÉÒÔ¼ÌÐøÐ´Èë/proc/self/exeÊÔͼÁýÕÖhostÉϵÄruncÎļþ¡£¿ÉÊÇÒ»Ñùƽ³£À´Ëµ²»»áÀÖ³É £¬ÓÉÓÚÄں˲»ÔÊÐíÔÚÖ´ÐÐruncʱÁýÕÖËü¡£ÎªÏàʶ¾öÕâ¸öÎÊÌâ £¬¹¥»÷Õß¿ÉÒÔʹÓÃO_PATH±ê¼Ç·­¿ª/proc/self/exeµÄÎļþÐÎò·û £¬È»ºóͨ¹ý/proc/self/fd/<nr>ʹÓÃO_WRONLY±ê¼ÇÖØÐ·­¿ªÎļþ £¬²¢ÊµÑéÔÚÒ»¸öÑ­»·ÖдÓÒ»¸öµ¥¶ÀµÄÀú³ÌдÈë¸ÃÎļþ¡£µ±runcÍ˳öʱÁýÕÖ»áÀÖ³É £¬ÔÚ´ËÖ®ºó £¬runc¿ÉÒÔÓÃÀ´¹¥»÷ÆäËüÈÝÆ÷»òhost¡£


Îó²îʹÓÃ


Îó²îPOCÒѹûÕæ£ºhttps://github.com/q3k/cve-2019-5736-poc¡£


ÐÞ¸´½¨Òé


¸üРrunC¡¢LXC ÖÁ¹Ù·½Ðû²¼µÄ×îв¹¶¡¡£


²Î¿¼Á´½Ó


https://www.openwall.com/lists/oss-security/2019/02/11/2