应该在 seteuid/setegid 之前或之后调用 syslog 的 openlog()

Should syslog's openlog() be called before or after seteuid/setegid

我的代码在更改程序(守护程序)的有效 uid/gid 之前调用了一次 openlog()。从安全的角度或可预测性的角度来看,在设置有效 uid/gid 之后调用 openlog() 会更好吗?

我猜想在大多数平台上 openlog() 会为 syslogd 打开一个 Unix 套接字?对此的权限是否过于严格,不允许系统用户打开套接字。

也许有人有一个特定的案例,其中 openlog 需要提升的权限,但我发现 none(并且记住 lynx,它曾经在其编译中有这个默认功能 - 直到 2009). daemons (see this 页)不必 运行 作为 root,并且经常使用该功能。

本书The Hacker's Handbook: The Strategy Behind Breaking into and Defending Networks将openlog及其相关函数引用为漏洞,

which allow an attacker to inject "counterfeit" syslog messages into a log file

鉴于此,确保您的应用程序没有弱点就显得尤为重要(因为总是有可能成为其他程序入侵的代理人)。

所以答案似乎是不,可能没有 需要 这样做,但是放弃特权 early 总是好的规则。如果您发现需要特权的特定情况,那就是重新考虑它们的使用的时候。