我这里给大家开个头,今年我带领的一支团队(慢雾安全团队)会对外做个大分享,和区块链生态安全有关的分享。这个生态安全很大,内容很多,你看我写“黑客与区块链”系列就知道,这个系列很有得写...
今天我就专门提下前端安全领域在区块链生态里为什么会这么的重要。
这个重要性首先和区块链生态里币的属性有强关系,这些币都是真金白银,一点安全问题可能都会造成极大的损失,且区块链生态由于发展过快,导致安全建设其实是严重滞后的。
然后,前端安全其实在众多安全领域内,被开发人员是最为忽略的(内网安全表示不服),他们大多数都知道什么是 SQL 注入,知道什么是服务器被黑,知道什么是木马。但是他们几乎不知道前端黑,偶尔可能知道 XSS,但是绝对极少见识到什么是邪恶的 XSS 攻击,更不会知道什么是 CSRF 攻击,什么是 Cookie 安全,什么是 CSP。他们会知道 HTTPS 的好处,但是他们不知道为什么一定要完美部署 HTTPS,他们绝对不会知道当没有了 HTTPS,一套套攻击链是如何产生的。
这些内容,五年前,我们的那本书《Web前端黑客技术揭秘》几乎都写了。五年过去了,除了 Flash 攻击手法基本宣告死亡,其他的都很有效,而且随着 HTML5、ES6 的普及,随着跨域需求的普适,又有不少新的攻击手法出现。前端黑的世界继续大放异彩。
可惜的是,开发人员几乎不懂这些攻击手法,导致架构出来的 Web 钱包、Web 交易所充满了各种各样的前端安全问题。
我这里就开个头,举例我们发现的普遍存在的安全问题。
1. Cookie 安全缺陷
Cookie 安全里,绝大多数人只知道 Name、Value、Expires,不知道 Domain、Secure、HTTP 等字段的用途。这些要是用不好,Cookie 的安全会很惨,比如:Domain 需要严格限制 Cookie 的作用域名,你一偷懒就可能设置为根域通用,那么任意子域如果出现问题就可以读取这个 Cookie;Secure 可以强制你的 Cookie 只允许在 HTTPS 上传播,避免可能出现的 HTTP 明文流量导致你的 Cookie 被中间人劫持泄露;HTTP,也就是 HttpOnly Cookie,可以杜绝 JavaScript 直接读取 Cookie,这样即使有 XSS 攻击出现,关键 Cookie 也读不走。千万不要和我 PK 措辞的严谨性,我懂...
2. HTTP 安全响应头
比如,CSP 这个策略,已经发展这么多年的安全策略,普适度居然还那么低。这个安全策略,可以让你严格限制 JavaScript 执行的区域,比如不允许在当前页面的 HTML 里内嵌执行,只允许远程加载一个白名单域名内的 js 文件来执行 JavaScript。多么漂亮的安全策略,五年前我们那本书最后一章节就大篇幅介绍了...
大家可以直接打开 Google、Twitter、知乎的首页,在“开发者工具”里看看响应头部里的这个字段:Content-Security-Policy,这就是 CSP,学学呀。
同理可以学学其他安全头部,特点都是 X- 开头的响应头部。
3. 加载第三方 js 文件
第三方 js 文件,加载得多普遍,你可知道如果这个 js 出问题了或作恶了,你的 Web 前端安全策略就会直接奔溃?
而且第三方 js 文件,比如那些统计、广告的 js 文件,还会做用户跟踪,隐私什么的,不存在的。这种跟踪 js 探针是非常成熟的技术,这次做跟踪,下次再做点恶...
4. 跨域解析第三方 JSON
现在的 Web 钱包、交易所啊,都喜欢异步调用第三方的 JSON,然后解析出来直接在页面里展示,比如行情啊什么的。但是他们极少去做安全过滤,默认就信任了这个 JSON 了...
如果这个 JSON 出问题了或作恶了,和上面那点一样,你的 Web 前端安全策略直接奔溃。
5. 几个我懒得解释的大鬼
CSRF(跨站请求伪造)是什么鬼我科普过,但是科普还是有些理解的门槛,很多开发人员都不知道 CSRF 是什么鬼,如果开发选型上没用一些默认安全的开发框架的话,那就完了...
CORS(跨域资源共享)又是什么鬼,这个的滥用一结合 CSRF 简直就是针对目标用户的完美控制。
6. HTTPS 的重要性
Google 说了“您应始终使用 HTTPS 保护您的所有网站,即使这些网站并不处理敏感的通信。”你猜为什么?尤其是那些区块链世界的网站,即使上面没 Web 钱包,没交易所功能。
在钓鱼尤其疯狂的币圈里,你的官网如果被中间人劫持拿来做个钓鱼攻击,你都没处哭去,你如何解释不是你发起的?HTTPS 就可以完美杜绝这种中间人劫持攻击。
HTTPS 是一种安全感的体现,尤其对于官网来说:)
7. 别忽视本地储存的攻击入口
比如,Web 钱包,喜欢把一些重内容或隐私内容,比如 keystore 吧,存在浏览器本地,比如 HTML5 的 localStorage 里。
那么这会成为一个相对入口,千万不要忽视这种看似好像没问题的入口,如果 keystore 的一些 key 内容被替换成恶意代码,在前端渲染后执行,就可以完美诞生个 XSS Rootkit 了,实现针对目标钱包的永久控制:)
OK,就先这样开个头,细节懒得展开,期待我们未来会公布的分享吧。
希望这些 tips,能给你提前打个预防针,安全这东西有时候很恐怖,千里之堤溃于蚁穴,请不要忽视任何可能性。
除了各类安全技能,“黑客与区块链”相关的分享也会随时发送在我们的“灰袍技能”里,还没加入?
如果想关注挂在 Telegram 上的“灰袍推送”,来吧,这个免费:
https://t.me/greypush
题图来自:flow.org
声明:本文来自懒人在思考,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。