程序开发环境安全.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
程序开发环境安全.pdf

程序开发环境安全 --连接器中的漏洞 余科技,赵伟 启明星辰积极防御实验室 前言 这是一篇关于讨论程序开发环境中 接器漏 洞相关安全的演讲。 这是一个我们可能平时忽视的问题,大家考 虑过日常使用开发环境时可能会遇到的安全 问题吗? 为什么要研究开发环境的安全 起因: 在日常的使用中发现多个开发环境的安全漏 洞,却从来没有真正关注过开发环境的安全 问题。提供源程序的软件 被认为是安全 的,没有人在重新编译 接前会想到编译或 者连接过程本身将导致自己受到攻击。 环境 通常的程序开发环境可能包括(以Intel x86下的Windows与Linux平台为主): 编译器:CL,gcc 连接器:Link, ld 调试器:VC 自带的调试器,GDB Etc. 重点 连接器安全是这个ppt的重点 什么是 接器, 接器的作用 连接器存在的漏洞 下面我们讲一个linux下ld的漏洞实例 连接器 为了深入了解该漏洞,我们先来描述一下连接器流 程 连接器工作的一般过程: 当连接器运行时,它首先会扫描输入文件,找出每 个段的大小,收集所有符号的定义和引用。连接器 会建立一个段表用来记录输入文件中所有的段,一 个符号表记录所有导入或导出的符号。 第一遍扫描 第二遍扫描 Linux平台下 大家可能 有过的经历: 经常碰到Gcc在编译的时候出现崩溃 (Segfault)的情况,去年发现一个相关漏 洞,当时以为在gcc当中进行调试时很困 惑。 真正的原因:ld使用了bfd库,bfd库中存在 多个漏洞 ld连接流程 Ld简介:通常是编译程序的最后一步 Ld连接流程 抽象层bfd库简介 Bfd库的作用:为ld提供一个通用界面,使 ld可以对各种格式的目标文件进行相同的操 作 Bfd库工作流程概要: 打开目标文件后,自动检测文件格式 对应处理对象和例程 Bfd库对elf文件的解析 Elf文件格式简介1 ELF文件头 ELF文件头 char magic[4] = \177ELF;// magic number char class; // address size, 1 = 32 bit,2 = 64 bit char byteorder; // 1 = little-endian,2 = big-endian char hversion; // header version,always 1 char pad[9]; short filetype; // file type: 1 = relocatable,2 = executable, // 3 = shared object,4 = core image short archtype; // 2 = SPARC,3 = x86,4 = 68K,etc. int fversion; // file version,always 1 int entry; // entry point if executable Elf文件格式简介2 ELF文件头 接上页 int phdrpos; // file position of program header or 0 int shdrpos; // file position of section header or 0 int flags; // architecture specific flags, usually 0 short hdrsize; // size of this ELF header short phdrent; // size of an entry in program header short phdrcnt; // number of entries in program header or 0 short shdrent; // size of an entry in

文档评论(0)

cai + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档