我被要求对第三方开发的 Firefox 插件进行安全审计。我是一名 Web 开发人员,对 JavaScript 有一定的了解,但不是浏览器安全专家。
我应该在源代码中寻找哪些可能存在安全风险的东西。另外,是否有任何有效的工具来混淆浏览器扩展源代码?
我被要求对第三方开发的 Firefox 插件进行安全审计。我是一名 Web 开发人员,对 JavaScript 有一定的了解,但不是浏览器安全专家。
我应该在源代码中寻找哪些可能存在安全风险的东西。另外,是否有任何有效的工具来混淆浏览器扩展源代码?
重要提示:这绝不是您应该寻找的东西的完整列表,以这个答案为例,您自己的道路和研究的第一步。我很久以前有过类似的任务。我必须在安全方面审查 Firefox 插件的代码,我相信你会很容易找到 Chrome/其他浏览器的等价物。还要记住 Chrome 中的 Extensions 在Sandbox中运行。
1. 任何与本地文件交互的东西:
每当FileUtils.File创建对象并调用其任何方法时
检查本地文件访问是否是记录在案的行为。正在访问哪些文件?为什么?他们发布成功了吗?
检查是否有任何本地文件正在被修改。这是记录在案的行为吗?修改后的文件是什么?为什么?
2. 任何与 Windows 注册表交互的东西:
每当创建一个实例nsIWindowsRegKey或调用它的任何方法时
Windows 注册表访问是记录在案的行为吗?访问哪些键?为什么?
Windows 注册表修改是记录在案的行为吗?是临时修改吗?修改了哪些键?为什么?
3. 任何与 cookie 交互的东西
无论何时nsICookieService使用
访问 cookie 是记录在案的行为吗?为什么?
这些 cookie 属于哪个域?为什么?
4.在用户的shell中执行的任何命令
每当nsIProcess创建并调用它的任何方法(密切关注.run()和.launch())
执行命令是记录在案的行为吗?为什么?
正在执行哪些命令?输出重定向到哪里?
5. 正在访问的任何窗口/选项卡
无论何时window访问和/或getElement*调用任何方法(密切关注createElement注入<script>元素的调用。
访问网页的 DOM 是记录在案的行为吗?为什么?
添加/删除/修改了哪些元素?为什么?
每当您审核一种新型应用程序时,您都应该查看已发现的其他类型的漏洞。一个很好的方法是搜索 CVE 数据库。对于浏览器扩展,你应该看看这个 Defcon 17 演讲:滥用 Firefox 插件。扩展被赋予了更高的权限,并且可能非常危险。
在混淆方面,任何 JS 混淆器都应该可以工作。扩展名只是存档中的 .js 文件。