PATH 里的波浪号不一定等于你的 HOME
来源:disconnect3d.pl — 2026-10-12
📋 概述
作者在用沙箱工具 nono 时收到一条可疑警告:PATH 中有可写条目 ~/.local/bin。原因是 shell 里写成 export PATH="$PATH:~/.local/bin/" 时,引号内的波浪号不会被展开,实际被塞进 PATH 的是相对路径 ./~/.local/bin。文中演示了在该目录放一个可执行文件后,PATH="~/.local/bin/" 直接把它跑起来,等于给本地攻击者留了劫持位;正确写法是改用 $HOME。
🔑 核心要点
- 引号内的 ~ 不做波浪号展开
- 实际写入 PATH 的是相对路径 ./~/.local/bin
- 演示构造 ./~/.local/bin/kek,靠 PATH 命中即执行
- 修法:改成 $HOME/.local/bin
- 未加引号的写法能工作但很脆弱,空格就会失效
💡 金句
So instead of having /home/<user>/.local/bin/ added to PATH we end up with ./~/.local/bin/ added to PATH.
👍 0
👎 0
← 返回 Hacker News 首页