Раскрытие информации Nvidia / уязвимость памяти в Linux и общая защита памяти ОС - PullRequest
1 голос
/ 20 января 2011

Я думал, что это ожидаемое поведение?

От: http://classic.chem.msu.su/cgi-bin/ceilidh.exe/gran/gamess/forum/?C35e9ea936bHW-7675-1380-00.htm

Перефразировано: «Работая над портом Linux, мы обнаружили, что вызовы CUDA API cudaHostAlloc / cuMemHostAlloc возвращают неинициализированную закрепленную память. Эта дыра может потенциально позволить исследовать области памяти, ранее использовавшиеся другими программами и ядром Linux. всем прекратить запуск драйверов CUDA в любой многопользовательской системе. "

Насколько я понимаю, "Normal" malloc возвращает неинициализированную память, поэтому я не вижу, в чем здесь разница ...

То, как я понимаю, как работает распределение памяти, позволило бы сделать следующее:

-userA запускает программу в системе, которая обрабатывает кучу конфиденциальной информации. Когда вычисления завершены, результаты записываются на диск, процессы завершаются, и пользователь A выходит из системы.

-userB регистрируется в следующем. userB запускает программу, которая запрашивает всю доступную память в системе и записывает содержимое своей неинициализированной памяти, которая содержит некоторую конфиденциальную информацию пользователя A, которая была оставлена ​​в RAM, на диск.

Я должен что-то здесь упустить. Что это? Ноль где-нибудь памяти? Является ли ядро ​​/ закрепленная память соответствующим образом?

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Единственная часть, которая требует прав root для установки CUDA - это драйвер NVIDIA. В результате все операции, выполняемые с использованием компилятора NVIDIA и ссылки, могут выполняться с использованием обычных системных вызовов и стандартной компиляции (при условии, что у вас есть правильная информация -lol-). Если там есть какие-то дыры в безопасности, они остаются, независимо от того, изменено или нет cudaHostAlloc / cuMemHostAlloc.

Я сомневаюсь в первом ответе, увиденном в этом посте. Страница man для malloc указывает, что память не очищена. В справочной странице бесплатно не упоминается какая-либо очистка памяти. Очистка памяти, кажется, находится в ответственности кодера чувствительного раздела -lol-, что оставляет проблему неожиданного (редкого) выхода. Кроме VMS (хорошей, но не широко используемой ОС), я не думаю, что любая ОС принимает на себя затраты на производительность систематического клиринга. Мне не ясно, как система может отслеживать в куче вновь выделенной памяти то, что ранее находилось в области процесса, а что нет.

Мой вывод таков: если вам нужен строгий уровень конфиденциальности, не используйте многопользовательскую систему (или используйте VMS).

1 голос
/ 04 мая 2011

Память, возвращаемая функцией malloc (), может отличаться от нуля, но только после использования и освобождения другим кодом в том же процессе. Никогда другой процесс. Предполагается, что ОС строго обеспечивает защиту памяти между процессами даже после их выхода.

Ядро / закрепленная память уникальны тем, что, по-видимому, дают возможность драйверу режима ядра нарушать гарантии защиты процесса ОС.

Так что нет, это не ожидаемое поведение; да, это была ошибка Престижность NVIDIA за то, что он так быстро на ней действовал!

...