Linux中的脚本漏洞

时间:2015-05-13 17:26:01

标签: linux security sh

我获得了计算机安全课程的作业。我们获得了一段代码来分析和确定它可能存在的漏洞。

#!/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. 

有些同学和我确定如果两个单独的进程尝试打开/ tmp / shadowcopy,则此脚本可能会受到竞争条件漏洞的影响。

我们还认为,如果在追加开始之前更改了/ tmp / shadowcopy,则可能会出现命令注入漏洞。

我们的假设是错误的,还是这些代码遭受了我们可能没有考虑过的其他漏洞?

1 个答案:

答案 0 :(得分:2)

确实存在竞争条件,因为攻击者可能会在创建它的脚本和设置其权限的脚本之间访问/tmp/shadowcopy。但是,如果脚本确实创建了文件,则其初始权限将由有效的umask控制。如果允许创建除了用户之外可写的文件那么这很糟糕,但我不认为它是脚本本身的漏洞。不过,该剧本可以解决这个问题。

如果 ,有效的umask导致/tmp/shadowcopy最初可由其他人写入,则攻击者可能会在更改权限之前向其中注入假凭据。

还存在竞争条件,如果脚本在两个单独的进程中同时运行,则/tmp/shadowcopy最终可能包含两个/etc/shadow副本的任意混合。这本身不是安全漏洞,但它可以与更大的脚本的其他行为相结合来创建一个。

我认为你错过了上述代码中最大的风险。考虑因为它读取/etc/shadow,必须以root权限执行脚本才能执行其预期的工作。现在,考虑一下谁可以写/tmp。现在,考虑一下这些人可能通过在脚本运行之前创建/tmp/shadowcopy来完成的任务。