У меня есть программа, которая хранит конфиденциальную информацию (например, закрытые ключи) в памяти, поскольку она использует их в течение всего жизненного цикла программы. Производственные версии этой программы устанавливают RLIMIT_CORE на 0, чтобы гарантировать, что дамп ядра, который может содержать эту конфиденциальную информацию, никогда не создается.
Однако, хотя это не упоминается в man-странице core(8)
, apport-документация по вики Ubuntu утверждает,
Обратите внимание, что даже если ulimit установлен на отключенные файлы ядра (путем выбора размер файла ядра равен нулю, используя ulimit -c 0), apport все равно будет захватывать авария.
Есть ли способ в моем процессе (т.е. не полагаться на конфигурацию внешней системы), что я могу гарантировать, что основной дамп моего процесса никогда не генерируется?
Примечание. Я знаю, что существует множество методов (например, упомянутых в комментариях ниже), где пользователь с правами root или владельца процесса может все еще обращаться к конфиденциальным данным. Здесь я стараюсь предотвратить непреднамеренное обнаружение конфиденциальных данных, сохраняя их на диске, отправляя их в систему отслеживания ошибок Ubuntu или что-то в этом роде. (Спасибо Basile Starynkevitch за это явное.)