调用ProcessBuilder.command时如何减轻安全性问题?

时间:2018-09-12 13:21:26

标签: java security processbuilder

我想在我的Linux命令行上调用“ openssl”以获取一些解密信息。

使用时

Process process = new ProcessBuilder().command("openssl", "enc", ...).start();

如何确定实际的openssl命令已调用? 想象一下,一个攻击者只是简单地重命名了openssl-> openssl2并将其自己的邪恶程序添加为“ openssl”,而该程序又在后台调用了“ openssl2”,但是捕获了stdin和stdout并悄悄地将其转储到一个秘密文件中。

有什么办法可以确保调用正确的OS程序?

谢谢!

1 个答案:

答案 0 :(得分:0)

OpenSSL和JNI

这样,您将使用自己的库示例。当然,如果系统受到威胁,仍然不安全,但这给保持完整性的机会很小

如果您确实需要使用openssl功能,可以采用以下方法: 1.转到此处:https://www.openssl.org/source/ 2.编译所需的(或多个平台)openssl库。 3.使用JNI从库中调用函数。

您还可以在此处找到一些有用的信息:https://software.intel.com/en-us/blogs/2014/12/05/encryptiondecryption-invoking-openssl-through-jni-calls