《08-ELF分页签名验证技术1.pdf》由会员分享,可在线阅读,更多相关《08-ELF分页签名验证技术1.pdf(16页珍藏版)》请在三个皮匠报告上搜索。
1、12025 年 3 月ELF分离式签名分页验证技术2中 国操 作系 统 领创 者给 世界 更好 的 选择目录 技术背景技术背景 技术现状技术现状 解决方案解决方案 参考材料参考材料3中 国操 作系 统 领创 者给 世界 更好 的 选择技术背景 ELF签名现状 插入签名数据破坏插入签名数据破坏ELFELF文件结构文件结构可能引发开源协议的法律纠纷可能引发开源协议的法律纠纷 可能导致原有的安全保护机制失效可能导致原有的安全保护机制失效 4中 国操 作系 统 领创 者给 世界 更好 的 选择技术背景 ELFELF签名现状签名现状对不同大小文件计算sha256时间统计:签名验证时间开销和文件大小成正比
2、 文件校验后数据完整性不受保护,即数据换出时可能被篡改 5中 国操 作系 统 领创 者给 世界 更好 的 选择背景 对所有代码段数据计算摘要验证签名后,进程映射页不受管控对不同大小文件计算sha256时间统计:风险点/缺点:1.验证时间随文件大小大致呈正比例增长,大文件对用户体验差2.ELF 验证后二进制加载内容存在被篡改的可能性 3.每次mmap映射都会重复验证导致资源浪费,可能存在二进制文件数据仍在page cahe6中 国操 作系 统 领创 者给 世界 更好 的 选择技术现状微软PE Authenticode签名uos目前签名类似Authenticode,但Authenticode签名可
3、支持分离式管理,可以单独存放到被称为Catalog-signed 的文件。这些文件或位于C:windownssystem32catroot 路径下,以.cat后缀名结尾。Windows OS通过数据库catdb管理这些文件,catdb或位于C:windownssystem32catroot2.7中 国操 作系 统 领创 者给 世界 更好 的 选择技术现状苹果Mach-O 的code sign苹果iOS 的二进制格式是Mach-O,由三个部分组成:Header,Load Commands,Data8中 国操 作系 统 领创 者给 世界 更好 的 选择技术现状苹果Mach-O 的code sign
4、Header 包含文件魔术字(用于识别Mach-O格式文件),可执行文件类型,CPU架构,load command个数等。LC_CODE_SIGNATURE 包含Mach-O 文件代码签名数据,它只存储指向signature blob的偏移位置,signature blob一般位于文件尾部。9中 国操 作系 统 领创 者给 世界 更好 的 选择技术现状苹果Mach-O 的code signCode Signature以一个名为 super blob的结构开始,super blob后面跟着其他blob。在所有blob中,code directory blob 包含了代码页hash列表,这些has
5、h将参与签名计算。10中 国操 作系 统 领创 者给 世界 更好 的 选择解决方案问题问题解决方案解决方案措施措施ELF文件内容被破坏分离式签名ELF 签名后文件以build-id命名。ELF 校验签名时通过自身build-id在签名文件安装目录查找签名文件并读取签名数据进行校验。GPL协议冲突问题ELF原有安全机制失效大文件校验等待时间长分页验证签名数据为ELF加载到内存页的散列表,对散列表进行签名。签名数据在内存映射时候加载散列表,在page fault时校验页完整性。换出页可能被篡改11中 国操 作系 统 领创 者给 世界 更好 的 选择解决方案 生成以build-id命名的签名文件 签
6、名文件被压缩为tarball文件归档到应用包 适配包管理工具来实现签名文件的安装和卸载以Debian应用包为例,可以通过适配dpkg hook机制在包安装和卸载动作发生时触发签名文件的安装和清理。ELF签名管理12中 国操 作系 统 领创 者给 世界 更好 的 选择解决方案 签名文件头用来查找和定位数据块位置和大小 签名数据块以PKCS#7 signedData形式保存签名数据。加载页散列表保存各个待加载页散列值数据。ELF签名文件结构13中 国操 作系 统 领创 者给 世界