使用静态分析技术找到真正”的代码质量缺陷与安全漏洞.pptVIP

  • 17
  • 0
  • 约2.44万字
  • 约 37页
  • 2021-10-30 发布于广东
  • 举报

使用静态分析技术找到真正”的代码质量缺陷与安全漏洞.ppt

“瀑布式开发(kāifā)流程” 需求(xūqiú)挖掘 设计(shèjì) 实施 验证 支持 开发 测试 发布 经典的瀑布式开发流程: ? 代码开发与测试之间存在延迟 ? QA经常由其他部门负责,在编码阶段完成后才能开始 ? 安全保护基本是在“事发之后”才由单独的安全部门提供 第三十一页,共37页。 “敏捷开发(kāifā)流程” 需求(xūqiú)挖掘 设计(shèjì) 实施 验证 支持 开发 测试 发布 理想的敏捷开发流程: ? 将整个实施和验证流程缩短成2-4周的“冲刺”(sprints) ? 开发好的功能只有在经过全面验证之后才被“接受” ? 为取得成功,QA及安全测试都必须是深入的自动化测试 第三十二页,共37页。 ? Requirements definition 提交(tíjiāo) ? Business Process Modeling 修复(xiūfù) 检测(jiǎn cè) IDE 源代码管理 夜间构建 缺陷跟踪 缺陷 缺陷 缺陷 软件生命周期集成 敏捷开发 相关人员任务自动分配 提交 提交 提交 ? Develop features ? Review defects ? Prioritize actions ? Make fixes ? Track progress 修复 检测 34 自动 代码 检测 第三十三页,共37页。 – CVE-2005-0467 { 示例(shìlì):C/C++ char *p = snewn(len + 1, char); memcpy(p, s, len); p[len] = ; return p; } ? 这片代码(dài mǎ)来自PuTTY – PuTTY是面向Win32和Unix平台(píngtái)以及xterm终端仿真程 序而免费实施的Telnet与SSH static char *foo(char 安 漏洞 ? 2005年在PuTTY中发现*s,全 int len) char *p = malloc((len + 1) * sizeof(char)); memcpy(p, s, len); p[len]=‘\0’; return static char *mkstr(char *s, int len) p; } { 第三十四页,共37页。 CVE-2005-0467 第三十五页,共37页。 static char *mkstr(char *s, int len) { char *p = snewn(len + 1, char); memcpy(p, s, len); p[len] = ; struct sftp_request { /* sftp_pkt_getstring call with controlled len value */ sftp_pkt_getstring(pktin, hstring, len); ... handle = snew(struct fxp_handle); /* heap corruption will occur if len == -1 */ handle-hstring = mkstr(hstring, len); handle-hlen = len; sftp_pkt_free(pktin); return handle; ... } static void sftp_pkt_getstring(struct sftp_packet *pkt, char **p, int *length) { *p = NULL; if (pkt-length - pkt-savedpos 4) return; /* length value is taken from user-supplied data */ *length = GET_32BIT(pkt-data + pkt-savedpos); pkt-savedpos += 4; /* this check will be passed if length 0 */ if (pkt-length - pkt-savedpos *length) struct retur

文档评论(0)

1亿VIP精品文档

相关文档