Как утечки памяти могут вызвать утечку информации? - PullRequest
0 голосов
/ 13 мая 2018

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

Мой вопрос: как эти утечки памяти приводят к утечкам информации, таким как утечка паролей и т. Д.?по другой программе.Поэтому, если эта область памяти не была очищена, она будет содержать некоторую важную информацию, такую ​​как пароль.

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

проблема не зависит от утечек памяти и сборки мусора.

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

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

0 голосов
/ 13 мая 2018

Это правда, что память, которая использовалась программой, может по-прежнему содержать интересную информацию после ее завершения / выхода.
Это также верно для программы, которая не содержит утечек памяти.Правильно освобождая выделенную память это не очищает.

Однако весьма вероятно, что любая программа, которая не правильно освобождает выделенную память, может также не удастся безопасно удалить информацию из этой забытой / просочившейся памяти.
Обратите внимание, что «утечка» в данном случае относится кпамять, которая не была освобождена до конца программы, игнорируя тот факт, что такая память будет восстановлена ​​практически каждой современной операционной системой.Память доступна для использования другими программами, особенно программами, запускаемыми позже.
Возможны операционные системы, которые удаляют явно или освобождают от простоты память, но маловероятно, что это не относится к отдельным случаям использования, связанным с безопасностью.

Выше с«Явно удаляя», я имею в виду, что сама программа пишет несущественную информацию перед освобождением.Под «неявным удалением» я подразумеваю освобождение достаточно, удаление происходит как-то во время free().

Я использую C в качестве языка примера, тег был там, но был удален (не без оснований).

Коллекция Garabge (на языках, которые это подразумевают) ничего не меняет в этом.Сборка мусора (при освобождении от обязанности правильно освободить память) может неявно перезаписывать вновь доступную память, но не гарантирует ее;точно так же, как механизмы освобождения в языках без сборки мусора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...