信息安全|将挖洞当作爱好和职业的笑与泪:微软漏洞研究员的自白( 五 )


一旦大脑里面存储了足够多的信息 , 那么当你提出一些想法时就尝试去实践 , 尽管多数会失败 , 但要坚持不懈 , 最终你就会发现安全漏洞 。

一言以蔽之:阅读、阅读、再阅读 , 要有创造性 , 失败之后多加尝试 。 一切皆自动化Fuzzing 在软件厂商保护自家应用程序过程中发挥着重要作用 , 自动化极具价值 , 因为它节约了很多时间并能获得很多成果 。 Fuzzing 就是将伪随机生成的输入投放到某个进程(如浏览器)中的过程 , 之后检测该进程是否崩溃 。 微软在fuzzer 中投入很多 , 很明显这是我必须补充的一个技能 。
事实证明 , 我对fuzzer的误解是极其错误的 。 Fuzzing 就像是大海 , 本身就拥有很多种不同的方法论和学科 。 截至目前 , 我自己的经验只适用于浏览器上下文 , 而我只是刚刚接触而已 , 不过我已经感受到了它的巨大潜力 。 如下是我常用的一些工具/fuzzer/生成器 , 当然它们远非全部:
1、Libfuzzer:这是一个进程内覆盖率指南 fuzzer 。 以最基本的术语来解释就是 , 设置一个函数 , 便于将所有类型的输入抛进去并返回覆盖率信息(这里的“覆盖率”是指在既定输入中触及多少代码) 。 它要求能够访问浏览器源代码并具备一些 C++ 知识 。
2、 Dharma:基于语法的fuzzer 。 由于这是同事 Christoph Diehl 创建的 , 我很高兴在遇到问题时可以去问他 。 你所需做的就是写一个语法文件 , 告诉它某个特定的 JavaScript API 或 HTML 元素是什么样的 , 它就会生成你可以在浏览器内运行的测试用例 。 它不需要具备浏览器源代码知识但要求具备 JS 和 HTML 知识以及某些关于语法文件的语法实践 。
3、Playwright/Puppeteer —— 控制浏览器的 NodeJS API 。 这是一个很棒的工具 , 可以使你对浏览器具有很多控制 。 如果你需要使用浏览器执行一些重复任务 , 则会发现它是有用的 。 无需具备浏览器源代码背景 , 具有一些 NodeJS 背景即可 。
4、Octo——Fuzzing 库 。 在fuzzing 过程中有时需要生成一个随机字符串或随机数等 。 这个库能使我们轻松访问还可用于绑定版本的 NodeJS 项目中或浏览器中 。 无需具备浏览器源代码背景 , 一些 NodeJS/JS 背景即可 。
一言以蔽之:进入自动化;扩展自己的眼界 , 不要在舒适区待太久 。
报告浏览器安全漏洞
安全漏洞将会一直存在 , 我认为这个事实在很长时间内都不会改变 。 就在你阅读本文时 , 就有一个bug等待你挖 , 所以赶紧去挖吧 。
假设你在 Edge 中找到了一个漏洞 , 报告前建议先了解:
1、它能在Chrome 上复现吗?
(1)能——报告给 Chromium 而不是 Edge
(2)不能——报告给Edge
2、它能在Firefox 上复现吗?
(1)能——分别报给 Edge 和 Mozilla
(2)不能——那就只报给 Edge
3、你用的是Edge的最新稳定版吗?
(1)去“edge://settings/help”看看是不是最新的
(2)在报告中指出所使用的版本
4、在报告中指出所使用的操作系统(Windows、Mac、Linux、安卓或 iPhone)
5、在报告中上传一个最小的测试用例(不要发送实时演示链接)
6、上传一个关于该行为的短视频(我个人用的是OBS)
7、找到之前其它浏览器公开披露的漏洞作为先例

一言以蔽之:漏洞等待你去挖 。


【一>所有资源关注我 , 私信回复“资料”获取<一】

1、200份很多已经买不到的绝版电子书

2、30G安全大厂内部的视频资料

3、100份src文档

4、常见安全面试题

5、ctf大赛经典题目解析