18

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

 3 years ago
source link: https://security.tencent.com/index.php/blog/msg/172
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

I. 背景

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

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

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

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

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

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

60488a4e452c03db5be6cb9d371abafb.png

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

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

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

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

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

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

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

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

5f0e3d82ba905c07c41a2d2210a62432.png

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

e6ae6d2592bd2e2c14986d2ad598599a.png1.2 应用与落地 

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

II. JavaScript编码安全指南

c20cda469328dbb4ed89f7dc028b56b1.png

fd30adafae24774909d21d3d274013e9.png

3b4bc922d00b87afdb75eaee6a30d2bd.png

b7925e448f02406a914d1add1a775916.png

12409dd5172474ec3e426794e67231ae.png

23fc74b80e083c9e1c0b881e50f47a7e.png

4261e176ccfff5cc0753e22c3bab92dc.png

bea9fb80d7cb22c49727e8a9546b4e47.png

ec078d65d52809f8cc04e6f2aeb0e9f5.png

d39c2ed5533d7c403ddbb9bbc821e61a.png

2693b27b90250d3ead89cbb90b693af2.png

7d2f62bc7ce895c8c5f5f4f4de984367.png

75b6b1b39595f92ff27a9a830881e211.png

5a931177c8727b1309861f511832d96a.png

cec99db6f24bdb93170dd11c4016c160.png

07089a1a28d18919073dc0437ae9f0b8.png

5735931c4119755ffc616d9c82a1427a.png

腾讯研发安全团队

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK