騰訊代碼安全指南開源,涉及C/C++、Go等六門編程語言

圖片

騰訊代碼安全指南旨在梳理API層面的風險點並提供詳實可操做的編碼指引,是騰訊在開展DevSecOps安全左移實踐探索過程當中,梳理沉澱面向開發人員的代碼安全參考材料。javascript

本次開源涉及C/C++、JavaScript、Node、Go、Java、Python六門編程語言的安全指南。前端

項目主頁:java

https://github.com/Tencent/se...git

項目背景github

近年來,不管是DevSecOps,仍是Google SRE的可靠和安全性理念,都提倡「安全須要每一個工程師的參與」。其中涉及的「安全左移」理念也再次被推向前臺,得到關注。編程

除安全團隊建設一系列安全機制和工具外,每位開發者也能夠身體力行地參與進來——編寫安全的代碼,從源頭杜絕漏洞。c#

基於此,騰訊各BG安全團隊和熱心開發人員,從業務角度梳理了代碼安全指南。它提供了詳實的參考材料和行動大綱,分功能、語言整理了編碼的最佳安全實踐,可做爲一線開發者的權威參考,有助於開發黑、白盒漏洞掃描工具和策略。後端

設計理念安全

代碼安全指南的內容呈樹狀結構展開,共分5層,以下:框架

圖片

2.1 語言

每種語言面臨安全的風險種類不一樣,須要分別開展詳述。如:go和javascript對比,go就不存在原型鏈污染的問題。同時,因爲公司內的代碼風格規範亦分語言展開,安全規範採起相同的分語言方式能保持總體的連貫性。

2.2 端

這裏的端是指不一樣的終端,如:Web、安卓客戶端、iOS客戶端、PC客戶端。實踐過程當中,將內容按端區分的緣由有:

一、同一門編程語言,用在不一樣的終端應用開發,其面臨的風險類型和數量有着天壤之別。

例如:

JavaScript應用於前端頁面開發時,面臨的主要風險是DOM XSS;但JavaScript亦可依託Node.js進行Web後端接口開發,若是編碼不當,則存在命令注入、SQL注入等風險。

二、大型互聯網公司內,項目開發採起「流水線」化做業,分工每每精細明確,將不一樣端的場景做爲主幹目錄,更便於開發人員檢索、快速瞭解編碼安全知識。

2.3 場景

經過覆盤歷史漏洞,安全風險可按成因粗略歸爲兩類:

一、代碼漏洞

指代碼編寫時,因不安全的API使用和邏輯編寫產生的安全風險。

二、運維漏洞

指代碼的運行環境、配置和依賴等系統運維相關的問題。如騰訊藍軍分享的《淺析軟件供應鏈攻擊之包搶注低成本釣魚》一文,涉及的安全風險本質上是

部分語言依賴包管理,當部分企業私有軟件包僅在公司內部軟件源註冊時,攻擊者就能夠在外部公共軟件源上搶注。

若是公司內員工使用包管理軟件拉取時,未配置公司鏡像源時,就會拉取到攻擊者搶注的惡意包。

2.4 功能

在對內、外部發現的漏洞進行復盤過程當中,咱們發現安全風險與業務場景高度相關,例如:

圖片

因爲代碼安全指南的目標受衆是開發人員看的。在撰寫指南過程當中,咱們嘗試將漏洞轉化爲功能場景,以此做爲主幹目錄。

因爲與具體的業務場景關聯,在開發時能更容易想起相關的注意事項,由此可下降認知、學習成本。

2.5 內容

指南內容核心圍繞編程語言和框架的API/sink點展開。對開發人員來講,API是實現業務邏輯時,高頻接觸對象。

而一般,安全漏洞每每可歸由於API的錯誤使用。對安全工程師來講,sink點是編寫安全策略、組件是很是重要的一部分,直接決定了安全系統的掃描能力。

編寫代碼安全指引時,採起了如下方法來提高內容的完善性:

一、聚合各語言、組件、框架文檔中的最佳安全實踐;

二、充分調研CWE、OWASP等現有規範,採用更方便開發者記憶的編排和闡述方式;

三、編碼模式基於豐富的公司內外已知漏洞案例,不斷補充先前未考慮到的風險規避建議;

四、觸類旁通,結合各種開發文檔和提煉的漏洞產生緣由,挖掘鮮有說起的風險點加入規範中。

原文連接:騰訊代碼安全指南開源,涉及C/C++、Go等六門編程語言

相關文章
相關標籤/搜索