命令行注入是 MCP 服务端的典型安全风险。它发生的原因是:部分 MCP 服务器采用不安全的字符串拼接方式构建 shell 命令,未过滤用户输入中的 ;、&、反引号等特殊字符。
文章给出的示例中,服务端有一个发送桌面告警的函数,会用 notification_info 字典的 title 和 severity 拼接成 alert_title,然后通过 subprocess.call 执行 notify-send 命令(参数为 alert_title)——这一行就是漏洞触发点。攻击者可以构造含 shell 命令的 payload(如在 title 中嵌入反引号包裹的破坏性命令),当系统拼接并执行该参数时,反引号内的命令就会被 Linux 系统执行。典型危害包括注入 rm -rf / 等破坏性命令,或利用 curl/wget 窃取数据。
从可观测防御角度,应对思路是:通过 LoongCollector + eBPF 采集系统进程、网络、文件事件的运行时日志,配置敏感系统操作的监控规则与 SLS 告警,一旦检测到异常命令执行即触发告警,结合大模型评估对工具描述做事前风险识别,形成多层防护。




