面向DevSecOps的编码安全指南|JavaScript篇

百家 作者:腾讯安全应急响应中心 2020-11-27 18:46:28

文|martinzhou & l0u1s & monsoon


I. 背景


近年来,无论是DevSecOps,还是Google SRE的可靠和安全性理念,都提倡“安全需要每个工程师的参与”。其中涉及的“安全左移”理念也再次被推向前台,获得关注。


除安全团队建设一系列安全机制和工具外,每位开发者也可以身体力行地参与进来——编写安全的代码,从源头杜绝漏洞。这时,就需要一份详实的参考材料和行动大纲。


几位对研发安全感兴趣的一线研究员,首次尝试从开发者视角,分功能、语言梳理了编码的最佳安全实践。包括C++、Go、JavaScript等。TSRC公众号将分语言逐批与业界分享。



1.1 指南是如何梳理、编写的?


1.1.1 聚合各语言、组件、框架文档中的最佳安全实践


各语言、开发框架的文档中,一般也会给出安全加固指引。但相对分散,容易遗忘。通过代码安全指南的整合,能强化开发者们的安全意识。


图:散落在各类文档中的安全建议


1.1.2 参考业界经验,开展原创


在参考调研CWE、OWASP等现有规范的基础上,我们还注意到:在日常研发过程中,由于开发者首要考虑的是如何实现功能来完成需求。通过阐述安全的函数使用方式,更方便开发者记忆。


因此,采用了一种新的编排和阐述方式。尽管内容分类及表述方式有别,但核心内容殊途同归。


1.1.3 基于内外部已知的漏洞案例的复盘、抽象,不断完善指引条目


借助对内、外已知的漏洞案例的复盘,提炼产生漏洞的编码模式,不断补充先前未考虑到的风险规避建议。


1.1.4 举一反三,推导鲜有提及的风险点,力求面面俱到


除参考业界经验、沉淀转化已知漏洞案例外,我们还“主动出击”。结合各类开发文档和提炼的漏洞产生原因,挖掘鲜有提及的风险点加入《指南》中。以jQuery的.html()错误使用为例,漏洞原理是,传入.html()的变量值包含未过滤的HTML标签内容,产生DOM XSS。




通过回溯jQuery的官方手册,我们发现还有多个函数存在与.html()一样容易被误用的场景。如:.after()、.before()、.wrapAll())、.wrapInner()等。因此,最终形成的指南条目如下:



1.2 应用与落地


编码安全指南不仅可作为一线开发者的权威参考,还有助于开发黑、白盒漏洞扫描工具/策略。但设立指南只是安全建设“千里之行”的第一步,我们还在探索静态源代码分析、框架安全功能建设、安全开发库、自动漏洞修复等机制配合,进一步推动安全建设,欢迎关注TSRC的后续分享。


II. JavaScript编码安全指南


腾讯研发安全团队


腾讯公司内部与自研业务贴合最紧密的一线安全工程团队之一。团队负责软件生命周期各阶段的安全机制建设,包括:制定安全规范/标准/流程、实施内部安全培训、设计安全编码方案、构建安全漏洞检测(SAST/DAST/IAST)与Web应用防护(WAF)系统等。在持续为QQ、微信、云、游戏等重点业务提供服务外,也将积累十余年的安全经验向外部输出。通过为腾讯云的漏洞扫描、WAF等产品提供底层技术支撑,助力产业互联网客户安全能力升级。



关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接