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);