strace/dtrace / ltrace ... полезно для многих вещей, от обнаружения скрытых нарушений доступа к трассировке сетевых сокетов, но, возможно, он не может видеть все.
Я не смог понять, используя strace (он снова появился, когда я пытался ответить на другой вопрос сегодня), где sudo выделяет и сохраняет текстовые пароли в системной памяти. связанный вопрос связан, если это новость для вас.
ближе всего я получил, с следы, подобные этому (это может быть плохой пример, используя сложенный sudo; я пробовал несколько вещей):
$ sudo strace -ff -o mem sudo -s
Enter password...
такие строки:
mem.14471:stat("/etc/profile.d/gnome-ssh-askpass.sh", {st_mode=S_IFREG|0644, st_size=70, ...}) = 0
mem.14471:access("/etc/profile.d/gnome-ssh-askpass.sh", R_OK) = 0
mem.14471:open("/etc/profile.d/gnome-ssh-askpass.sh", O_RDONLY) = 3
mem.14471:read(3, "SSH_ASKPASS=/usr/libexec/openssh"..., 70) = 70
и я считаю, что я попытался проследить их по отдельности, даже заменив переменную env в /usr/libexec / openssh-askpass своей собственной strace, безрезультатно.
Я умею читать и декодировать straces; я могу следовать назначенной ручками, коды возврата и выделения памяти. Что я не могу найти, так это вилку, которая выделяет и сохраняет пароль sudo (до 7 раз) в памяти, пока sudo активен. Доказательство резидента пароля через Извести Экспертизы применяется к CentOS.
альтернативно, был бы лучший подход, как итерация распределения памяти процесса?