Как уменьшить проблему безопасности при вызове ProcessBuilder.command? - PullRequest
0 голосов
/ 12 сентября 2018

Я хочу вызвать "openssl" в моей командной строке для некоторых вещей расшифровки.

При использовании

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

как я могу быть уверен, что настоящая команда openssl вызвана? Представьте себе злоумышленника, который просто переименовывает openssl -> openssl2 и добавляет свою собственную злую программу как «openssl», которая, в свою очередь, вызывает «openssl2» в фоновом режиме, но захватывает stdin и stdout и тихо сбрасывает их в секретный файл.

Можно ли быть уверенным, что правильная программа для ОС называется?

Спасибо всем!

1 Ответ

0 голосов
/ 12 сентября 2018

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

...