备注
报告人是明尼苏达大学的卢康杰教授,四大顶会发的非常多,主要学习其汇报思路以及对领域风向的把握。
一.操作系统内核(OS kernel)在计算机系统中的地位
直接与硬件(hardware)和 devices交互,是默认的可信计算根,管理系统资源与用户。
最著名的操作系统内核:Linux
内核存在大量漏洞(A hard problem) 的原因:由不安全的语言编写,模块间的关系过于复杂,编译器,供应链安全问题等。
难以解决的原因:复杂且大量的代码;由于开发者的trick而导致的许多特殊的情景;缺少对bug的详细说明;复杂的生态及其衍生物
二.介绍自己的工作《Techniques towards a secure OS kernel》
Sources of vulnerabilities
Automated detection
Secure-by-design solutions
Developing foundational techniques for security
Analysis techniques
Protection primitives(控制流完整性,权限管理permission enforcements)
Discovering detecting, and eliminating bugs and vulnerabilities
发现新类型的bug
通用的bug检测途径(静态、动态漏洞检测)
自动化补丁和提高补丁生态
Hardening software systems (defenses)
Memory safety,CFI,(re-)randomization
Improving the security design, e.g.,enforcing least privilege
Trusted computing
限制风险的产生(二、三)、自动化通用漏洞检测(四、五)、secure-by-design solutions(六)
二.Patch security
核心:开源软件的贡献者可能恶意地提交含有bug的代码(patch)。
研究方法:Linux网站上可以看到哪些patch由于use-after-free漏洞被拒绝,将目前已发现的Linux的bug作为分母,可以算出捕捉率最低情况下为多少。
发展趋势:更自动化的方法检测patch的安全性。
三.编译器安全
核心:编译器的主要任务之一是优化,在验证编译器时程序员只关注正确性。
发展趋势:将内核场景下的特性model进编译器的设计中
四.Specification Inference for Bug Detection
Function Pairing(e.g. alloc dealloc)
Disordered Error Handling
五.Kernel Fuzzing
主要是对driver(> 70%)
核心: input的来源,coverage低,有效性低
Semantic-informed driver fuzzing
六.根本方法secure-by-design solutions
更安全的语言
降低模块复杂性
总结:goal: To develop fundamental,practical,and end-to-end techniques to secure OS kernels.