Я думал, что это ожидаемое поведение?
Из: http://classic.chem.msu.su/cgi-bin/ceilidh.exe/gran/gamess/forum/?C35e9ea936bHW-7675-1380-00.htm
Перефразированное резюме: «Работая над портом Linux, мы обнаружили, что вызовы API cudaHostAlloc/cuMemHostAlloc CUDA возвращают неинициализированную закрепленную память. Эта дыра потенциально может позволить исследовать области памяти, ранее используемые другими программами и ядром Linux. Мы рекомендуем всем остановиться запуск драйверов CUDA в любой многопользовательской системе».
Насколько я понимаю, "Нормальный" malloc возвращает неинициализированную память, поэтому я не вижу, в чем здесь разница...
То, как я понимаю, как работает распределение памяти, позволит сделать следующее:
-userA запускает в системе программу, которая обрабатывает кучу конфиденциальной информации. Когда вычисления завершены, результаты записываются на диск, процессы завершаются, а пользователь А выходит из системы.
-userB входит в следующий. userB запускает программу, которая запрашивает всю доступную память в системе и записывает на диск содержимое своей неинициализированной памяти, которая содержит некоторую конфиденциальную информацию пользователя A, оставшуюся в оперативной памяти.
Я должен что-то упустить здесь. Что это? Память где-то обнулена? Является ли ядро/закрепленная память особым образом?