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