3

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

    main()
    {
    char *p = (char *)malloc(10000000);

    scan_for_stuff(p,10000000);
    }

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

2 ответа2

4

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

Типичные реализации malloc получают свои страницы либо с помощью sbrk либо путем отображения /dev/zero , которые дают только обнуленные страницы. Если вы получаете ненулевые страницы от типичного malloc , это будет только потому, что ваш процесс поместил в них что-то.

Если бы у одного процесса был какой-то способ получить доступ к удаленным страницам другого процесса, каждый процесс должен был бы обнулить свои страницы перед тем, как их отбрасывать, и возможны всевозможные атаки, когда вы вызываете сбой процесса, а затем пытаетесь получить его сброшенный страницы. Гораздо больше смысла просто не дать одному процессу получить ненулевые страницы, которые были в последний раз изменены другим процессом, если только этот первый процесс специально не запрашивал такое поведение.

2

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

Доступ к "теплой" памяти не кажется мне плодотворным вектором атаки. Чтобы использовать это, вам понадобятся привилегии, которые можно использовать гораздо более эффективно. Если вы решите переписать функцию malloc, вам потребуется доступ для замены библиотеки glibc.

Наконец, я хотел бы упомянуть вектор атаки при холодной загрузке. Я попробовал это недавно на своем ноутбуке с впечатляющими результатами. Вам нужен физический доступ (который не требуется в вашем случае), но на самом деле вам ничего не нужно делать на компьютере; таким образом, почти нет шансов оставить след аудита программного обеспечения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .