¡¾·ì϶¹«¸æ¡¿Linux CIFS±¾µØÌáȨ·ì϶
°ä²¼¹¦·ò 2026-05-29Ò»¡¢·ì϶¸ÅÊö

Linux CIFS¿Í»§¶ËÊÇLinux KernelÖÐÓÃÓÚ¹ÒÔØºÍ½Ó¼ûSMB/CIFSÍøÂçÎļþ¹²ÏíµÄÄÚºË×é¼þ£¬³£ÓÃÓÚ½Ó¼ûWindowsÎļþ¹²Ïí¡¢NAS¼°ÆóÒµÎļþ·þÎñÆ÷¡£cifs-utilsÊÇÆäÅäÌ×Óû§Ì¬¹¤¾ß¼¯£¬Ìṩmount.cifs¡¢cifs.upcallµÈ·¨Ê½£¬ÓÃÓÚ´¦ÖÃCIFS¹ÒÔØ¡¢Kerberos/SPNEGOÈÏÖ¤¼°ÓйØÃÜÔ¿ÒªÇó¡£
2026Äê5ÔÂ29ÈÕ£¬±¦ÔËÀ³¹Ù·½ÍøÕ¾°²È«Ó¦¼±ÏìÓ¦ÖÐÐÄ£¨VSRC£©¼à²âµ½Linux CIFS±¾µØÌáȨ·ì϶¡£¸Ã·ì϶ԴÓÚÄں˲àδÑéÖ¤cifs.spnego keyÃèÊöÊÇ·ñÀ´×Ô¿ÉÐÅCIFSÄں˸ߵÍÎÄ£¬µ¼Ö±¾µØµÍȨÏÞÓû§¿Éͨ¹ýrequest_keyαÔìcifs.spnegoÃèÊö£¬´¥·¢cifs.upcallÒÔrootȨÏÞÔËÐУ¬²¢ÀûÓÃÊÜ¿Øpid¡¢uid¡¢creduid¡¢upcall_targetµÈ×Ö¶ÎÇл»ÖÁ¹¥»÷Õß¶¨Ãû¿Õ¼ä£¬ÔÚȨÏÞ½µÂäǰ¼ÓÔØ¶ñÒâNSSÄ£¿é£¬ÊµÏÖroot´úÂëÖ´ÐС£³É¹¦ÀûÓúó¿ÉÆëÈ«½ÚÔìÊÜÓ°ÏìÖ÷»ú£¬Ôì³ÉϵͳÅäÖá¢ÒµÎñÊý¾ÝºÍÕ˺ÅÍ´´¦Ð¹Â¶»ò´Û¸Ä¡£
¶þ¡¢Ó°ÏìÁìÓò
Linux Kernel£ºÎ´ºÏÈë²¹¶¡3da1fdf4efbc490041eb4f836bf596201203f8f2µÄ°æ±¾
cifs-utils >= 6.14
¸Ã·ì϶ÀûÓû¹ÒÀÀµÒÔÏÂǰÌáͬʱÂú×㣺ϵͳװÖÃcifs-utils²¢±£ÁôĬÈÏcifs.spnego request-key¹æ¶¨£»CIFSÄÚºËÄ£¿é¿É¼ÓÔØ»òÒѱàÒë½øÄںˣ»ÔÊÐí·ÇÌØÈ¨Óû§´´½¨user namespaceºÍmount namespace£»SELinux¡¢AppArmorµÈ°²È«Õ½Êõδ×è¶Ï¸ÃÀûÓÃÁ´¡£²¿ÃÅ¿¯Ðаæ¿ÉÄÜͨ¹ýĬÈϰ²È«Õ½Êõ×è¶ÏPoC£¬µ«ÔÚÕ½Êõ·Å¿íºóÈÔ¿ÉÄÜÊÜÓ°Ïì¡£
Èý¡¢°²È«´ëÊ©
3.1 Éý¼¶°æ±¾
¹Ù·½ÒѰ䲼Äں˲ཨ¸´²¹¶¡£¬ÒÔ½¨¸´¸Ã·ì϶¡£¡£
½¨¸´ÌύΪ3da1fdf4efbc£¨¡°smb: client: reject userspace cifs.spnego descriptions¡±£©¡£½¨ÒéÓû§¾¡¿ìÉý¼¶ÖÁ¿¯Ðа泧Ḛ́䲼µÄ°²È«Äں˰汾£¬»ò¸üÐÂÖÁÒѺÏÈë¸Ã²¹¶¡µÄLinux Kernel°æ±¾¡£¸Ã²¹¶¡ÔÚÄں˲àΪcifs.spnego keyÀàÐÍÔö³¤ÃèÊöÑéÖ¤Âß¼£¬½öÔÊÐíCIFSʹÓÃspnego_credÌáÒéµÄºÏ·¨ÃèÊöͨ¹ýУÑ飬´Ó¶ø×è¶Ïͨ³£Óû§Î±Ôìcifs.spnego upcall²¢´¥·¢rootȨÏÞcifs.upcallµÄÀûÓÃõè¾¶£¬Í¬Ê±£¬½¨Òé³ÖÐø¹Ø×¢cifs-utils¹Ù·½¼°¸÷Linux¿¯Ðа氲ȫ²¼¸æ£¬ÊµÊ±¸üÐÂcifs-utilsÈí¼þ°ü¡£
ÏÂÔØÁ´½Ó£º
https://github.com/torvalds/linux/commit/3da1fdf4efbc490041eb4f836bf596201203f8f2/
3.2 һʱ´ëÊ©
ÈçÒµÎñ²»±ØÒªSMB/CIFS¹ÒÔØ£¬²»ÈÝCIFSÄÚºËÄ£¿é¼ÓÔØ£¬»òÐ¶ÔØcifs-utils¡£
Èç²»±ØÒªKerberos CIFSÈÏÖ¤£¬É¾³ý»ò¸²¸ÇĬÈÏcifs.spnego request-key¹æ¶¨£¬ÀýÈ磺
cat >/etc/request-key.d/cifs.spnego.conf <<'EOF'
create cifs.spnego * * /usr/sbin/keyctl negate %k 30 %S
EOF
½ûÓ÷ÇÌØÈ¨Óû§¶¨Ãû¿Õ¼ä£¬½µµÍ±¾µØµÍȨÏÞÓû§»ú¹Ø¸ôÀ붨Ãû¿Õ¼ä²¢ÓÕµ¼root¸¨Öú·¨Ê½Çл»µÄ·çÏÕ¡£
ά³ÖSELinux¡¢AppArmorµÈÇ¿Ôì½Ó¼û½ÚÔìÕ½Êõ¿ªÆô£¬Ô¤·À·Å¿íÓйØuser namespace¡¢mount namespace¼°NSSÄ£¿é¼ÓÔØÏÞ¶È¡£
¼ÓÇ¿request-key»Øµ÷Á´Â·°²È«Ð£Ñ飬Ԥ·ÀÓû§Ì¬helperÐÅÀµÎ´¾ÑéÖ¤µÄpid¡¢uid¡¢creduid¡¢upcall_targetµÈ×ֶΡ£
¶Ôcifs.upcall¡¢request-key¡¢keyctl¡¢namespace´´½¨ÐÐΪ½øÐÐÉó¼ÆºÍ¸æ¾¯£¬³Áµã¹Ø×¢µÍȨÏÞÓû§Òì³£´¥·¢cifs.spnego upcallµÄÐÐΪ¡£
Ô¤·ÀÔÚ¸ßȨÏÞ¸¨Öú·¨Ê½ÖлùÓÚ¹¥»÷Õ߿ɿض¨Ãû¿Õ¼äÖ´ÐÐNSS½âÎö¡¢¶¯Ì¬¿â¼ÓÔØµÈÃô¸Ð²Ù×÷£¬Ô¤·ÀÔÚȨÏÞ½µÂäǰ¼ÓÔØ²»³ÉÐÅ´úÂë¡£
3.3 ͨÓý¨Òé
¶¨ÆÚ¸üÐÂϵͳ²¹¶¡£¬Ï÷¼õϵͳ·ì϶£¬ÌáÉý·þÎñÆ÷µÄ°²È«ÐÔ¡£
¼ÓǿϵͳºÍÍøÂçµÄ½Ó¼û½ÚÔ죬Åú¸Ä·À»ðǽսÊõ£¬¹Ø¹Ø·Ç±ØÒªµÄÀûÓö˿ڻò·þÎñ£¬Ï÷¼õ½«Î£ÏÕ·þÎñ£¨ÈçSSH¡¢RDPµÈ£©Â¶³öµ½¹«Íø£¬Ï÷¼õ¹¥»÷Ãæ¡£
ʹÓÃÆóÒµ¼¶°²È«²úÆ·£¬ÌáÉýÆóÒµµÄÍøÂ簲ȫ»úÄÜ¡£
¼ÓǿϵͳÓû§ºÍȨÏÞÖÎÀí£¬ÆôÓöà³É·ÖÈÏÖ¤»úÔìºÍ×îÓ×ȨÏÞ×¼Ôò£¬Óû§ºÍÈí¼þȨÏÞӦά³ÖÔÚ×îµÍÏÞ¶È¡£
ÆôÓÃÇ¿ÃÜÂëÕ½Êõ²¢ÉèÖÃΪ¶¨ÆÚÅú¸Ä¡£
3.4 ²Î¿¼Á´½Ó
https://heyitsas.im/posts/cifswitch/
https://seclists.org/oss-sec/2026/q2/717


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