Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >腾讯代码安全指南开源,涉及C/C++、Go等六门编程语言

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

原创
作者头像
腾讯安全应急响应中心
发布于 2021-05-24 13:15:59
发布于 2021-05-24 13:15:59
1.3K0
举报

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

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

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

项目主页: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

登录后才能访问公开项目

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

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
安全左移理念,鹅厂 DevSecOps 如何实践?
作者:yuyangzhou、dexyfruan,腾讯 TEG 应用运维安全工程师 引子 随着 DevOps 模式的落地,快字当头。研效提速也意味着出现安全漏洞的数量和概率随之上涨。过去安全风险的管控主要依赖于 DAST 类技术,即:采用黑盒测试技术,对待检查目标发起含检查用例的请求。DevOps 给这一模式带来了挑战,安全检查速度慢、周期长,容易给业务带来干扰,一定程度上有阻碍业务持续交付的风险。另据 Capers Jones 的研究结论:解决缺陷的成本,在研发流程中越靠后越高。 因此,安全机制的左
腾讯技术工程官方号
2021/05/31
9530
面向DevSecOps的编码安全指南| JavaScript篇
近年来,无论是DevSecOps,还是Google SRE的可靠和安全性理念,都提倡“安全需要每个工程师的参与”。其中涉及的“安全左移”理念也再次被推向前台,获得关注。
腾讯安全应急响应中心
2020/11/27
5480
面向DevSecOps的编码安全指南| JavaScript篇
Python 全栈 Web 应用模板:成熟架构,急速开发 | 开源日报 No.223
full-stack-fastapi-template 是一个现代化的全栈 Web 应用模板。
小柒
2024/04/01
6970
Python 全栈 Web 应用模板:成熟架构,急速开发 | 开源日报 No.223
推荐3个腾讯实用开源的GitHub项目
重点聚焦清理功能,对上百款软件提供定制化的清理方案,提供专业的清理建议,帮助用户轻松完成一键式的清理。
开源日记
2023/03/10
5910
推荐3个腾讯实用开源的GitHub项目
数字隐私全面守护:清单在手,安全无忧 | 开源专题 No.87
vulhub 是一个基于 Docker-Compose 的预构建的易受攻击环境集合,无需事先了解 Docker,只需执行两个简单命令即可获得一个易受攻击环境。 该项目具有以下关键特性和核心优势:
小柒
2024/06/11
1150
数字隐私全面守护:清单在手,安全无忧 | 开源专题 No.87
4637字,看懂从DevOps到DevSecOps的进化之路
维基百科上,DevOps(Development和Operations的组合词)是指一种重视软件开发人员(Dev)和IT运维技术人员(Ops)之间沟通合作的文化、运动或惯例。通过自动化软件交付和架构变更的流程,使构建、测试、发布软件能够更加快捷、频繁和可靠。
IT阅读排行榜
2022/01/20
7930
4637字,看懂从DevOps到DevSecOps的进化之路
快速了解DevSecOps:构建安全软件开发的基石!
「软件供应链是将“原材料”(代码)进行加工(修改、编译等)交付(分发或再分发)给用户的过程。」 「软件供应链安全指在软件设计与开发的各个阶段中来自本身的编码过程、工具、设备或供应链上游的代码、模块和服务的安全,以及软件交付渠道安全的总和。软件供应链因其复杂多样且攻击简单的特点,极易成为攻击者的攻击目标」
DevOps在路上
2023/08/29
7820
快速了解DevSecOps:构建安全软件开发的基石!
DevSecOps详解及案例分享
绝大部分的网络攻击事件都会伴随着对系统、软件当中漏洞的利用;因此,可以说软件开发者身处网络安全的斗争前线,也毫不为过。然而,现实来看,由于过去对网络安全的忽视,造成软件开发人员安全意识的缺乏,使得我们的软件中总是存在着大量的漏洞——甚至是一些极其轻易就能被利用却产生严重后果的漏洞。
DevOps持续交付
2021/05/11
5K0
从SDL到DevSecOps:腾讯云是如何更早地收敛安全漏洞的?
导语 | 随着互联网技术的不断迭代更新,信息安全领域的内涵也在不断发展,安全研发技术的地位也愈加凸显。本文作者来自腾讯安全云鼎实验室,新近参与了《研发运营一体化(DevOps)能力成熟度模型》等安全部分标准制定,此次来和大家分享他对研发安全以及DevSecOps的理解和实践尝试。 随着云计算被普遍运用,微服务等基础架构的成熟,同时企业业务高速发展带来的对开发运维更高效的要求,企业开发运维模型也从传统的瀑布模型演变到敏捷模型再到DevOps。 而安全模型也随之改变,但其核心一直都是贯穿始终以及更前置的安全。
腾讯大讲堂
2020/06/09
2.2K0
“安全需要每个工程师的参与”-DevSecOps理念及思考
多年来,软件开发以及其引发的信息安全领域总是相生相伴地持续发展。安全领域一直在适应软件研发的流程和模式,为研发出更加安全的系统保驾护航。最近几年,国内越来越多的人开始提及以及实践DevOps的研发模式。腾讯内部以腾讯CI、k8s等为代表的DevOps平台不断发展和完善,也有越来越多的业务开始尝试使用这种研发模式。伴随着DevOps在公司内的快速发展,研发安全保障的思维和技术也需要不断演化发展,其中一个重要的思想就是DevSecOps,它完全遵循DevOps的思想,将安全无缝集成到其中,使之升级成为DevSecOps。亚马逊首席技术官、副总裁Werner Vogels也在腾讯公司主办的第五届互联网安全领袖峰会(CyberSecurity Summit2019,简称CSS2019)上重点讲了DevSecOps的议题,指出“不仅仅是安全团队,所有人都应该加入到其中,我们要有将安全纳入战略思考的思维”。
腾讯安全应急响应中心
2020/05/14
1.3K0
“安全需要每个工程师的参与”-DevSecOps理念及思考
职场生存指南:颇具前景的五大编程语言
玲琅满目的编程语言,经常会让入门级开发人员身陷选择困难症。在本文中,我将从适用范围、职业道路和未来发展等方面,和您比较五种编程语言的各种特点,以方便您根据自己的兴趣,进行轻松的选择与学习。
Lemon黄
2019/11/27
1.2K0
取代C++?谷歌开源编程语言Carbon,网友评价太真实了
机器之心报道 编辑:杜伟、陈萍 目‍前,Carbon编程语言正处于实验阶段。 在编程语言的世界中,C++的地位举足轻重。在2022年5月的TIOBE编程语言排行榜中,C++位列第四。同样地,谷歌内部也在广泛使用C++。 图源:https://hellogithub.com/report/tiobe/ 不过近日,在加拿大多伦多举办的 CPP North C++大会上,谷歌工程师 Chandler Carruth宣布谷歌内部正在打造一种新的编程语言——Carbon,并将它作为C++的继任者。目前,Carb
机器之心
2022/07/26
1K0
取代C++?谷歌开源编程语言Carbon,网友评价太真实了
大咖云集腾讯DevSecOps实践研讨会,共话落地实践经验
随着研发模式的不断发展,基于DevSecOps理念的开发安全体系建设变得越来越重要,层出不穷的软件供应链安全事件也在不断的提醒我们开发安全的重要性。同时,随着人工智能大模型技术的快速发展,开发安全技术也面临着全新的机会和挑战。
开发者世界
2023/09/19
3840
DevSecOps:应当做好的十件事
本文介绍的便是《DevSecOps:初入江湖》中提到的《Gartner 2017调研报告》原文。
0xtuhao
2022/06/21
4190
DevSecOps:应当做好的十件事
专访腾讯安全副总裁董志强:我们该如何应对愈演愈烈的安全威胁?
容器技术在诞生的时候,本身并没有太多的考虑安全性,所以近些年来,随着云原生席卷全球,处于云原生计算最前沿的容器技术频频出现安全问题:2018 年,特斯拉、Weight Watchers 在内的多家公司的 Kubernetes 环境遭到攻击;2019 年,黑客利用了一个 Docker Hub 的安全漏洞导致一个企业的 19 万用户数据泄露;另一方面,Log4j 事件预示着全球企业组织正面临漏洞攻击飞速增长的空前局势,软件供应链安全威胁愈演愈烈......
深度学习与Python
2022/06/13
4490
现代编程语言哪家强?2020年,你或许应该了解这7门编程语言
如果我们把人类的现代文明看作一辆汽车,那么软件开发行业就像汽车的发动机,编程语言就像发动机的燃料。那么问题来了,你应该学哪种编程语言?
AI研习社
2020/02/12
1.3K0
周纪海:从 DevOps 到 DevSecOps 的落地实践
一般谈起 DevOps 自动化,都是先从工具来实现。工具横跨了开发周期,项目管理、CI/CD 等环节。在每一个环节里面都有比较经典的工具,很多工具大家也都用过。
腾讯云 CODING
2020/10/10
6430
周纪海:从 DevOps 到 DevSecOps 的落地实践
从 Kubernetes 安全到云原生应用安全
由于许多组织最初关注的是扫描和分析应用程序代码和基础设施以获取安全洞察力的机制,结果通常是一种反模式,其中一组复杂的重叠和松散集成的工具跨越开发和生产实际上阻碍了工程团队从解决开发过程中的安全问题。而且由于传统的安全工具是为静态环境构建的,考虑到云原生应用程序开发的动态和快速发展的性质,它们的效率通常不是太高。
用户5166556
2023/03/18
7420
从 Kubernetes 安全到云原生应用安全
RSAC解读:如何安全地使用CI_CD工具
2022年的RSA会议上,来自Coalfire的副总裁和首席战略官Dan Cornelld的议题《What Executives Need to Know about CI/CD Pipelines and Supply Chain Security》从使用CI/CD管道的安全性出发,首先向各位观众讲述了什么是CI/CD管道,并提出我们为何需要关注CI/CD使用过程中的安全风险,之后Dan Cornell面向安全从业人员以及DevSecOps实施人员讲述了使用CI/CD需要注意的安全风险,包括源代码仓库安全接入CI/CD管道可能引发的风险,引入第三方开源依赖库的风险,项目代码在构建测试、部署、打包、分发过程中面临的安全风险。最后,Dan Cornell提出了相应的安全建议并给出了未来6个月的具体DecSecOps实施计划。
绿盟科技研究通讯
2022/11/14
6770
RSAC解读:如何安全地使用CI_CD工具
从混沌到体系化——DevSecOps在腾讯云的落地实践
随着云计算被普遍运用,微服务等基础架构的成熟,同时企业对开发运维提出更高效的要求,敏捷开发运维(DevOps)这种提高研发效能,节省成本,最终更快捷实现产品交付并提示产品质量的模式被得到推广和应用。敏捷开发运维的应用,其天生的敏捷性与传统较为缓慢的安全体系的冲突给安全也带来了挑战,如何有效解决这个问题,Gartner在2012年也提出了“DevSecOps”的概念,人人为安全负责,让业务、技术和安全协同工作以生产更安全的产品。 “高速交付”结合“安全编码” DevSecOps引领新时代     Dev
云鼎实验室
2020/05/20
1.6K0
推荐阅读
相关推荐
安全左移理念,鹅厂 DevSecOps 如何实践?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档