渗透视角下的C-C++安全编码实践.pdf

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CCPPPP--SSuummmmiitt C++ Summit 2020 渗透视角下的 C/C++安全编码 实践 目录 CPP-Summit 2020 1.从一个漏洞说起 (CVE-2020-8597) 2.安全函数 3.静态扫描 4.fuzzing 5.安全编译选项 6.总结 2 CPP-Summit 2020 CVE-2020-8597 CVE-2020-5987 是pppd软件中存在17年之久的远程代码执行漏洞,CVSS评分为 9.8分(严重程度 :Critical)。 Ubuntu/Debian/Fedora等系统 均受影响。 漏洞发生在处理Extensible Authentication Protocol (EAP)消息 的eap.c :eap_request函数中。 如右图所示 ,inp中是网络传输 的ppp数据 ,len和vallen均可控。 代码中存在逻辑错误 ,未判断 len - vallen与sizeof(rhostname)的 大小 ,导致 1429行发生缓冲区溢出。 3 CPP-Summit 2020 CVE-2020-8597 通过精心EAP数据包中的内容 , 在调用到BCOPY时覆盖函数返回 地址 : BCOPY(inp + vallen, rhostname, len - vallen); 如右图示意图所示 : char rhostname[256]; //栈上的变量 函数返回地址覆盖之后 ,可以 通过执行ShellCode或ROP等方式 控制程序执行流 ,让pppd进程执行 恶意代码。 4 CPP-Summit 2020 CVE-2020-8597 漏洞修复patch: 修改错误的逻辑 ,将if (vallen len + sizeof (rhostname)) 改为 : if (len - vallen sizeof (rhostname)) 思考 :这种方法是针对漏洞的专门修复 ,工程上有没有更普适的方法? 5 CPP-Summit 2020 安全函数 漏洞关键代码 : BCOPY(inp + vallen, rhostname, len - vallen); BCOPY是一个宏定义 ,没有长度判断,无保护机制 : #define BCOPY(s, d, l) memcpy(d, s, l) 使用安全函数memcpy_s : memcpy_s(rhostname,sizeof(rhostname),

文档评论(0)

wendangchuan + 关注
实名认证
内容提供者

高级工程师持证人

该用户很懒,什么也没介绍

领域认证该用户于2023年09月22日上传了高级工程师

1亿VIP精品文档

相关文档