通过命令行安全地发送密码,而不会在 ps/wmic 中暴露(Windows、Unix)

问题描述 投票:0回答:1

我们在 Windows 和 Unix 中有一个 launcher 应用程序,它可以执行(使用 exec 系统调用启动应用程序)RDP、putty、MSSQL 等应用程序。为了调用它,我们传递参数,例如用户名、密码、IP。 最近我们发现,使用wmic或ps可以查出传递给它的参数是什么,从而暴露密码等敏感信息。 有什么方法可以屏蔽这些密码或隐藏所有参数。 注意:我的启动器从其他一些服务获取参数,因此在调用应用程序后要求输入密码不是一个选项!密码必须作为参数传递给应用程序。 有什么解决办法吗?

security process exec wmic
1个回答
1
投票

这是不可能的(至少在 Linux 上不可能以可靠的方式)安全地传递程序参数。

一个可能的解决方法是传递包含该密码的文件名(或其他一些资源 - 例如对某些数据库条目的“引用”),或使用其他一些进程间通信设施(例如在 Linux 上,fifo) (7)shm_overview(7)pipe(7)unix(7)等...)来传递这些敏感信息。您还可以考虑使用环境变量(请参阅 environ(7)getenv(3))。

在 Linux 上,还可以查看 proc(5) 以了解它能够显示有关进程的内容 - 通过

/proc/1234/
查看 pid 1234 的进程。也许您需要 seccomp 设施。

在 Unix 上,请注意 setuid 机制 - 很难理解 -。小心使用它(它是大多数安全或身份验证机制的基本块,例如

sudo
login
),因为一个简单的错误可能会造成巨大的 漏洞

对于在 Unix 和 Windows 上运行的软件,我建议在某个文件中传递密码(例如在

/tmp/secretpassword
中),并通过某个程序给出该文件的名称
/tmp/secretpassword
(或 Windows 上的一些
D:\foo\bar
)参数,并确保明智地使用文件权限机制,以确保不需要该文件的人无法读取该文件。

© www.soinside.com 2019 - 2024. All rights reserved.