¡¾Îó²îͨ¸æ¡¿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ºÅ