-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
大佬好,按照你的步骤去做,结果出了些问题 #1
Comments
@akamei 这个意思是./magick 是一个脚本,不能够作为afl-fuzz 的测试输入程序,一般来说,编译成功之后,在当前目录的.libs 下有一个二进制文件的,用afl-fuzz 跑的是那个二进制文件,不是这个sh 脚本文件,你可以使用file 命令来重新确认文件格式.. |
谢谢大佬,我找到那个文件了:) |
感谢! |
你好,ImageMagick的版本现在已经更新了,还能用fuzz跑出那些cve吗?当时你跑的最新版本的时候,可以跑出旧的crash吗? |
@insidemountain 无论版本怎么更新,潜在的问题肯定是会有的,要看挖掘的方法和思路.Fuzzing 只是一个思路,我自己得出的一点经验,挖二进制漏洞Fuzzing 很重要,配合看源码也很重要,因为读源码的过程中可以知道更多的细节,比如可以针对一些特性或者新版本支持的功能和关键字来Fuzzing ,这种问题可能用旧的样本是跑不出来的.在当时最新版的时候,用别人的样本还是可以跑到一些问题来,建议你可以到各个Bug Issus 平台上收集样本,当时我的样本从Firefox ,ImageMagic 之前提交过的有问题的样本,libPNG ,OpenJPEG 等库的测试用例上拿样本,而且这些样本无论是跑ImageMagic 还是GraphicsMagic ,只要是可以解析这种图像格式的库和代码,都可以用收集到的样本来跑跑看,试试有没有问题.希望对你有帮助~ |
@lcatro 十分感谢你的分享,对我帮助很大。 我还有点疑惑,就是我看到你写的文档是从最新的源码编译然后进行的fuzz,仍旧跑出来了旧版本的7个cve(还是这7个cve是你新跑出来的,如果是的话,我可能不理解错了,不好意思,主要是想知道,我下载最新的版本能不能分析旧版本的cve,最近想复现一下cve),这7个漏洞不应该已经被打了补丁了吗,为什么还会出现crash呢? |
@insidemountain 建议切换到旧版本来复现漏洞,因为开源项目经过多次修改代码之后可能和原来的代码完全不同,这7 个crash 你可以看一看崩溃的原因和触发漏洞的代码位置,因为旧的crash 样本也可以能会触发崩溃,如果是新的代码位置产生崩溃的话,这个就算是找到了新洞,恭喜CVE .. |
@insidemountain 至于最新版本的代码可以触发旧版本修复的Crash 原因,有些开发者会认为一些崩溃(比如说空指针,栈溢出[指的是不断地递归调用那种栈溢出,不是缓冲区溢出])对项目影响不大,会有选择性地修复,或者在开发过程中不知道什么时候产生了代码版本回撤,导致原本修改的代码被撤消了,你也可以从Commit 的历史里面找找.. |
非常感谢耐心地为我解答疑惑,由于我比较少上github,所以回复较慢,请多包涵。 |
@insidemountain 小事哈,如有问题留言就好了~ |
lc师傅, 用深度学习挖二进制漏洞是否可行? 也许是我眼界低, 个人认为深度学习在fuzz和符号执行的情况下似乎帮不了什么忙, 但是又有GGC的比赛表明可以用深度学习的方法进行漏洞挖掘与修补, 想听下你的经验。 |
@akamei 目前我了解到的深度学习应用到Fuzzing 的一个例子是微软研究院的论文Learn&Fuzz: |
lc师傅好强, 带带我fuzz和吃鸡:), 可不可以偷偷发你微信到我邮箱里wxhusst@gmail.com @lcatro |
同样遇到了这个问题,用ImageMagick/utilities/.libs/magick 文件。 |
@thinkycx 你可以试试在gcc 中重新编译一次看看.. |
确实,如果用gcc编译时看log是有符号信息的。 用clang+ASAN编译时就没有符号信息(具体体现在遇到了ASAN的报错,只会显示magic+0xXX出了问题,但是不会显示对应的源码是第几行)因此就无法定位到是源码中的第几行出了问题了。 排查了一下clang编译后的binary,使用file命令查看magick二进制文件是没有strip的,gdb加载该binary后,运行poc后,如果使用CTRL+C暂时中断程序,是可以看到对应的符号的,只是ASAN的log中没有符号。 请问这可能是什么原因导致的呢? @lcatro 环境:
举例:
clang log:
|
解决了。@lcatro clang开启ASan编译选项时,calltrace中的符号信息是依赖llvm的llvm-symbolizer来做的。因此确保llvm-symbolizer在环境变量中即可。 详细可以参考这里:google/sanitizers#1043 |
@thinkycx 感谢老哥分享,Get 到新方式,刚才在开会弄了好久,没来得及回复不好意思哈~ |
@thinkycx 之前我也遇到这个没有符号的问题,我都是先clang++ -o 2 跑完然后出问题了没找到符号再到gcc 从新编译一次然后再跑一下的.. |
客气了,向前辈学习。 |
我在虚拟机ubantu 16.04LTS运行这步的时候,它提示物 magick 是个shell文件
然后我去网上查了下 shell文件转换成 binary文件时也没找到什么好的方案
希望大佬告诉我下应该怎么解决
我的afl是2.51b版本
ImageMagick是今天的版本
具体图片如下:
The text was updated successfully, but these errors were encountered: