En

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

作者:martinzhou、l0u1s、monsoon公布时间:2020-11-27阅读次数:3735评论:2

分享

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编码安全指南

全文详见《JavaScript编码安全指南 V1.0


腾讯研发安全团队

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











评论留言

提交评论 您输入的漏洞名称有误,请重新输入