楼主:
ettoolong (ettoolong)
2021-09-29 12:16:24难得在这边看到有关套件审核的讨论, 就顺便来分享一下有关套件审核的部份.
以下是我凭记忆写的, 有错误的话欢迎指正.
Firefox(AMO)和Chrome(CWS)一开始就使用了两个不同的审核策略,
所以我们可以分别讨论这两个两种不同的作法.
首先是Firefox(AMO), 主要是人工审核,
但实际上全球审核员只有十几人(2018年时, 现在不晓得有没有增加),
AMO上面约25300个套件只有118个是完全审核的(刚刚查的数据),
其余的为部份审查(审查过之前某一版, 但没审过最新版)或未审查.
可想而知, 大部份的套件都是没审过的, 除非你就只装一两个, 像我就是这种,
不然多少都会装到没审过的, 我所有在AMO的套件, 现在也都是未审核状态.
那如何确保没审过的套件是安全的呢? 审核团队用的是一个叫风险值的指标.
首先, 当你上传一个新套件, AMO后台就会先把这个套件作分析,
大致上就是看你套件manifest.json内容, 看你的API permissions & Host permissions,
看你有没有content script 和 该 content script 的 match patterns,
看你有没有自订CSP, 看你有没有用到高风险API(eval 或类似作用的code),
看你有没有使用混淆后的code,
权限越大, 能改动越多网站, 使用高风险API, 就会有一个越高的风险值.
审核者一上线就会看到一个用风险值排序的套件列表, 然后从一些高风险的套件开始审.
另外, 上传新版本也会提高风险值, 例如一个套件经过人工审核后,
风险值就会降一些, 经过多次更版, 如果都没有重新审核, 风险值就会一直叠加
(就会跑到审核列表的前面一些),
距离最后一次审核版本, 改越多, 加越多, 直到重新被人工审核.
再来就是套件的人工审核其实是分两块,
一块叫内容审核, 一块叫安全性审核, 两块的审核员是分开的.
内容审核其实是你上传套件的第一关, 审核员无需技术背景,
只要审核你的套件内容有无违反AMO条款(不能有色情, 赌博, 违反美国法律之类的),
一般来说你上传新套件或新版本, 会发现没有立即出现在架上,
那就是因为还没通过内容审核, 虽然这个过程也是人工, 但因为不用实际检查程式码,
所以可以审很快, 只要审查员上线, 通常可以审个上百个.
* 有一阵子AMO是上传就上架, 但是后来AMO受到广告攻击,
用自动化方式上传一堆广告套件, AMO 也不像CWS要缴5块美金,
所以砍帐号也无法阻止自动化注册, 最后只好把上架后的内容审核改到上架前执行.
安全性审核就是大家平常比较熟知的审核, 需要技术背景,
主要就是检查你套件是否安全, 有没有把使用者资料传到特定地方,
有没有动态注入代码问题, 有没有提供混淆前的原始码,
有没有对应的隐私条款, 有没有严重效能问题等.
一般你上传套件后, 只要通过内容审核, 就会立即上架,
之后(可能是很久以后)才会有安全性审核.
再来是Chrome(CWS), 主要是自动审核, 但近两三年有人工审核,
Google作为大数据的霸权, 除了结合静态分析和动态分析外,
还导入了机器学习, 用来自动分析套件是否有问题,
从2015年的一份报告中指出Google已累积了超过45TB的动态分析资料.
Google的机器人会查询搜索引擎, 浏览社交媒体, 查看热门新闻网站,
看看有没有该套件的相关资讯.
举例来说, 如果有新闻网站报导了一篇某某套件窃取使用者资料,
或是有社群网站上有人讨论到某某套件含有恶意程式码,
Google就会自动下架该套件(当然会经过一些AI判定)
这也就是为啥有时候在CWS上的套件会莫明其妙下架,
因为AI有时候会误判, 而当恶意套件在论坛上被讨论时,
套件也会自动下架, 因为AI是24小时随时都在帮忙监看的.
得益于越来越强大的机器学习, CWS的无人工审核让开发者上传套件后
无需等候人工审核就可以直接上架,
但是还是有不少漏网之鱼, 比起AMO, CWS常常是套件被使用者发现问题后才下架.
(AMO也偶有恶意套件, 但相对少一些, 但审核人力问题, 很难改善)
毕竟恶意套件也有很多手段让你难以透过简单的自动检查发现问题.
这两年我在上传套件到CWS时, 有注意到, 含有content script
(且有大范围match patterns)的套件, 在上传后会出现要人工审核(虽然不知道是
真人工还是人工智能), 因此需要等个一两天才会真的上架.
说明了Google对安全性的要求仍然是持续进步的.
实际上我也很久没认真写套件了, 所以上面的资讯可能没有到最新,
不过大方向应该还是一样的, 可以给想开发套件的人一点参考.
如果对上面提到的部份有问题, 欢迎讨论.