Linux 中的 sh 脚本漏洞
sh script vulnerability in Linux
我的计算机安全任务分配给了我 class。我们得到了一段代码来分析和确定它可能存在的漏洞。
#!/bin/sh
# shell script to create a copy of the shadow file to the /tmp directory
echo > /tmp/shadowcopy
# allow only root access
chmod 600 /tmp/shadowcopy
# append the original file to the copy
cat /etc/shadow >> /tmp/shadowcopy
# Hint: the access permissions of a file in linux are verified when the
# file is opened. the process will keep the original permissions as long
# as it keeps the file open, even if permissions change.
一些 class 伙伴和我确定,如果两个单独的进程尝试打开 /tmp/shadowcopy.
,此脚本可能会遇到竞争条件漏洞
我们还认为,如果 /tmp/shadowcopy 在追加开始之前被更改,则可能存在命令注入漏洞。
我们的假设是错误的,还是此代码存在我们可能没有考虑到的其他漏洞?
确实存在竞争条件,因为对手可能会在创建它的脚本和设置其权限的脚本之间访问 /tmp/shadowcopy
。但是,如果脚本确实创建了文件,则其初始权限将由有效的 umask 管理。如果这允许创建非用户可写的文件,那就太糟糕了,但我不认为这是脚本本身的漏洞。尽管如此,该脚本还是可以解决这个问题。
如果 是 有效的 umask 导致 /tmp/shadowcopy
最初可被其他人写入的情况,那么对手可能会在之前向其中注入伪造的凭据权限已更改。
还有一个竞争条件,如果脚本在两个单独的进程中同时 运行,那么 /tmp/shadowcopy
可能最终包含两个副本的任意混合 /etc/shadow
。这本身并不是 安全性 漏洞,但它可以与更大脚本的其他行为结合起来创建一个。
不过,我认为您已经错过了上述代码中最大的风险。考虑到因为它读取 /etc/shadow
,脚本必须以 root 权限执行才能执行其预期的工作。现在,考虑谁通常可以写成/tmp
。现在,想一想这些人中的任何一个通过在脚本 运行s.
之前创建 /tmp/shadowcopy
可以完成什么
我的计算机安全任务分配给了我 class。我们得到了一段代码来分析和确定它可能存在的漏洞。
#!/bin/sh
# shell script to create a copy of the shadow file to the /tmp directory
echo > /tmp/shadowcopy
# allow only root access
chmod 600 /tmp/shadowcopy
# append the original file to the copy
cat /etc/shadow >> /tmp/shadowcopy
# Hint: the access permissions of a file in linux are verified when the
# file is opened. the process will keep the original permissions as long
# as it keeps the file open, even if permissions change.
一些 class 伙伴和我确定,如果两个单独的进程尝试打开 /tmp/shadowcopy.
,此脚本可能会遇到竞争条件漏洞我们还认为,如果 /tmp/shadowcopy 在追加开始之前被更改,则可能存在命令注入漏洞。
我们的假设是错误的,还是此代码存在我们可能没有考虑到的其他漏洞?
确实存在竞争条件,因为对手可能会在创建它的脚本和设置其权限的脚本之间访问 /tmp/shadowcopy
。但是,如果脚本确实创建了文件,则其初始权限将由有效的 umask 管理。如果这允许创建非用户可写的文件,那就太糟糕了,但我不认为这是脚本本身的漏洞。尽管如此,该脚本还是可以解决这个问题。
如果 是 有效的 umask 导致 /tmp/shadowcopy
最初可被其他人写入的情况,那么对手可能会在之前向其中注入伪造的凭据权限已更改。
还有一个竞争条件,如果脚本在两个单独的进程中同时 运行,那么 /tmp/shadowcopy
可能最终包含两个副本的任意混合 /etc/shadow
。这本身并不是 安全性 漏洞,但它可以与更大脚本的其他行为结合起来创建一个。
不过,我认为您已经错过了上述代码中最大的风险。考虑到因为它读取 /etc/shadow
,脚本必须以 root 权限执行才能执行其预期的工作。现在,考虑谁通常可以写成/tmp
。现在,想一想这些人中的任何一个通过在脚本 运行s.
/tmp/shadowcopy
可以完成什么