使用 cat 从不受信任的文件中读取值是否有任何风险

Joh*_*son 2 security linux exploit vulnerabilities

我需要通过读取用户上传的文本文件来获取变量值。

我正在从一个系统的脚本做:

resourceVersion=`cat userFile.txt`
mkdir $resourceVersion
...
Run Code Online (Sandbox Code Playgroud)

当我以后将该$resourceVersion变量用作其他命令的参数时,此文件的内容是否会以任何方式损害系统?

Mat*_*Ife 8

编写安全代码的规则 1:您必须清理您的用户输入

至少传递--给您 mkdir 子句以防止操纵开关。

目前,它可用于在具有任意权限的任意位置创建目录。

就其本身而言,它可能不会导致违规,但您可以传递以下内容:

-m 0777 /var/lib/mysql/newdb
Run Code Online (Sandbox Code Playgroud)

创建一个任何人都可以写入的新 mysql 数据库。

这里还有一个拒绝服务攻击,因为每个空间都被视为一个新目录。因此您可以传递 32760 个新路径进行处理。

最后,一些伪文件系统以您可能意想不到的方式对新目录敏感。例如在 Fedora 上,像这样的目录/sys/fs/cgroup/newcgroup可以创建一个新的 cgroup。此外,在 LIO 子系统中,写入目录/sys/kernel/config/target可用于通过 iSCSI 网络导出块设备(然后可以复制设备的全部内容)。

所以,不,不要这样做。