Автоматическое дешифрование и запуск зашифрованного сценария bash без сохранения расшифрованного файла в файловой системе


У меня есть скрипт оболочки, который создает конфиденциальное содержимое при запуске. Он находится на коробке, доступ к которой имеют только несколько пользователей. Однако я также добавил многоуровневую обфускацию для предотвращения несанкционированного использования, используя следующее:

  1. скрипт должен быть запущен от имени root
  2. скрипту должны быть переданы определенные аргументы командной строки для получения любого вывода
  3. скрипт был закодирован компилятором оболочки "shc " для маскировки фактов #1 и #2 от обычных пользователей (тех, кто бы не знаю, чтобы использовать трассировку или строки для просмотра фактического кода).

Чтобы затем добавить уровень реальной безопасности для защиты снова более продвинутых пользователей и системных администраторов, я также зашифровал скрипт с помощью gpg.

Мой вопрос - есть ли команда gpg (или другой метод шифрования), которую я мог бы запустить, которая запрашивает пароль для расшифровки, и расшифровывает сценарий и запускает его только в памяти (без сохранения расшифрованной версии файла в файловой системе)?

I понимая, что конфиденциальная информация может все еще существовать в незащищенной памяти во время выполнения, я рассмотрю это отдельно.

3 3

3 ответа:

Вы можете захватить выходные данные расшифровки с помощью

decrypted=$(gpg -d ...)

Затем вы можете оценить результат

eval "$decrypted"

Еще один простой вариант для сравнения с ответом чоробы:

Сохраните расшифрованный вывод в файле /dev/shm/. (Это файловая система tmpfs в оперативной памяти по умолчанию практически во всех дистрибутивах Linux.) Установите a trap для удаления файла при завершении работы скрипта.

Очень возможно, что я мог бы уточнить это, но вот еще одна идея, где вы выполняете сценарий, а не оцениваете его, как в Примере choroba. Он позволяет передавать аргументы...

bash <( gpg -d ... ) arg1 arg2

...однако он "переопределяет" интерпретатор. То есть я бы запускал свои скрипты с помощью bash -ue. Может быть или не быть проблемой в зависимости от сценариев и того, пишете ли вы их сами или нет:)