android-cloexec-open¶
一个常见的安全漏洞来源是在打开文件时没有使用 O_CLOEXEC
标志。如果没有该标志,打开的敏感文件将在分叉+执行到权限较低的 SELinux 域时保持打开状态,从而泄漏敏感数据。类似于打开的函数,包括 open()
、openat()
和 open64()
应该在它们的标志参数中包含 O_CLOEXEC
。
示例
open("filename", O_RDWR);
open64("filename", O_RDWR);
openat(0, "filename", O_RDWR);
// becomes
open("filename", O_RDWR | O_CLOEXEC);
open64("filename", O_RDWR | O_CLOEXEC);
openat(0, "filename", O_RDWR | O_CLOEXEC);