Lobsters | 📄 原文链接 | 2026-10-26 收录

wordexp(3) 很危险:加了 WRDE_NOCMD 也挡不住命令执行

来源:yossarian.net — 2026-10

📋 概述

wordexp(3) 常被推荐用来在 C 里做 ~ 展开,但它默认开启全部 shell 展开语义,包括命令替换:一行 $(cat /etc/passwd) 就能把程序变成任意命令执行。加 WRDE_NOCMD 只是权宜之计——musl 把这个调用直接委托给系统 shell,只在前面做一次粗略扫描,仍然漏掉 Bash 认为是合法命令替换的写法;macOS 的 libc 同样委托给 /usr/lib/system/wordexp-helper,据 Julian Squires 2023 年的报告存在相同绕过。

🔑 核心要点

💡 金句

Bottom line: don't use wordexp(3) on untrusted inputs, even with WRDE_NOCMD.
← 返回 Lobsters 首页