Linux eBPF JITȨÏÞÌáÉý·ì϶£¨CVE-2020-27194£©·ÖÎöÓëÑéÖ¤
°ä²¼¹¦·ò 2020-11-03·ì϶²¼¾°
½üÈÕ£¬£¬£¬£¬£¬£¬¹ú±í°²È«×êÑÐÈËÔ±Åû¶һ¸öLinux eBPF verifier×é¼þÃýÎóÑéÖ¤·ì϶£¬£¬£¬£¬£¬£¬´Ë·ì϶ԴÓÚbpfÑé֤ϵͳÔÚLinuxÄÚºËÖÐûÓÐÕýÈ·ÍÆËãijЩ²Ù×÷µÄ¼Ä·ÅÆ÷Ììǵ¸ú×Ù£¬£¬£¬£¬£¬£¬µ¼Ö±¾µØ¹¥»÷ÕßÄܹ»ÀûÓôËȱµã½øÐÐÄÚºËÐÅϢй¶»òÌØÈ¨ÌáÉý£¬£¬£¬£¬£¬£¬¸Ã·ì϶±àºÅΪCVE-2020-27194¡£¡£¡£¡£¡£¡£¡£¡£
Ó°ÏìÁìÓòÓë·À»¤´ëÊ©
Linux-5.7 ~ Linux-5.8.14
Ubuntu 20.10
2¡¢·À»¤´ëÊ©
ʵʱ¸üÐÂÉý¼¶Äںˣ»£»£»£»£»
½«kernel.unprivileged_bpf_disabled.sysctlÉèÖÃΪ1£¬£¬£¬£¬£¬£¬Ò»Ê±ÏÞ¶Èͨ³£Óû§È¨ÏÞ¡£¡£¡£¡£¡£¡£¡£¡£
·ì϶µÀÀíÓëµ÷ÊÔ·ÖÎö
1¡¢·ì϶µÀÀí
¸Ã·ì϶ºÍPwn2own2020½ÇÖðÖÐʹÓõÄCVE-2020-8835·ì϶µÀÀíÒ»Ö£¬£¬£¬£¬£¬£¬¾ùÊÇÃýÎóÍÆËãÁË¼Ä·ÅÆ÷Ììǵ¸ú×Ù£¬£¬£¬£¬£¬£¬µ¼ÖÂÄܹ»ÈƹýÑéÖ¤Æ÷²é³´ïµ½Ô½½ç¶Áд¡£¡£¡£¡£¡£¡£¡£¡£È±µã´úÂë³Ê´Ë¿Ìkernel/bpf/verifier.cµÄscalar32_min_max_or()º¯ÊýÖУ¬£¬£¬£¬£¬£¬¸Ãº¯ÊýÊÇÔÚcommit_id£º3f50f132d840ÖÐÒýÈëµÄ£¬£¬£¬£¬£¬£¬¸ÃÖ°ÄÜʵÏÖÁËÏÔʽµÄALU32(32Î»ÍÆËãÀà²Ù×÷)¼Ä·ÅÆ÷Ììǵ¸ú×Ù£¬£¬£¬£¬£¬£¬´¦ÖÃORÔËËãʱ£¬£¬£¬£¬£¬£¬Å²ÓÃscalar32_min_max_or()º¯Êý½øÐÐ32λ¼Ä·ÅÆ÷Ììǵ¸ú×Ù£¬£¬£¬£¬£¬£¬¸Ãº¯ÊýʵÏÖÈçÏ£º

ÐÐ5365ºÍÐÐ5366£¬£¬£¬£¬£¬£¬Ö±½Ó½«dst_reg¼Ä·ÅÆ÷ÖеÄ64λÎÞ·ûºÅÖµ¸³Öµ¸ø32λÓзûºÅÖµ£¬£¬£¬£¬£¬£¬ÕâÏÔÖøÊÇÃýÎóµÄ¡£¡£¡£¡£¡£¡£¡£¡£ÀýÈçÉèÖÃdst_reg->umin_value=1£¬£¬£¬£¬£¬£¬dst_reg->umax_value=0x600000001£¬£¬£¬£¬£¬£¬µ±½øÐÐÈçÉϲÙ×÷ºó£¬£¬£¬£¬£¬£¬dst_reg->s32_min_valueΪ1£¬£¬£¬£¬£¬£¬µ«ÊÇdst_reg->s32_max_valueÒ²½«ÊÇ1£¬£¬£¬£¬£¬£¬ÓÉÓÚ0x600000001µÄ¸ß뽫±»½Ø¶Ï£¬£¬£¬£¬£¬£¬Õâʱdst_reg¼Ä·ÅÆ÷µÄÁìÓò´Ó[1,0x600000001]Ôì³ÉÁË[1,1]£¬£¬£¬£¬£¬£¬Õâ»á±»ÑéÖ¤Æ÷¼ø±ðΪ³£Êý1£¬£¬£¬£¬£¬£¬½ø¶øÈƹýÑéÖ¤Æ÷²é³¡£¡£¡£¡£¡£¡£¡£¡£·ì϶²¹¶¡ÖУ¬£¬£¬£¬£¬£¬½øÐÐÁËÕýÈ·µÄ32λÓзûºÅÖµ¸³Öµ²Ù×÷£¬£¬£¬£¬£¬£¬ÈçÏÂËùʾ£º
2¡¢µ÷ÊÔ·ÖÎö
Ê×ÏȽ«¼Ä·ÅÆ÷µÄumin_valueÉèÖÃΪ0x1£¬£¬£¬£¬£¬£¬Äܹ»Í¨¹ýÈçÏÂBPFÖ¸ÁîʵÏÖ£º

´Ëʱ£¬£¬£¬£¬£¬£¬¼Ä·ÅÆ÷µÄ״̬ÈçÏÂËùʾ£º

ÉèÖÃÍêumin_valueºó£¬£¬£¬£¬£¬£¬ÉèÖÃumax_valueΪ0x600000001£¬£¬£¬£¬£¬£¬Äܹ»Í¨¹ýÈçÏÂBPFÖ¸ÁîʵÏÖ£º

¶ÏµãÉäÖк󣬣¬£¬£¬£¬£¬Å²ÓÃÕ»ÈçÏÂËùʾ£º

Ö´ÐÐÍêBPF_JMP_REG(BPF_JLT,BPF_REG_6,BPF_REG_5,1)Ö¸Áîºó£¬£¬£¬£¬£¬£¬½«R6¼Ä·ÅÆ÷ÁìÓòÉèÖÃΪ0x1µ½0x600000001Ö®¼ä¡£¡£¡£¡£¡£¡£¡£¡£R6¼Ä·ÅÆ÷״̬ÈçÏÂËùʾ£º

½Ó×Å£¬£¬£¬£¬£¬£¬ÉèÖÃR6¼Ä·ÅÆ÷ÖÐ32λµÄÎÞ·ûºÅ×îÓ×ÖµºÍ×î´óÖµ£¬£¬£¬£¬£¬£¬

ÉèÖÃÍêÖ®ºó£¬£¬£¬£¬£¬£¬R6¼Ä·ÅÆ÷״̬ÈçÏÂËùʾ£º

ºì¿òÖÐÉèÖõÄÖµÊDZرØÒª±£Õϵ쬣¬£¬£¬£¬£¬±ØÒªÌáǰ½øÐÐÉèÖ㬣¬£¬£¬£¬£¬·½±ãºóÃæÈÆ¹ýifÅжϽøÈëȱµã´úÂë¿éÖС£¡£¡£¡£¡£¡£¡£¡£½Ó×ÅÉèÖÃR6¼Ä·ÅÆ÷32λÓзûºÅ×îÓ×ÖµºÍ×î´óÖµ£¬£¬£¬£¬£¬£¬´úÂëÈçÏÂËùʾ£º

ÐÐ5355£¬£¬£¬£¬£¬£¬ifÓï¾äÅжϲ»³ÉÁ¢£¬£¬£¬£¬£¬£¬»á×ßµ½ÐÐ5362·ÖÖ§ÖУ¬£¬£¬£¬£¬£¬µ÷ÊÔÇé¿öÈçÏÂËùʾ£º

´¥·¢·ì϶ºó£¬£¬£¬£¬£¬£¬R6¼Ä·ÅÆ÷״̬ÈçÏ£º

´Ëʱs32_min_valueºÍs32_max_value¶¼Îª0x1£¬£¬£¬£¬£¬£¬ÔÚÑéÖ¤Æ÷ÖУ¬£¬£¬£¬£¬£¬R6¼Ä·ÅÆ÷µÄ32λÓзûºÅȡֵΪ³£Êý1¡£¡£¡£¡£¡£¡£¡£¡£µ«R6¼Ä·ÅÆ÷µÄȡֵÏÖʵÊÇÓÐÁìÓòµÄ¡£¡£¡£¡£¡£¡£¡£¡£½Ó׎«R6¼Ä·ÅÆ÷½øÐÐ32λMOVµ½R7¼Ä·ÅÆ÷ÖУ¬£¬£¬£¬£¬£¬Ö´Ðе½ÈçÏ´úÂëËùʾ£º

´Ëʱ£¬£¬£¬£¬£¬£¬src_reg¼Ä·ÅÆ÷ÈçÏÂËùʾ£º

Ö´ÐÐMOV²Ù×÷֮ǰ£¬£¬£¬£¬£¬£¬R7¼Ä·ÅÆ÷״̬ÈçÏÂËùʾ£º

Ö´ÐÐMOV²Ù×÷ºó£¬£¬£¬£¬£¬£¬R7¼Ä·ÅÆ÷״̬ÈçÏÂËùʾ£º

R7¼Ä·ÅÆ÷Ϊ³£Á¿1£¬£¬£¬£¬£¬£¬ÏÖʵÔËÐÐÇé¿öÏÂÊÇÓÐÁìÓòµÄ£¬£¬£¬£¬£¬£¬Äܹ»ÉèÖÃΪ2¡£¡£¡£¡£¡£¡£¡£¡£Ö´ÐÐBPF_ALU64_IMM(BPF_RSH,BPF_REG_7,1)ºó£¬£¬£¬£¬£¬£¬¼´R7 >>= 1£¬£¬£¬£¬£¬£¬R7¼Ä·ÅÆ÷ÈçÏÂËùʾ£º

´Ëʱumin_valueºÍumax_valueΪ0£¬£¬£¬£¬£¬£¬¼´ÎªR7¼Ä·ÅÆ÷½øÐÐÓÒÒÆ²Ù×÷ºó£¬£¬£¬£¬£¬£¬ÔÚÑéÖ¤Æ÷Öб»¼ø±ðΪ³£Êý0£¬£¬£¬£¬£¬£¬´ËʱR7¼Ä·ÅÆ÷½øÐмӼõÔËËã¶¼²»»á²úÉúÔ½½ç£¬£¬£¬£¬£¬£¬ÈƹýÁËÑéÖ¤Æ÷µÄÌìǵ²é³¡£¡£¡£¡£¡£¡£¡£¡£µ«ÊÇÈôÊÇR7¼Ä·ÅÆ÷ÏÖʵÉèÖÃΪ2£¬£¬£¬£¬£¬£¬2>>1Ϊ1£¬£¬£¬£¬£¬£¬R7¼Ä·ÅÆ÷Ϊ1£¬£¬£¬£¬£¬£¬´ËʱºÍR7¼Ä·ÅÆ÷½øÐмӼõÔËË㣬£¬£¬£¬£¬£¬´ïµ½Ô½½ç¶Áд¡£¡£¡£¡£¡£¡£¡£¡£
·ì϶¸´ÏÖ
ÔÚLinux-5.7.7°æ±¾ÖнøÐзì϶ÀûÓ㬣¬£¬£¬£¬£¬³É¹¦ÌáȨ¡£¡£¡£¡£¡£¡£¡£¡£

²Î¿¼Á´½Ó£º
[1] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-27194
[2] https://github.com/torvalds/linux/commit/5b9fbeb75b6a98955f628e205ac26689bcb1383e
[3] https://github.com/torvalds/linux/commit/3f50f132d8400e129fc9eb68b5020167ef80a244
[4] https://scannell.me/fuzzing-for-ebpf-jit-bugs-in-the-linux-kernel/
8827Ì«Ñô¼¯ÍÅ»ý¼«·ÀÓù³¢ÊÔÊÒ£¨ADLab£©
ADLab³ÉÁ¢ÓÚ1999Ä꣬£¬£¬£¬£¬£¬ÊÇÖйú°²È«ÐÐÒµ×îÔç³ÉÁ¢µÄ¹¥·À¼¼Êõ×êÑг¢ÊÔÊÒÖ®Ò»£¬£¬£¬£¬£¬£¬Î¢ÈíMAPP´òËãÖ÷Ìâ³ÉÔ±£¬£¬£¬£¬£¬£¬¡°ºÚȸ¹¥»÷¡±¸ÅÏëÊ×ÍÆÕß¡£¡£¡£¡£¡£¡£¡£¡£½ØÖ¹Ä¿Ç°£¬£¬£¬£¬£¬£¬ADLabÒÑͨ¹ýCVEÀۼư䲼°²È«·ì϶½ü1100¸ö£¬£¬£¬£¬£¬£¬Í¨¹ý CNVD/CNNVDÀۼư䲼°²È«·ì϶900Óà¸ö£¬£¬£¬£¬£¬£¬³ÖÐøÎ¬³Ö¹ú¼ÊÍøÂ簲ȫÁìÓòÒ»Á÷Ë®×¼¡£¡£¡£¡£¡£¡£¡£¡£³¢ÊÔÊÒ×êÑз½Ïòº¸Ç²Ù×÷ϵͳÓëÀûÓÃϵͳ°²È«×êÑÓ×¢ÒÆ¶¯ÖÇÄÜÖն˰²È«×êÑÓ×¢ÎïÁªÍøÖÇÄÜÉ豸°²È«×êÑÓ×¢Web°²È«×êÑÓ×¢¹¤¿ØÏµÍ³°²È«×êÑÓ×¢ÔÆ°²È«×êÑС£¡£¡£¡£¡£¡£¡£¡£×êÑгɾÍÀûÓÃÓÚ²úÆ·Ö÷Ìâ¼¼Êõ×êÑÓ×¢¹ú¶È³Áµã¿Æ¼¼ÏîÄ¿¹¥¹Ø¡¢×¨Òµ°²È«·þÎñµÈ¡£¡£¡£¡£¡£¡£¡£¡£



¾©¹«Íø°²±¸11010802024551ºÅ