Nat*_*ams 2 security linux shell
这是一个我似乎找不到好的答案的问题。
在 Windows/DOS 下,我们被“教导”可以从当前目录启动程序而无需为路径添加前缀。
但是,Linux 的默认行为是您必须为当前目录中的应用程序/脚本添加 ./ 前缀。
人们说允许程序/脚本在没有前缀的情况下执行是一种糟糕的安全做法。有很多“糟糕的安全做法”,但这对我来说没有意义。例如,我不会进入 /some/unfamiliar/directory 并开始执行 ls 之类的程序。我会 cd (进入我的主目录),然后输入 ls -la /some/unfamiliar/directory。当然,在糟糕的一天我会。
如果有人将一个名为 ls 的程序放在一个目录中,并将一个坏的 sysadmin cds 放入该目录并以 root 身份运行 ls 并且 ls 添加一个后门用户和其他邪恶的东西,我可以看到“威胁”。美好的。但是,通常在这种情况下,用户会抱怨“哦 ls 不起作用,您可以检查一下吗?”。我会 sudo su "user" 并尝试 ls 作为他。
除非我完全遗漏了什么,否则添加“。” 你的PATH真的有那么糟糕吗?
编辑:
到目前为止,所有答案都可以指出安全风险 - 但是 - 每个人都错过了 Windows 的论据。在 Windows 下,当前目录不在您的路径中,因此无法禁用仅运行 program.exe afaik 的功能。但是,命令提示符确实接受在命令前面加上 .\ 的能力(.\ 似乎可以工作,但是,您应该使用 \,否则最终可能会出现某种转义序列)。在 Windows 下,我们应该总是在命令前面加上前缀吗?另外,我们是否应该联系微软并告诉他们他们植入这种预期行为是不好的?
我的背景是 Windows,所以我倾向于期望当前目录中的程序能够运行,即使我知道这不是它在 Unix 世界中的工作方式。这就是我提出这个问题的原因。
扩展我关于“不良安全实践”的意思(以及为什么它们用引号引起来)是因为我们可以引用人们应该做的数百万甚至数十亿的安全实践......但我们没有,如果我们这样做了,一个人肯定会发疯。我们是否应该减轻可能干扰用户体验的所有安全风险?我说不,但那是因为我相信安全性应该对用户透明,但我喜欢 haus 在他的回答中的第一句话“与其他任何事情一样,它是一种心态。”。我认为我们应该就此搁笔。
小智 7
与其他任何事情一样,它是一种心态。
通过将当前目录作为路径的一部分,您确实增加了风险。仅仅因为一个木马程序已经被执行,并不意味着它不会做人们期望的事情。换句话说,使用您的 ls 示例,木马程序,除非它是由笨蛋设计的,否则确实会为您提供您请求的目录列表,因此除非您说文件位于那里,否则您没有理由期望出了点问题(也许它很聪明,并决定将自己从提供的目录列表中删除以进一步降低检测的机会)。
要发生这种情况,这意味着有人已经渗透到一个给定的系统,以至于它可以将文件放置到您的文件系统中。因此,您的情况已经很糟糕,但仍有使事情变得更糟的空间。
作为一般做法,我不会将当前目录放在我的 linux/unix 系统上的路径中,这不是一个很大的困难。当我编写一个我希望经常使用的程序或脚本时,我会将它放在我路径中的一个文件夹中,并限制对该文件的写入权限。
简短的回答者,将当前目录添加到您的路径是否会导致非特权用户的厄运,可能不会,但为什么要冒险呢?
对于 root,不要这样做。
| 归档时间: |
|
| 查看次数: |
3533 次 |
| 最近记录: |