《测试之美_代码安全审计的底层逻辑.pdf》由会员分享,可在线阅读,更多相关《测试之美_代码安全审计的底层逻辑.pdf(25页珍藏版)》请在三个皮匠报告上搜索。
1、代码安全审计的底层逻辑分享人:冯刚个人简介 姓名:冯刚所在组织:360 质量工程部 专业领域:代码分析/软件测试目录010203背景介绍难点与壁垒方法与创新实际案例展望与总结收益代码审计新方法开源资料分享背景介绍360 DevSecOps平台深度管控代码编写环节具备版本管理、流程控制、代码审计等多种功能提供各产研环节的综合数据分析提供统一、安全、稳定的服务难题与壁垒难点:各项目审计标准不统一审计工具依赖编译等难以统一实现的环节解决方法:制定统一的审计标准使审计过程脱离编译器的限制1.制定统一的审计标准编程语言发展趋势Langauge Industry field Trend C#C+Java
2、JS PHP Python 编程语言发展趋势当今互联网的显著特征:设备智能化服务全面化多领域协作密切化有必要集结、整合各语言在各领域的安全编写规则,以实现:企业对产品代码质量进行统一管控使从业人员形成完善的安全知识体系和严谨的工作态度互联网产品各子领域的特点 资源可控 高效性、高并发性 稳定性 环境多变 用户操作灵活 健壮性 资源有限 低功耗、实时性 专用性与可移植性 桌面 服务端 嵌入式 安全规则的整合模式 安全规则的整合模式 360 安全规则集合 集结、收纳 规约、整合 GJB 8114 GJB 5369 GBT/T 39412 MISRA C/C+AutoSar C+14 C+Core
3、Guidelines SEI CERT Coding Standard Effective C+整合归纳为 487 条规则,可检出 800 余种问题涵盖标准安全规则的规约依据Undefined 后果不可预期的错误 Unspecified 较为随意的实现支持 Implementation 可移植性问题 Deprecated 已过时的编程方式 Enhancement 需要加强的安全措施 No-diagnostic 编译器不提供警告的逻辑错误 Bad-practice 不良编程方式或风格 安全规则示例ID ID_plainNumericChar Rule 参与数值运算的 char 变量需显式声明 s
4、igned 或 unsigned Comment 没有 signed 或 unsigned 限制的 char 类型,是否有符号由具体的编译器决定,不具备可移植性。示例:Standard ISO/IEC 9899:2011 6.2.5(15)-implementation ISO/IEC 14882:2011 3.9.1(1)-implementation Reference SEI CERT INT07-C MISRA C+2008 5-0-11 安全规则示例这段代码有哪些问题?安全规则之间的关系 Security Resource Style 类别 规则 对立 360 安全规则集合 http
5、s:/ 安全规则集合严格遵循编程语言的 ISO 标准融汇多种权威规范体系,符合国家审计标准适用于桌面、服务端及嵌入式等多种应用场景满足规范、审计、培训等多方面需求注重自动化代码审计的实现方法2.使审计过程脱离编译器的限制去编译化代码静态信息获取自研代码静态结构和语义信息分析模块:支持标准语法和扩展语法生成严整语法树对无法识别的代码具有合理的包容性“配合模式”与“非配合模式”去编译化代码静态信息获取 Action table Goto table State and symbol stack Production list Language syntax C/C+Source files 预处理
6、 静态结构分析 Syntax tree 段落划分 作用域分析采用递归下降法预处理指令、声明、表达式采用 LR1 分析法违规代码严重性的量化评估规则:The result of an assignment operator should not be used(MISRA C 2012 13.4)对规则的特殊情况进行逐一分类 每条检查结果配有说明其严重程度的权重 可根据不同需求酌情过滤低权重的结果 使严格的工业标准也可对一般代码起到指导作用示例代码违规代码严重性的量化评估结果权重分级0,100)统计与说明信息100,300)违反规定的代码300,400)不良风格400,500)重度不良风格500
7、,600)不良设计600,700)设计缺陷700,800)重度设计缺陷800,900)疑似导致错误的代码900,1000)重度疑似导致错误的代码1000,1200)常见笔误或语言运用错误1200,1500)逻辑性错误1500,1600)重度逻辑性错误1600,1700)疑似安全漏洞1700,1800)安全漏洞1800,2000)高危安全漏洞与流行工具的比对Name Rules Coverage Tech FlawFinder 70%1 Regex pattern matching TScanCode 112%14 Syntax pattern matching SonarSource 574%95 Symbolic execution 360 代码扫描 487%87 Blend 重要版本迭代过程2020技持 C99/C+98满足红线扫描要求2021支持 C+11借鉴开源工具检查点2022支持 C11/C+14探索符号执行等理论编写安全规则集合2023引入MISRA、AutoSar等工业标准THANK YOU