专栏首页腾讯安全应急响应中心腾讯代码安全指南开源,涉及C/C++、Go等六门编程语言
原创

腾讯代码安全指南开源,涉及C/C++、Go等六门编程语言

文|鹅厂各BG安全团队和热心开发人员

腾讯代码安全指南旨在梳理API层面的风险点并提供详实可操作的编码指引,是我们开展DevSecOps安全左移实践探索过程中,梳理沉淀面向开发人员的代码安全参考材料。

本次开源涉及C/C++、JavaScript、Node、Go、Java、Python六门编程语言的安全指南。

项目主页:https://github.com/Tencent/secguide

项目背景

近年来,无论是DevSecOps,还是Google SRE的可靠和安全性理念,都提倡“安全需要每个工程师的参与”。其中涉及的“安全左移”理念也再次被推向前台,获得关注。除安全团队建设一系列安全机制和工具外,每位开发者也可以身体力行地参与进来——编写安全的代码,从源头杜绝漏洞。

基于此,腾讯各BG安全团队和热心开发人员,从业务角度梳理了代码安全指南。它提供了详实的参考材料和行动大纲,分功能、语言整理了编码的最佳安全实践,可作为一线开发者的权威参考,有助于开发黑、白盒漏洞扫描工具和策略。

设计理念

代码安全指南的内容呈树状结构展开,共分5层,如下:

2.

2.1 语言

每种语言面临安全的风险种类不同,需要分别开展详述。如:go和javascript对比,go就不存在原型链污染的问题。同时,由于公司内的代码风格规范亦分语言展开,安全规范采取相同的分语言方式能保持整体的连贯性。

2.2 端

这里的端是指不同的终端,如:Web、安卓客户端、iOS客户端、PC客户端。实践过程中,将内容按端区分的原因有:

1、同一门编程语言,用在不同的终端应用开发,其面临的风险类型和数量有着天壤之别。

例如:

JavaScript应用于前端页面开发时,面临的主要风险是DOM XSS;但JavaScript亦可依托Node.js进行Web后端接口开发,如果编码不当,则存在命令注入、SQL注入等风险。

2、大型互联网公司内,项目开发采取“流水线”化作业,分工往往精细明确,将不同端的场景作为主干目录,更便于开发人员检索、快速了解编码安全知识。

2.3 场景

通过复盘历史漏洞,安全风险可按成因粗略归为两类:

1、代码漏洞

指代码编写时,因不安全的API使用和逻辑编写产生的安全风险。

2、运维漏洞

指代码的运行环境、配置和依赖等系统运维相关的问题。如腾讯蓝军分享的《浅析软件供应链攻击之包抢注低成本钓鱼》一文,涉及的安全风险本质上是

部分语言依赖包管理,当部分企业私有软件包仅在公司内部软件源注册时,攻击者就可以在外部公共软件源上抢注。

如果公司内员工使用包管理软件拉取时,未配置公司镜像源时,就会拉取到攻击者抢注的恶意包。

2.4 功能

在对内、外部发现的漏洞进行复盘过程中,我们发现安全风险与业务场景高度相关,例如:

由于代码安全指南的目标受众是开发人员看的。在撰写指南过程中,我们尝试将漏洞转化为功能场景,以此作为主干目录。 由于与具体的业务场景关联,在开发时能更容易想起相关的注意事项,由此可降低认知、学习成本。

2.5 内容

指南内容核心围绕编程语言和框架的API/sink点展开。对开发人员来说,API是实现业务逻辑时,高频接触对象。

而通常,安全漏洞往往可归因为API的错误使用。对安全工程师来说,sink点是编写安全策略、组件是非常重要的一部分,直接决定了安全系统的扫描能力。

编写代码安全指引时,采取了以下方法来提升内容的完善性:

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

2、充分调研CWE、OWASP等现有规范,采用更方便开发者记忆的编排和阐述方式;

3、编码模式基于丰富的公司内外已知漏洞案例,不断补充先前未考虑到的风险规避建议;

4、举一反三,结合各类开发文档和提炼的漏洞产生原因,挖掘鲜有提及的风险点加入规范中。

开源交流

我们希望通过将代码安全指南开源,帮助有DevSecOps和安全左移建设的企业机构解决实际问题。同时,安全指引需要随着新发现的漏洞、编程语言&框架的迭代不断完善。

希望能和社区携手,一道维护完善。如果你觉得帮助,欢迎给项目Star、提交Issue和PR。

腾讯开源项目:https://github.com/Tencent 

请给项目 一个 Star !

欢迎提出你的 issue 和 PR!

国内镜像地址:https://git.code.tencent.com/Tencent_Open_Source

登录后才能访问公开项目

腾讯工蜂源码系统为开源开发者提供完整、最新的腾讯开源项目国内镜像

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

    腾讯安全应急响应中心
  • 安全左移理念,鹅厂 DevSecOps 如何实践?

    ? 作者:yuyangzhou、dexyfruan,腾讯 TEG 应用运维安全工程师 引子 随着 DevOps 模式的落地,快字当头。研效提速也意味着出现安...

    腾讯技术工程官方号
  • 适合 Go 新手学习的开源项目——在 GitHub 学编程

    故事要从 2007 年说起。因为受够了 C++ 煎熬的 Google 首席软件工程师 Rob Pike 召集 Robert Griesemer 和 Ken Th...

    HelloGitHub
  • Github开源免费编程书籍

    时见疏星
  • 攻城狮剁手攻略丨有了这些书,还要什么自行车?

    ? 平时一本正经,突然画风清奇 织云值此全民剁手狂欢佳节之际 特地为攻城狮们送上一份通过采访 精心挑选的书单 敬请笑纳 ? ? 《代码的未来》 “站在摩尔定律...

    织云平台团队
  • 【初识Go】| Day1 Go语言特征&开发环境配置

    由于个人学习习惯,在学习一门语言的时候不喜欢看大量理论,所以“该知道的都知道,不知道的慢慢了解”,直接搭建环境开干!

    yussuy
  • [GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及

    作为网络安全初学者,会遇到采用Go语言开发的恶意样本。因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识;另一方面是分享与读者,希...

    Eastmount
  • 【阅读清单】系列文章清单列表(一)

    Centreon+Nagios实战 https://cloud.tencent.com/developer/inventory/272

    云加社区
  • 腾讯 DevOps 专场(内附福利)

    织云平台团队

扫码关注云+社区

领取腾讯云代金券