假设攻击者控制变量
如果攻击者可以选择一个
您可以假设该代码正在Linux下运行。此外,您可以假设在向用户展示文件的代码中没有引入额外的缺陷。
请注意,问题是关于代码是否可利用,而不是如何使代码更安全。有许多方法可以使代码更安全(想想
$untrusted_user_supplied_path
,下面的Perl代码是否可被利用?my $untrusted_user_supplied_path = ...
if ($untrusted_user_supplied_path =~ /\.\./) {
die("Tries to escape homedir.");
}
my $base_path = "/home/username/";
my $full_path = "${base_path}${untrusted_user_supplied_path}";
if (-e $full_path) {
open(FILE, "<", $full_path) || die("File not accessible.");
while (<FILE>) {
# present the content to the user
}
close(FILE);
}
如果攻击者可以选择一个
$untrusted_user_supplied_path
的值,以便读取不是$base_path
子目录中的文件(例如/etc/passwd
),那么该代码被定义为可利用。您可以假设该代码正在Linux下运行。此外,您可以假设在向用户展示文件的代码中没有引入额外的缺陷。
请注意,问题是关于代码是否可利用,而不是如何使代码更安全。有许多方法可以使代码更安全(想想
chroot
等),但这超出了本问题的范围。只需在您的答案中说明您是否认为该代码是可利用的。当然,请提供支持性的论据。