內容來源:OPPO安全應急響應中心 子午安全實驗室
作者:瀋海濤
前言
伴隨著移動網際網路技術的高速發展,如何保障產品的安全與隱私合規成為了一個嚴峻的挑戰。尤其是在產品複雜度高、更新迭代快的現狀下,如何應對挑戰,已經成為了企業發展必須要慎重考慮的問題。以OPPO為例,OPPO僅ColorOS全球月活使用者數就達到了3.7億+。產品形態覆蓋 Web APP、Android APP、 iOS APP、快應用、SDK、IoT等,日變更1000+次。本文將以OPPO安全應對行業挑戰所作出的實踐為例,重點介紹OPPO網際網路DevSecOps實踐,更準確的說是從傳統SDL到DevSecOps轉型的實踐。
不能免俗,先放概覽
本文將從以下幾個方面展開:安全活動融入研發流程、安全防護平臺建設、安全文化建設、外部合作以及持續精進。
一、安全活動融入研發流程
安全與隱私合規是企業存續發展的基石之一。基於DevSecOps的原則,安全活動需要貫穿研發流程的每一個環節,使安全與隱私合規成為各團隊的共同責任。在現有的研發流程中,子午實驗室開發了安全與隱私評測系統,並將安全活動融入到研發流程的不同階段中,覆蓋業務的大版本及涉及到安全與隱私重大變更的小版本。
1.1 制定流程規則
首先要解決的是融入研發流程的規則問題,以及如何進行卡點管控。我們一般會將產品的生命週期分為產品需求、架構設計、編碼實現、測試、釋出、運營等幾個階段。
在DevSecOps實施初期或者安全團隊組建的初期,想要覆蓋產品的全部生命週期是很困難的,這個階段需要解決面的問題,抓大放小,因此會選取一些關鍵的節點進行管控。
我們選取了三個強流程進行卡點:產品需求階段進行隱私合規評審,產品釋出前進行安全測試&隱私合規測試,這樣基本上保障了產品的安全與隱私的基線要求。如下圖所示:
之所以選取隱私合規評審作為強流程卡點是由於業務形態所致,OPPO是一家全球化的公司,產品和服務覆蓋全球幾十個國家和地區,面臨巨大的隱私合規挑戰,比如歐盟區域的 GDPR等。
隱私合規評審可以在產品設計需求階段就滿足合規要求,避免上線前檢測不合規造成的業務返工及大量的改造成本。同時我們還在上線前進行了安全測試和隱私合規測試來強卡點,業務必須滿足安全與隱私質量標準才能夠上線。
另外在流程規則中要考慮介入的深度和範圍。深度越深,範圍越大意味著安全的工作量越大,業務的感知越強烈,對業務效率的影響也會越大。目前我們的策略是,安全流程強制覆蓋新業務或者老業務的大版本,其他的版本由業務架構師根據我們的指引(checklist)進行自評,由業務自行判定是否走安全流程,這樣既保證了能夠消除大部分風險,又兼顧了業務效率。
1.2 IT系統支撐
流程有了,接下來就是要保障流程能夠順利落地執行,靠人來跟進無論是在覆蓋度上,還是效率上都是不靠譜的,於是我們構建了DevSecOps的IT支撐系統,即將安全流程融入到 CI/CD 系統中。
如下圖所示,我們將安全活動融入到CI/CD流水線中,以後端流水線為例,在構建階段會進行原始碼安全掃描,在部署測試整合階段會進行後端動態安全掃描(IAST),上線之前會進行安全評測,包括安全測試和隱私合規測試。而且這個流水線是可編輯和配置的,後續可以按需加入更多的自動化掃描或者其他安全活動。
同時,開發進入CI系統時候,會自動檢測當前的開發是否進行過需求評審,如果沒有的話會進行提示。在安全測試和隱私合規測試階段會檢測是否進行過需求評審,如果沒有的話則無法提測。
我們開展的需求評審可以認為是輕量級的威脅建模,透過詳盡的引導式提示做到業務自助式操作,極大減輕了安全的溝通工作量。
而評審系統裡面的檢查項是抽取了《安全&隱私標準規範》中的部分重點內容,主要的標準規範如下:
1.3 自動化能力構建
在DevSecOps 中純粹靠堆人力是很難適應DevOps的快節奏的,自動化能力構建是必經之路。子午實驗室在以下幾方面構建了自動化能力,大部分自動化能力已經融入到了CI/CD流程中:
- 靜態原始碼掃描(SAST)
- 後端動態自動安全測試(IAST)
- 開源元件黑名單檢測(SCA)
- 安卓APP靜態安全與隱私合規掃描
- 安卓APP動態安全與隱私掃描
- 安卓SDK特徵掃描
… …
靜態原始碼掃描(SAST):檢測能力覆蓋主流的開發語言,目前支援商業與自研的多個掃描引擎,並支援增量掃描,後續會支援IDE外掛形式掃描。
後端動態自動安全測試(IAST):覆蓋OPPO主流的後端開發語言,融入測試階段,在做功能測試的同時完成安全掃描,極大提升了效率。
開源元件黑名單檢測(SCA):融入到CI系統的構建流程,黑名單由子午的安全攻防人員維護,業務程式碼構建階段如果命中規則需要修復之後才能夠成功構建。
安卓APP靜態安全與隱私合規掃描系統:能夠同時進行安全漏洞掃描、安全編碼規範及隱私合規檢測的掃描。目前主要提供給安全及隱私測試人員使用,後續會考慮推廣給研發及測試人員使用或者融入到CI/CD中。
安卓APP動態安全與隱私掃描:主要覆蓋靜態檢測無法無蓋的場景,比如提前聯網、檢測加固應用的行為等,目前處於內測階段。
安卓SDK特徵掃描:會掃描APP中使用到的SDK名稱、版本、允許上線區域、歷史漏洞等資訊,目前處於內測階段,後續會融入到研發流程中。
二、基礎安全防護產品及服務
在業務的生命週期中,是離不開基礎安全防護的,我們在主機層、網路層、應用層等提供了多維度的安全檢測、防護產品和服務,保障OPPO的基礎安全。
- 主機層:主機入侵檢測(哨兵)、態勢感知(諦聽);
- 網路層:安全閘道器(雲盾)、流量檢測系統(鷹眼)、動態防火牆、DDoS防護系統(金堤);
- 應用層:秘鑰管理服務、業務風控(天御)、驗證碼服務、安全元件(OSK)。
三、安全文化建設
DevSecOps 中需要明確,安全與隱私不再單獨是安全團隊的責任,而應該是產品、開發、安全、運維等協同合作共同負責,以期達到“上線前安全賦能業務,上線後業務支援安全”的局面,為此我們做了以下的工作:
- 成立了公司級的安全與隱私委員會,將業務部門的負責人納入其中,在組織制度上保障安全與隱私策略的推動實施。
- 建立了安全與隱私合規代表制度,安全與隱私合規代表由業務部門專人擔任,確保安全與隱私要求在部門落地。
- 將安全與隱私寫入網際網路產品觀:“發自內心的尊重使用者的隱私與安全,而不僅僅是因為法律的約束”。
- 常態化的培訓賦能。一方面,對主管層開展“安全與隱私合規應知應會”培訓。另一方面,定期開展安全與隱私知識宣導。透過培訓、內部發文等形式開展安全與隱私知識培訓。
四、外部合作
安全是一項體系化工作,我們積極保持與業界的聯絡,引入業界先進安全能力,同時也希望能夠為安全界做一些貢獻:
- 成立了 OPPO安全應急響應中心(OSRC) ,並與多個漏洞提交平臺合作,與全球安全研究者一起守護OPPO使用者的安全。
- 積極與高校和業界安全廠商合作,透過聯合實驗室、專案合作、產學研等方式在部分重點技術領域上進行攻關與合作。
- 積極參與安全與隱私領域權威認證,檢驗成果。目前已經透過TrustArc、eprivacy、ISO/IEC 27018:2014、ISO/IEC 29151:2017、ISO/IEC 27001:2013、CSA Star、泰爾資訊保安五級認證、等保三級、ISO/IEC 27701:2019等認證。同時我們還透過其他測評機構來評估DevSecOps的成熟度,以便改進。
- 在安全研究過程中,提報安卓系統、Netty、RocketMQ、Chrome、Safari、等多個安全問題,並獲得廠商公開致謝及CVE。
- 參與 DIMVA 、ISC 等多個安全會議並做分享,開展多次校園行安全分享交流活動。
五、持續精進
目前,OPPO網際網路已經初步建立起了 DevSecOps 體系,但還處於起步階段,還有很多工作需要做。
5.1 自動化能力更加完善
自動化能力主要體現在安全與隱私問題消除率和業務效率影響兩個方面。問題消除率越高,業務效率影響越小我們認為自動化的能力越強。
可以從以下幾個方面入手:
- 持續最佳化檢測方法和規則,降低誤報率和漏報率;自動化能力要覆蓋關鍵的流程;持續最佳化自動化的使用者體驗。
- 持續關注業界技術動態,及時覆蓋新的漏洞模型,引入新的檢測技術或方法,覆蓋更多的產品形態;
- 持續運營自動化工具,在業務使用過程中最佳化檢測規則;
- 逐步將 Docker 安全掃描作為強流程管控,覆蓋安全基線掃描;
- 提早暴露安全風險,將安全掃描整合到IDE開發環境中,將安全掃描工具使用賦能給開發及測試,甚至將安全與隱私測試融入到功能測試中。
5.2 基礎設施即安全,預設安全原則
打造安全的基礎設施,並採取預設安全配置的原則,讓業務只關心業務層面的安全與隱私。
- 保障基礎開發框架的安全;
- 將安全庫整合到開發框架中,並預設配置;
- 提供預設安全的映象、作業系統、中介軟體;
- 提供預設安全的通用元件,比如封裝WebView安全元件;
- 將安全檢測及監控能力融入到基礎設施中。
5.3 持續開展安全文化建設
持續打造業務、安全、運維協同開展安全與隱私合規工作的文化氛圍:
- 安全團隊持續關注業界安全與隱私技術及趨勢,消化吸收,轉化為內部能力;
- 持續將安全與隱私合規能力賦能給產品、開發、測試及運維人員;
- 逐步將安全與隱私合規測試人工流程轉化為自動化流程;
- 將大部分的安全與隱私檢測項工具化,並推廣給開發和測試人員使用;
- 透過“安全藍軍”來覆蓋自動化工具無法覆蓋的部分。
最終形成安全團隊承擔諮詢、洞察、藍軍、能力輸出等角色,業務、測試及運維等透過安全的持續賦能,達到主動保障業務安全與隱私,形成“上線前安全賦能業務,上線後業務支援安全”的局面,建立一個良性迴圈。
回顧OPPO安全在DevSecOps 實踐過程中所遇到的挑戰,可以再次肯定,安全不是某一部門的責任,更不是在開發後期引入就可以解決問題的。在DevSecOps 體系框架下,安全防護需要貫穿業務整個生命週期的每一個環節。
面對萬物互融的浪潮,雲計算、大資料及人工智慧等核心技術的發展,在帶動科技發展的同時,必將給安全帶來極大的挑戰,如何保證業務高效、穩定、安全的發展,將是我們需要共同思考及長期實踐的問題。OPPO安全將秉持對使用者高度負責的態度,在安全與隱私的道路上持續耕耘,成為有擔當的安全團隊。