Если glibc
был скомпилирован с _FORTIFY_SOURCE=2
, он проверяет, находится ли используемая строка формата в сегменте кода, доступном для записи (чтобы предотвратить класс ошибок безопасности, связанных с использованием %n
для записи в контролируемые хакером области памяти),Теперь для этого открывается glibc
и читает /proc/self/maps
для выполнения проверки.
Решения:
- Компиляция
glibc
без _FORTIFY_SOURCE=2
. - Не используйте
%n
(не имеет значения, находится ли он в памяти для записи или только для чтения).