IT学习网 - 爱学习 - 最具影响力综合资讯网站 -- 中国IT界的领航者!
热门关键字:      88888  as  xxx
站外
广告
站外
广告

Address Sanitizer in macOS - 安全客 - 有思想的安全新媒体

发布时间:2016-08-19 14:18文章来源:网络整理文章作者: 学习网点击次数:
前几天, Keen Team的@marcograss在其博客上发布了一个使用Address Sanitizer(aka asan) 找到的堆溢出漏洞。在这里讨论一下asan的具体实现。

Address Sanitizer in macOS

简介



前几天, Keen Team的@marcograss在其博客上发布了一个使用Address Sanitizer(aka asan) 找到的堆溢出漏洞。在这里讨论一下asan的具体现。

本文涉及的环境



  1. macOS 10.11.6

  2. Xcode 7.3.1 (确保使用苹果官方的clang, 其与开源clang生成的IR有些不同)

  3. clang-703.0.31

什么是asan



asan是一个基于LLVM、由Google开发的快速查找内存错误的探测器。 在编译的时候插入相关的辅助和检测代码, 以此完成探测的工作。 后面将更加详细地介绍asan的结构。 asan很早就合并到了LLVM开源分支中, 并在Xcode7.0中正式合并到苹果的编译器中, 作为开发者调试c++代码并及时发现相应的内存错误的手段之一。

目前可以检测源代码中的几乎全部的栈内存和堆内存错误。

asan的使用



先写一个简单的含有栈溢出的程序:

// test.c
#include <stdio.h>
void f(char c)
{
       printf("%c", c);
}
int main(void)
{
   char a[32];
   char b[32];
   char c[50];  
   a[1]='1';
   b[32]='a';        //stack overflow
   c[100]='c';        //stack overflow    
   return 0;
}

使用如下的命令编译这个程序:

clang test.c -o test -fsanitize=address

运行程序, 将得到如下的结果:

http://p9.qhimg.com/t013919f2597f407dc2.jpg

在asan给出的报告中, 可以得到如下的信息: 1. 当前错误是一个栈溢出的问题。 2. 当前栈上有三个对象, 在访
Address Sanitizer in macOS - 安全客 - 有思想的安全新媒体
本文由 IT学习网 整理,转载请注明“转自IT学习网”,并附上链接。
原文链接:http://www.ourlove520.com/Article/others/jiami/412058.html

标签分类:

原理 Address Sani asan
上一篇:上一篇:JetBrains IDE 远程代码执行和本地文件泄露 - 安全客 - 有思想的安全新媒体
下一篇: 下一篇:js敲诈者变种利用PowerShell免杀分析 - 安全客 - 有思想的安全新媒体
无觅关联推荐,快速提升流量