CVE-2026-4480 是一个影响特定 Samba 打印配置(使用外部打印命令)的命令注入漏洞。
该漏洞存在的原因是 Samba 将用户控制的打印任务元数据插入到 shell 命令中,而没有正确转义 shell 元字符。在特定配置下,攻击者可以提供恶意的打印任务名称,导致在服务器上执行任意命令。
该问题尤其危险,因为某些打印机共享允许访客访问,使得无需身份验证即可利用。
Samba 支持多种打印后端。一种传统选项通常称为 sysv 风格打印,在打印任务完成时执行外部命令。
管理员可以使用替换宏来配置命令,例如:
print command = /usr/local/bin/print-helper %s %J
其中:
%s → 假脱机文件的路径%J → 客户端提供的打印任务名称在修复之前,%J 值在被插入到通过系统 shell 执行的命令之前,只经过了最少的清理。
由于 shell 元字符保持不变,精心构造的任务名称可以改变预期的命令流程并执行攻击者控制的指令。
典型的攻击包含四个阶段:
如果打印命令引用了 %J,攻击者的载荷将成为 shell 命令的一部分,并以 Samba 打印进程的权限执行。
并非每个 Samba 安装都存在漏洞。
通常必须满足以下条件:
%J。使用基于 CUPS 打印的现代部署不会暴露此攻击路径,因为任务是通过 CUPS API 传递的,而不是 shell 命令。
成功利用可能使攻击者能够:
严重程度高度依赖于打印进程的权限以及周围系统的配置。
受影响的版本包括以下版本之前的版本:
使用后续版本的系统不受此问题影响。
推荐的缓解措施包括:
%J。printing = cups。防御者应调查:
smbd 意外生成 shell 解释器sh
bash
python
perl
nc
curl
wget
监控来自 Samba 服务的进程创建有助于识别利用尝试。
此仓库仅用于教育目的和经授权的安全研究。
未经所有者明确许可,请勿将此代码用于任何系统、网络或服务。未经授权访问计算机系统是非法且不道德的。
请始终在隔离的实验室环境或专门用于安全培训的平台上进行测试。