UbuntuÄÚºËOverlayFSȨÏÞÌÓÒÝ·ì϶·ÖÎö£¨CVE-2021-3493£©
°ä²¼¹¦·ò 2021-04-29±³ ¾°
ƾ¾Ý¹Ù·½½éÉÜ£¬£¬£¬OverlayFs·ì϶ÔÊÐíUbuntuϵı¾µØÓû§»ñµÃrootȨÏÞ¡£Õâ¸ö·ì϶ÊÇUbuntuϵͳÖеÄÌØ¶¨ÎÊÌ⣬£¬£¬ÔÚ¸ÃÎÊÌâÖУ¬£¬£¬Î´ÕýÈ·ÑéÖ¤¹ØÓÚÓû§namespaceÎļþϵͳְÄܵÄÀûÓ÷¨Ê½¡£ÓÉÓÚUbuntu¸½´øÁËÒ»¸öÔÊÐí·ÇÌØÈ¨µÄOverlayfs¹ÒÔØµÄ²¹¶¡£¬£¬£¬½áºÏÕâ¸ö²¹¶¡¹ÒÔØOverlayfsÄܹ»È¨ÏÞÌÓÒÝ£¬£¬£¬´ïµ½È¨ÏÞÌáÉýµÄÖ÷ÕÅ¡£
Ó°Ïì°æ±¾
Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM
·ì϶¸´ÏÖ
Ê×ÏȲ鿴Äں˰汾£¬£¬£¬ÎªÊÜÓ°Ïì°æ±¾±àÒëexploitºóÖ´ÐУ¬£¬£¬ÌáȨ³É¹¦¡£ÈçÏÂͼËùʾ£º£º£º

ÓйؽéÉÜ
£¨1£©Ðé¹¹Îļþϵͳ
Ϊ֧³Ö¸÷Àà±¾»úÎļþϵͳ£¬£¬£¬ÇÒÔÚͬʱÔÊÐí½Ó¼ûÆäËû²Ù×÷ϵͳµÄÎļþ£¬£¬£¬LinuxÄÚºËÔÚÓû§¹ý³Ì£¨»òC³ß¶È¿â£©ºÍÎļþϵͳʵÏÖÖ®¼äÒýÈëÁËÒ»¸ö³éÏó²ã¡£¸Ã³éÏó²ã³ÆÖ®ÎªÐé¹¹Îļþϵͳ£¨Virtual File System£©¼ò³ÆVFS£¬£¬£¬ÈçÏÂͼËùʾ£º£º£º

VFSΪËùÓеÄÎļþϵͳÌṩÁËͳһµÄ½Ó¿Ú£¬£¬£¬¶Ôÿ¸ö¾ßÌåÎļþϵͳµÄ½Ó¼ûҪͨ¹ýVFS½ç˵µÄ½Ó¿ÚÀ´ÊµÏÖ¡£VFS³éÏóÁ˼¸¸öÖØÒªµÄ½á¹¹£º£º£ºsuper_block£¬£¬£¬dentry£¬£¬£¬inode£¬£¬£¬file£¬£¬£¬Í¨¹ýÕâЩ½á¹¹½«Ò»¸öÕæÊµµÄÎļþϵͳ³éÏóµ½ÄÚ´æÖУ¬£¬£¬´Ó¶øÍ¨¹ýÖÎÀíÕâЩ¶ÔÏó¶ÔÎļþϵͳ½øÐвÙ×÷¡£
£¨2£©OverlayÎļþϵͳ
OverlayFSÊÇÒ»¸öÃæÏòLinuxµÄÎļþϵͳ·þÎñ£¬£¬£¬ÆäʵÏÖÒ»¸öÃæÏòÆäËûÎļþϵͳµÄ½áºÏ¹ÒÔØ¡£ËüÓÚ2014Äê±»¹é²¢µ½LinuxÄں˵Ä3.18°æ±¾¡£OverlayFSµÄÖØÒª»úÖÆÉæ¼°µ½Á½¸öÎļþϵͳ£¬£¬£¬ÌṩͳһÃû³ÆµÄĿ¼ʱ£¬£¬£¬Ä¿Â¼½Ó¼û¹é²¢¡£³ý´ËÖ®Í⣬£¬£¬OverlayFS³öÏÖÆäÖÐÒ»¸öËù²úÉúµÄ¶ÔÏ󣬣¬£¬¡°Éϲ㡱ÎļþϵͳÓÅÏÈ¡£OverlayFSÓëÆäËû¸²¸ÇÐÍÎļþϵͳ·ÖÆç£¬£¬£¬OverlayFS¹é²¢µÄĿ¼×ÓÊ÷²»Ô¸¶¨ÊÇÀ´×Ô·ÖÆçµÄÎļþϵͳ¡£³ÉЧÈçÏÂͼËùʾ£º£º£º

Æä¹ÒÔØÎļþµÄ¸ù»ùºÅÁîÈçÏ£º£º£º
mount -t overlay overlay -o lowerdir=lower1:lower2:lower3,upperdir=upper,workdir=work merged¡£
ÆäÖС°lower1:lower2:lower3¡±°µÊ¾·ÖÆçµÄlower²ãĿ¼£¬£¬£¬·ÖÆçµÄĿ¼ʹÓá°:¡±·Ö¸ô£¬£¬£¬µµ´Î¹ØÏµË³´ÎΪlower1 > lower2 > lower3£¨×¢£º£º£º¶àlower²ãÖ°ÄÜÖ§³ÖÔÚLinux-4.0ºÏÈ룬£¬£¬Linux-3.18°æ±¾Ö»ÄÜÖ¸¶¨Ò»¸ölower dir£©,¶øºóupperºÍworkĿ¼±ðÀ밵ʾ£º£º£ºupper²ãĿ¼ºÍÎļþϵͳ¹ÒÔØºó£¬£¬£¬ÓÃÓÚ´æ·ÅһʱºÍ¼ä½ÓÎļþµÄ¹¤×÷»ùĿ¼£¨work base dir£©£¬£¬£¬×îºóµÄmergedĿ¼¾ÍÊÇ×îÖյĹÒÔØµãĿ¼¡£ÈôËùÓÐ˳Àû£¬£¬£¬ÔÚÖ´ÐÐÒÔÉϺÅÁîºó£¬£¬£¬overlayfs¾Í³É¹¦¹ÒÔØµ½mergedĿ¼ÏÂÁË¡£
£¨3£©capabilitiy
ΪÁ˽øÐÐȨÏ޲鳣¬£¬£¬Linuxϵͳ½«¹ý³Ì·ÖΪÁËÁ½Àࣺ£º£ºprivileged¹ý³Ì£¨effective UIDΪ0£©ºÍ unprivileged ¹ý³Ì£¨effective UIDΪ·Ç0£©¡£privileged¹ý³ÌÄܹ»ÈƹýËùÓеÄÄÚºËȨÏ޲鳣¬£¬£¬¶øunprivileged ¹ý³ÌÒª½øÐÐÑϸñµÄȨÏ޲鳡£´Ó2.2°æ±¾µÄÄÚºËÆðÍ·£¬£¬£¬linux¶ÔȨÏÞ½øÐÐÁËϸ·Ö£¬£¬£¬·ÖΪ¶àÖÖ·ÖÆçµÄȨÏÞ£¬£¬£¬³ÆÖ®Îªcapability¡£capabilityÄܹ»×÷ÓÃÔÚ¹ý³ÌÉÏ£¬£¬£¬Ò²Äܹ»×÷ÓÃÔÚ·¨Ê½ÎļþÉÏ¡£Ä¿Ç°£¬£¬£¬LinuxϵͳÉÏʵÏÖÁË37ÖÖcapability¡£
ÿ¸ö¹ý³Ì¶¼ÓÐÎå¸öcapability¼¯ÖУº£º£ºPermitted£¬£¬£¬Inheritable£¬£¬£¬Effective£¬£¬£¬Ambient£¬£¬£¬Bounding¡£ÎļþµÄcapability±£ÁôÔÚÎļþµÄÀ©´óÊôÐÔsecurity.capabilityÖС£ÎļþÓÐÈý¸öcapabilitiy¼¯ÖУº£º£ºPermitted£¬£¬£¬Inheritable£¬£¬£¬Effective¡£ÎļþµÄcapabilityºÍ¹ý³ÌµÄcapabilityһ·À´¾ö¶¨ÔÚÖ´ÐÐexecveºó£¬£¬£¬¹ý³ÌµÄcapability¡£
·ì϶µÀÀí
£¨1£©OverlayFS¹ÒÔØ
ͨ³£Çé¿öÏ£¬£¬£¬¹ÒÔØÎļþϵͳÊDZØÒªÌØÈ¨µÄ£¬£¬£¬µ«ÊÇÔÚUbuntuϵͳÖУ¬£¬£¬Í¨³£Óû§±ãÄܹ»¹ÒÔØOverlayFS¡£ÒÔ5.4.0°æ±¾ÄÚºËÖ÷Ïß´úÂëΪÀý£¬£¬£¬ovl_fs_type½á¹¹Ìå½ç˵ÈçÏÂͼËùʾ£º£º£º

ÒÔUbuntu20.04µÄÄں˲¹¶¡linux_5.4.0-26.30.diffΪÀý£¬£¬£¬²¹¶¡ÈçÏÂͼËùʾ£º£º£º

Ôö³¤ÁËfs_flagsÊý¾ÝÓò£¬£¬£¬²¢ÉèÖÃΪFS_USERNS_MOUNT£¬£¬£¬°µÊ¾½«ÔÊÐíÒ»¸öͨ³£Óû§ÔÚµÍȨÏÞÓû§¶¨Ãû¿Õ¼äÖÐmoutÒ»¸öoverlayfsÎļþϵͳ¡£µ±È¥mountÒ»¸öoverlayfsÎļþϵͳʱ£¬£¬£¬Å²ÓÃõè¾¶ÈçÏÂͼËùʾ£º£º£º

»áŲÓõ½do_new_mount()º¯Êý£¬£¬£¬¸Ãº¯ÊýÊÇ´´½¨Ò»¸öеÄmount£¬£¬£¬²¢½«Æä·ÅÈënamespaceÊ÷ÖУ¬£¬£¬ÊµÏÖ´úÂëÈçÏÂͼËùʾ£º£º£º

ÐÐ2792£¬£¬£¬»ñȡҪ¹ÒÔØµÄÎļþϵͳÀàÐÍ£¬£¬£¬ÕâÀïÊÇoverlay¡£¶øºó¾ÍÊǽøÐÐcapabilitiyУÑ飬£¬£¬ÈçÏÂͼËùʾ£º£º£º

ÓÉÓÚfs_flags±»ÉèÖÃΪFS_USERNS_MOUNT£¬£¬£¬½øÈëns_capable()º¯Êý£¬£¬£¬×îºóͨ¹ý¼ìÑéºó£¬£¬£¬ÈçÏÂͼËùʾ£º£º£º

²¢ÇÒÉèÖÃcurrent->flagsΪPF_SUPERPRIV£¬£¬£¬¼´ÔÚµ±Ç°¹ý³ÌÉÏÉèÖó¬µÈȨÏÞ£¬£¬£¬²¢·µ»Øture¡£ËùÒÔͨ¹ý¹ÒÔØoverlayÎļþϵͳ£¬£¬£¬µ±Ç°¹ý³Ì¾ß±¸Á˳¬µÈȨÏÞ¡£
£¨2£©È¨ÏÞÌÓÒÝ
¸Ã·ì϶ÊÇÔÚsetxattr()º¯ÊýÖвúÉúµÄ£¬£¬£¬µ±¶ÔÎļþÀ©´óÊôÐÔµÄcapabilitiy½øÐÐÉèÖÃʱ£¬£¬£¬È¨ÏÞУÑé²»³¹µ×¡£ÏÂÃæÊÇ"SSD Secure Disclosure"Åû¶µÄExpÖ´ÐÐÇé¿ö£¬£¬£¬Å²ÓÃõè¾¶ÈçÏÂͼËùʾ£º£º£º

ÕâÀïpathnameΪ¡°./ovlcap/merge/magic¡±£¬£¬£¬ÐÐ468£¬£¬£¬Å²ÓÃcap_convert_nscap()º¯Êý£¬£¬£¬½«ÒªÉèÖõÄcapת»»µ½nscapÖУ¬£¬£¬ÈçÏÂͼËùʾ£º£º£º

½øÈëcap_convert_nscap()º¯Êý£¬£¬£¬½øÐÐÓйؼì²âºó£¬£¬£¬ÈôÊÇÊÇcapabilitiy°æ±¾2£¬£¬£¬ÔòÖ±½ÓŲÓÃns_capable()½øÐмìÑ飬£¬£¬Æ¾¾Ý×¢½â¿ÉÖª£¬£¬£¬ÈôÊÇuserÓ㬵ÈȨÏÞ£¬£¬£¬Ö±½ÓдÈë²¢·µ»Ø¡£

ºÁÎÞÒÉÄÑ£¬£¬£¬ÕâÀï×¢¶¨ÊǼìÑéͨ¹ýµÄ¡£´òÓ¡¹Ø¼üÄڴ棬£¬£¬ÈçÏÂͼËùʾ£º£º£º

¼Ä·ÅÆ÷raxΪ0x1£¬£¬£¬°µÊ¾·µ»Øture¡£ÓÉÓÚµ±Ç°½Ó¼ûµÄinodeÊôÓÚoverlayÎļþϵͳµÄ¡£´Ócap_convert_nscap()º¯ÊýÕýÈ··µ»Øºó£¬£¬£¬Ëæ¼´½øÈëvfs_setxattr()º¯Êý£¬£¬£¬ÕâÊǵÚÒ»´Î½øÈë¡£½ÓÏÂÀ´¾ÍÊÇ·Ö·¢µ½overlayÎļþϵͳ¶ÔÓ¦µÄovl_xattr_set()º¯ÊýÖУ¬£¬£¬Å²ÓÃõè¾¶ÈçÏÂͼËùʾ£º£º£º

¿´ovl_xattr_set()º¯ÊýµÄ²¿ÃÅʵÏÖ´úÂ룬£¬£¬»ñÈ¡upperdentryºÍrealdentry£¬£¬£¬ÈçÏÂͼËùʾ£º£º£º

»ñÈ¡ºó£¬£¬£¬´òÓ¡upperdentryºÍrealdentryÄڴ棬£¬£¬ÈçÏÂͼËùʾ£º£º£º

ƾ¾ÝoverlayÎļþϵͳ¸öÐÔ£¬£¬£¬ÕâÀïµÄupperdentryºÍrealdentryÓ¦¸ÃÊÇ¡°./ovlcap/upper¡±Ä¿Â¼ÏµÄmagicµÄĿ¼Ï£¬£¬´òÓ¡ÄÚ´æ¿ÉÖª£¬£¬£¬ÈçÏÂͼËùʾ£º£º£º

È·¶¨ÕæÊµµÄdentryºó£¬£¬£¬µÚ¶þ´ÎŲÓÃvfs_setxattr()º¯Êý£¬£¬£¬ÈçÏÂͼËùʾ£º£º£º

´ËʱµÄdentryÊÇÊôÓÚext3ÎļþϵͳµÄ£¬£¬£¬´òÓ¡ÄÚ´æ¿ÉÖª£¬£¬£¬ÈçÏÂͼËùʾ£º£º£º

µ½´Ë¿ÉÖª£¬£¬£¬ÏÖʵÉÏÊǶÔext3Îļþϵͳϵġ°./ovlcap/upper/magic¡±½øÐÐÉèÖÃcap¡£È¨ÏÞÌÓÒݹý³ÌÈçÏÂͼËùʾ£º£º£º

·ì϶ÀûÓ÷ÖÎö
"SSD Secure Disclosure"¹Ù·½ÒѾÅû¶ÁËÓйØExp£¬£¬£¬¾ßÌå·ÖÎöÈçÏ£º£º£º

ÕâÀï½ç˵ºóÃæ¹ÒÔØoverlayÎļþϵͳµÄÎļþ¼ÐÃû³Æ:

²¢×Ô½ç˵xmkdirº¯Êý´´½¨ÕâЩÎļþ¼Ð:

¶øºó»ñÈ¡µ±Ç°Óû§µÄuidºÍgid£º£º£º

´´½¨ÐµÄuser namespace£¬£¬£¬ÓÉÓÚoverlayfs mount±ØÒªCAP_SYS_MOUNTÄÜÁ¦£¬£¬£¬Òò¶ø±ØÒªÐ½¨Ò»¸öNEWUSERµÄnamespace£¬£¬£¬ÕâÑù¾ÍÓµÓÐCAP_SYS_MOUNT£¬£¬£¬

CLONE_NEWNSºÍCLONE_NEWUSER½ç˵£º£º£º

Óõ±Ç°Óû§µÄuidºÍgidµÈ¸Äд/proc/selfϵĶÔÓ¦Îļþ£¬£¬£¬²¢ÇÒÓøÃȨÏÞϵÄnamespace¹ÒÔØoverlayfs£¬£¬£¬Ç°Ãæ¼ò½é˵ÁË£¬£¬£¬ÓÉÓÚubuntuµÄ²¹¶¡´æÔÚ£¬£¬£¬¸Ã²Ù×÷ÊǺϷ¨µÄ¡£

¶ÔӦĿ¼ÏÂÄܹ»¿´µ½ÎÒÃÇÅú¸ÄÁ˵ÄÎļþ£¬£¬£¬Í¨¹ý/proc/self/exeÄܹ»ÕÒµ½µ±Ç°¹ý³ÌµÄ¶þ½øÖÆÊµÌ壨Îļþ£©£º£º£º

³ÖÐø»Øµ½expÖУ¬£¬£¬ÏÂÃæ»ú¹ØÁËÒ»¸öcap£¬£¬£¬¸Äcap½ç˵µÄpermittedΪ0xffffffff£¬£¬£¬²¢ÇÒ¿ªÆôEffective£¬£¬£¬¶øºó½«/proc/selfϵÄÎļþ¿½±´µ½mergeÎļþ¼ÐÏ£¬£¬£¬Æ¾¾ÝoverlayÎļþϵͳ¸öÐÔ£¬£¬£¬Õâ¸ö¿½±´¹ý³ÌÏÖʵÊÇ´´½¨./ovlcap/upper/magicÎļþ£¬£¬£¬×îºóŲÓÃsetxattr()º¯Êý£¬£¬£¬½«capÉèÖõ½./ovlcap/merge/magicÉÏÃæ¡£

ƾ¾ÝǰÎÄ·ì϶µÀÀí½éÉÜ£¬£¬£¬È¨ÏÞÌÓÒݺ󣬣¬£¬´ËʱÊôÓÚext3ÎļþϵͳµÄ./ovlcap/upper/magicÎļþµÄcapabilitiyΪall+ep£¬£¬£¬±ãÄܹ»ÀûÓÃcapabilitiy½øÐÐȨÏÞÌáÉý£¬£¬£¬½Ó×ÅÆô¶¯./ovlcap/upper/magic¹ý³Ì£¬£¬£¬¸Ã¹ý³ÌµÄcapabilitiyÒѾ߱¸all+ep£¬£¬£¬¶øºó½øÐÐsetuid(0)ºÍsetgid(0)ÌáȨ²Ù×÷£¬£¬£¬ÕâÊDZ»ÔÊÐíµÄ¡£

²¹¶¡¸ú×Ù
·ì϶³ÉÒòÔÚÉÏÃæÒѾ½éÉÜÁË£¬£¬£¬ÕâÀïµÄ²¹¶¡Ò²ºÜ³¹µ×£¬£¬£¬½«cap_convert_nscap·ÅÈëÁËvfs_setxattrÖУ¬£¬£¬¼´Ã¿´Î½øÈëvfs_setxattr()º¯Êýʱ£¬£¬£¬¶¼ÏȽøÐÐȨÏÞУÑ飬£¬£¬ÅжÏcapabilitiyºÍ¶¨Ãû¿Õ¼äµÄȨÏÞÊÇ·ñÆ¥Åä¡£

²Î¿¼Á´½Ó£º£º£º
[1] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-3493
[2] https://access.redhat.com/security/cve/cve-2021-3493
[3] https://ubuntu.com/security/CVE-2021-3493
[4] https://github.com/briskets/CVE-2021-3493
[5] https://cve.report/CVE-2021-3493.pdf
[6] https://blog.csdn.net/qq_15770331/article/details/96699386
[7] https://lwn.net/Articles/671641/
[8] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1793458/comments/4
[9] https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/xenial/commit/?id=98a3740920f8f3362c1ac50598af2dc632f5051a
OG¶«·½Ìü»ý¼«·ÀÓù³¢ÊÔÊÒ£¨ADLab£©
ADLab³ÉÁ¢ÓÚ1999Ä꣬£¬£¬ÊÇÖйú°²È«ÐÐÒµ×îÔç³ÉÁ¢µÄ¹¥·À¼¼Êõ×êÑг¢ÊÔÊÒÖ®Ò»£¬£¬£¬Î¢ÈíMAPP´òËãÖ÷Ìâ³ÉÔ±£¬£¬£¬¡°ºÚȸ¹¥»÷¡±¸ÅÄîÊ×ÍÆÕß¡£½ØÖ¹Ä¿Ç°£¬£¬£¬ADLabÒÑͨ¹ýCVEÀۼư䲼°²È«·ì϶½ü1100¸ö£¬£¬£¬Í¨¹ý CNVD/CNNVDÀۼư䲼°²È«·ì϶1000Óà¸ö£¬£¬£¬³ÖÐøÎ¬³Ö¹ú¼ÊÍøÂ簲ȫÁìÓòÒ»Á÷Ë®×¼¡£³¢ÊÔÊÒ×êÑз½Ïòº¸Ç²Ù×÷ϵͳÓëÀûÓÃϵͳ°²È«×êÑС¢ÖÇÄÜÖն˰²È«×êÑС¢ÎïÁªÍøÖÇÄÜÉ豸°²È«×êÑС¢Web°²È«×êÑС¢¹¤¿ØÏµÍ³°²È«×êÑС¢Ôư²È«×êÑС£×êÑгɾÍÀûÓÃÓÚ²úÆ·Ö÷Ìâ¼¼Êõ×êÑС¢¹ú¶ÈÖØµã¿Æ¼¼ÏîÄ¿¹¥¹Ø¡¢×¨Òµ°²È«·þÎñµÈ¡£



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