Использование openssl через канал безопасно? - PullRequest
0 голосов
/ 24 января 2011

Я использую openssl в оболочке для шифрования данных и хотел бы расшифровать данные позже во время выполнения в программе ObjC / C / C ++.Поскольку я не мог заставить его работать с использованием библиотеки openssl, я вызываю openssl из программы «на консоли» и перенаправляю дешифрованный результат обратно в строку, используя popen () и т. Д. Это прекрасно работает, но мне интересно, насколько этот подход безопасенкак его использование "внутренне".

Спасибо за комментарии или подсказки, поскольку я еще не нашел ничего полезного в Интернете ...
Matthias

1 Ответ

2 голосов
/ 24 января 2011

Вы потенциально подвергаете себя паре больше векторов атаки, кроме того, это не намного менее безопасно, чем связываться с библиотекой OpenSSL и использовать ее.

Программа и ее аргументы, которые вы запускаете из popen, могут предоставлять дополнительную информацию через argv, если вы можете указать материал ключа непосредственно в командной строке и сделать это, это будет показано через / proc / / cmdline (и ps / top / etc.). Это то, о чем я бы больше всего беспокоился, если бы мне пришлось расшифровывать с помощью другого процесса и передавать его другому приложению через канал. Будучи пользователем root, они также смогут читать / proc /

Есть несколько других вещей, таких как замена бинарного файла openssl чем-то вредоносным или внедрение этого ранее в PATH, если вы позволите popen / shell определить, какой бинарный файл openssl использовать, хотя, если они могут сделать это, они также могут получить блокировку. ключевого материала и зашифрованного текста с помощью более простых средств (или они могут заменить или LD_PRELOAD вредоносную библиотеку openssl, которая аккуратно победит также динамическое связывание с openssl). То же самое касается отслеживания на канале, они должны запускаться от имени пользователя root или вашего пользователя.

Короче говоря, если вы можете открывать без показа чего-либо чувствительного через argv, это не намного менее безопасно, чем использование библиотеки OpenSSL. Да, есть еще несколько способов завладеть вашими вещами, но для этого потребуется, чтобы они работали как пользователь, который в любом случае сможет овладеть вашими вещами (хотя, возможно, это потребует немного больше усилий) .

...