恶意 seccomp 过滤器如何导致尝试使用“setuid(2)”返回 0,而不实际进行系统调用?

恶意 seccomp 过滤器如何导致尝试使用“setuid(2)”返回 0,而不实际进行系统调用?

我正在阅读我的 Debian 系统上的文档seccomp(2),并偶然发现了以下段落中的以下句子:

例如,此类恶意过滤器可能会导致尝试将setuid(2) 调用者的用户 ID 设置为非零值,而不是实际进行系统调用而返回 0。

如何seccomp滥用过滤器来实现上述目的?

如果恶意过滤器不允许setuid(2),则进程可能会收到SIGSYS信号并终止,并且系统调用将不会执行。

如果恶意过滤器允许setuid(2),则execve(2)d 程序将正确更改用户的 UID。

我缺少什么?

man seccomp

...

否则,SECCOMP_SET_MODE_FILTER 操作将失败并在 errno 中返回 EACCES。此要求确保非特权进程无法应用恶意过滤器,然后使用 调用 set-user-ID 或其他特权程序execve(2),从而可能危及该程序。 (例如,此类恶意过滤器可能会导致尝试将 setuid(2) 调用者的用户 ID 设置为非零值,而不是返回 0,而不实际进行系统调用。因此,程序可能会被欺骗以保留超级用户权限在可能影响它做危险事情的情况下,因为它实际上并没有放弃特权。)

...

相关内容