在实用程序中
“pwfeedback”选项允许在输入密码时在每个输入的字符后显示“*”字符。 因为
问题的本质是,当输入过程中使用特殊字符^U(行清除)时,如果写入操作失败,负责清除输出“*”字符的代码会重置可用缓冲区大小上的数据,但不会将指针返回到缓冲区中当前位置的初始值。 导致利用的另一个因素是,当数据不是从终端而是通过输入流到达时,缺乏自动禁用“pwfeedback”模式(此缺陷允许为发生记录错误创造条件,例如,在具有以下功能的系统上)单向
由于攻击者可以完全控制堆栈上的数据覆盖,因此创建允许他将权限升级为 root 的漏洞并不困难。 任何用户都可以利用该问题,无论 sudo 权限或 sudoers 中的用户特定设置如何。 要阻止该问题,您应该确保 /etc/sudoers 中没有“pwfeedback”设置,并在必要时禁用它(“默认!pwfeedback”)。 要检查是否有问题,可以运行代码:
$ perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id
密码:分段错误
来源: opennet.ru