• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      電能計(jì)量系統(tǒng)智能安全測試平臺(tái)

      2021-11-16 01:45:10伍少成姜和芳
      信息安全研究 2021年11期
      關(guān)鍵詞:安全漏洞源代碼漏洞

      劉 濤 伍少成 馬 越 趙 杰 姜和芳

      (深圳供電局有限公司 廣東深圳 518001)(1513629216@qq.com)

      隨著電力市場化交易的出現(xiàn),電能計(jì)量系統(tǒng)正從傳統(tǒng)的離線方式向在線方式轉(zhuǎn)換,系統(tǒng)新功能的不斷推送,使得系統(tǒng)的安全隱患和風(fēng)險(xiǎn)加大,一旦系統(tǒng)任何節(jié)點(diǎn)的源代碼存在安全漏洞或缺陷,導(dǎo)致電能現(xiàn)貨交易意外中斷,就會(huì)給政府和電力企業(yè)帶來不可估量的社會(huì)影響和重大經(jīng)濟(jì)損失.為了及時(shí)查找軟件代碼可能存在的安全缺陷,通常采用靜態(tài)代碼分析和動(dòng)態(tài)代碼分析[1].前者是用來發(fā)現(xiàn)程序代碼本身的安全漏洞,測試工具簡單易用;而后者需要更專業(yè)的測試工具和人員配置,才可發(fā)現(xiàn)靜態(tài)代碼如何與其他組件交互時(shí)的錯(cuò)誤.

      研究人員馬均飛和鄭文強(qiáng)[2]對(duì)代碼靜態(tài)測試評(píng)審的原則和類型進(jìn)行了較準(zhǔn)確詳細(xì)的描述,給出實(shí)際分析案例,并通過基于代碼和基于架構(gòu)的分析方法,進(jìn)一步加深對(duì)代碼安全性靜態(tài)分析的論述;賀江敏和相里朋[3]在馬均飛等人[2]研究的基礎(chǔ)上,開展了代碼安全性人工走查和靜態(tài)工具分析相結(jié)合的研究,針對(duì)目前常見的軟件安全漏洞,比如SQL注入、緩沖區(qū)溢出、資源未釋放等進(jìn)行人工走查的方式查找安全漏洞,然后,通過代碼安全性靜態(tài)分析工具對(duì)數(shù)據(jù)流、控制流和程序結(jié)構(gòu)等方面的自動(dòng)化掃描分析,再結(jié)合人工分析方法加以完善.

      不過,人工排查源代碼安全漏洞的方法需要對(duì)代碼編程有較高技術(shù)才可完成,費(fèi)用高、時(shí)間長.隨著靜態(tài)代碼自動(dòng)檢測工具的快速發(fā)展,為了達(dá)到軟件運(yùn)維人員無需具備對(duì)軟件編程和安全測試等專業(yè)知識(shí)的深入了解,就可輕松地使用專業(yè)化的自動(dòng)檢測工具,來完成軟件代碼安全漏洞的自動(dòng)、高效、準(zhǔn)確的測試,生成可視化的代碼質(zhì)量等級(jí)測試報(bào)告[4],在這方面有大量的自動(dòng)測試工具可供選擇[5-6],其中SonarQube是一種國內(nèi)外同行公認(rèn)的、最普遍采用的靜態(tài)代碼安全漏洞自動(dòng)掃描測試工具.

      SonarQube可以從7個(gè)維度制定代碼規(guī)則,對(duì)軟件源代碼進(jìn)行持續(xù)化安全漏洞檢測,從而提前捕獲和提示代碼中的錯(cuò)誤[7-8].許多學(xué)者和用戶在其代碼規(guī)則的基礎(chǔ)上已不斷擴(kuò)展了更加智能化[9-10]、可視化[11]和高精度的規(guī)則或功能,以澄清某些對(duì)SonarQube在代碼規(guī)則有效性和準(zhǔn)確性方面的質(zhì)疑[12-13],從而在源代碼庫的質(zhì)量或安全受到威脅之前,確保消除代碼安漏洞或缺陷,避免如緩沖區(qū)溢出、空指針引用、資源泄露和SQL注入等安全漏洞或缺陷,從多個(gè)方面提高代碼的安全性和可靠性.

      當(dāng)計(jì)量系統(tǒng)版本更新升級(jí)時(shí),系統(tǒng)運(yùn)維人員依靠基于SonarQube的智能安全測試平臺(tái),從版本控制數(shù)據(jù)倉庫中獲取由軟件開發(fā)團(tuán)隊(duì)提交的代碼,自動(dòng)編譯后,通過SonarQube開源接口的2次開發(fā),將代碼傳遞到該工具進(jìn)行安全漏洞自動(dòng)掃描,動(dòng)態(tài)生成Web可視化的代碼安全等級(jí)分析報(bào)告.因此,計(jì)量系統(tǒng)運(yùn)維人員依托智能安全測試平臺(tái)就可以實(shí)現(xiàn)對(duì)軟件代碼的安全漏洞測試及質(zhì)量控制.

      1 平臺(tái)架構(gòu)

      1.1 邏輯架構(gòu)

      智能安全測試平臺(tái)在邏輯上分為管理端和智能測試服務(wù)2個(gè)部分.管理端主要負(fù)責(zé)協(xié)調(diào)各服務(wù)間的數(shù)據(jù)交流及管理;服務(wù)端主要包括版本控制、漏洞掃描和系統(tǒng)管理,其中版本控制是對(duì)軟件源代碼、遠(yuǎn)程設(shè)備、設(shè)備固件、配置文件等的版本管理,漏洞掃描負(fù)責(zé)對(duì)源代碼的各種安全漏洞進(jìn)行智能自動(dòng)掃描、測試并給出安全漏洞的等級(jí),系統(tǒng)管理是根據(jù)用戶的職責(zé)賦予相應(yīng)的角色、權(quán)限以及對(duì)重要操作的審計(jì)(圖1所示).

      圖1 智能安全測試平臺(tái)邏輯架構(gòu)圖

      1.2 平臺(tái)設(shè)計(jì)思路

      智能安全測試平臺(tái)的設(shè)計(jì)是以GitLab為安全漏洞檢測入口,以SonarQube為檢測的主要工具和測試報(bào)告生成出口,智能安全測試平臺(tái)作為一個(gè)協(xié)調(diào)機(jī)制將GitLab和SonarQube關(guān)聯(lián)起來.當(dāng)軟件開發(fā)團(tuán)隊(duì)通過平臺(tái)向GitLab數(shù)據(jù)倉庫提交代碼后,由Maven對(duì)代碼進(jìn)行編譯,然后將代碼和編譯的輸出信息送給SonarQube進(jìn)行代碼安全漏洞自動(dòng)檢測.

      智能安全測試平臺(tái)將SonarQube代碼審計(jì)融入到軟件項(xiàng)目持續(xù)的版本更新升級(jí)的過程中,可以自動(dòng)生成高質(zhì)量、可視化Web頁面的安全檢測報(bào)告.

      2 功能模塊描述

      2.1 系統(tǒng)管理

      為了開展計(jì)量系統(tǒng)軟件源代碼的自動(dòng)測試任務(wù),根據(jù)軟件開發(fā)團(tuán)隊(duì)、計(jì)量系統(tǒng)維護(hù)人員、平臺(tái)系統(tǒng)管理員等用戶職責(zé)的不同,賦予不同權(quán)限,并對(duì)所有用戶使用平臺(tái)的主要行為進(jìn)行監(jiān)管.功能主要包括:

      1) 權(quán)限管理.包括角色和用戶管理.角色管理是根據(jù)用戶職責(zé)的不同,通過角色來承載不同的權(quán)限,如該角色可以操作哪些菜單或同一個(gè)界面只允許操作哪些按鈕等.用戶管理是對(duì)系統(tǒng)的操作進(jìn)行管理.

      2) 數(shù)據(jù)權(quán)限管理.通過角色向用戶分配數(shù)據(jù)權(quán)限的最小單元,如同一個(gè)界面中只能看到允許的數(shù)據(jù).

      3) 系統(tǒng)日志.記錄用戶登錄平臺(tái)、刪除、添加等關(guān)鍵操作信息.為避免日志過于龐大,影響系統(tǒng)性能,允許系統(tǒng)管理員通過日志固定周期的配置,將數(shù)據(jù)庫中記錄的日志定期分割到文件中作為備份.

      2.2 設(shè)備管理

      安全漏洞掃描工具SonarQube、版本控制系統(tǒng)GitLab、數(shù)據(jù)庫PostgreSQL等安裝在不同的服務(wù)器或虛擬機(jī)上,此模塊將對(duì)這些服務(wù)器的創(chuàng)建、修改、查詢和刪除進(jìn)行管理.

      2.3 文件管理

      在版本控制系統(tǒng)GitLab[14]數(shù)據(jù)倉庫中創(chuàng)建軟件測試項(xiàng)目、分支等目錄,并在GitLab開源接口的基礎(chǔ)上進(jìn)行Java 2次開發(fā),以滿足智能安全測試平臺(tái)與GitLab之間的信息連接,再由系統(tǒng)管理員為軟件開發(fā)團(tuán)隊(duì)創(chuàng)建1組用戶,通過此模塊將開發(fā)調(diào)試完成的源代碼上傳到GitLab指定目錄中.也可根據(jù)情況查詢、添加、修改或刪除代碼和文件.

      2.4 項(xiàng)目管理

      為了便于計(jì)量系統(tǒng)軟件對(duì)整個(gè)項(xiàng)目或重點(diǎn)分支、功能模塊的源代碼進(jìn)行漏洞掃描測試,通過此模塊在PostgreSQL數(shù)據(jù)庫NK_SONAR中建立與GitLab完全一致的項(xiàng)目及項(xiàng)目分支.具體做法是用戶只需在詳情頁面輸入項(xiàng)目名稱、項(xiàng)目唯一標(biāo)識(shí)符等必填項(xiàng),點(diǎn)擊添加按鈕后,新增的項(xiàng)目信息展示在頁面下方項(xiàng)目列表中(如圖2所示).項(xiàng)目管理默認(rèn)展示所有已錄入的項(xiàng)目信息.

      圖2 項(xiàng)目管理頁面

      2.5 漏洞掃描

      計(jì)量系統(tǒng)運(yùn)維人員通過此模塊可以從數(shù)據(jù)庫中獲取,并上傳軟件的全部或部分代碼,并由測試平臺(tái)對(duì)其代碼進(jìn)行自動(dòng)掃描,產(chǎn)生掃描結(jié)果,直接供系統(tǒng)運(yùn)維人員和軟件開發(fā)工程師們查看.

      首先,在項(xiàng)目管理模塊的項(xiàng)目名稱一欄的下拉菜單中選擇相應(yīng)的項(xiàng)目或者項(xiàng)目分支名稱,再點(diǎn)擊“待掃描文件”一欄的“選擇文件”標(biāo)識(shí)符,則從GitLab版本控制系統(tǒng)獲取要掃描的軟件并上傳,然后點(diǎn)擊“開始掃描”按鈕(如圖3所示),系統(tǒng)將要掃描文件包發(fā)送給SonarQube進(jìn)行安全漏洞掃描、測試、動(dòng)態(tài)生成漏洞等級(jí)報(bào)告等.

      圖3 漏洞掃描頁面

      3 應(yīng)用案例

      智能安全測試平臺(tái)是基于Java,SonarQube,GitLab,Maven,PostgreSQL等技術(shù)集成搭建而成的、并在Tomcat上運(yùn)行的自動(dòng)測試系統(tǒng),主要實(shí)現(xiàn)軟件編碼等文件的版本控制與智能化代碼安全漏洞掃描及測試.

      3.1 環(huán)境配置

      智能安全測試平臺(tái)在開源工具SonarQube 8.6.1基礎(chǔ)上2次開發(fā),集成了數(shù)千種智能化自動(dòng)檢測掃描和分析規(guī)則,具有自學(xué)習(xí)和自動(dòng)識(shí)別新型安全漏洞的AppSec功能,對(duì)計(jì)量系統(tǒng)靜態(tài)代碼從7個(gè)維度進(jìn)行持續(xù)化安全漏洞檢測,能夠提前捕獲和提示代碼中的錯(cuò)誤,在代碼庫的質(zhì)量或安全受到威脅之前確保消除代碼漏洞或缺陷,從多個(gè)方面提高了代碼的安全性和可靠性.以下是SonarQube的配置文件sonar.property中與數(shù)據(jù)庫相關(guān)的配置:

      sonar.jdbc.username=postgres #數(shù)據(jù)庫用戶名

      sonar.jdbc.password=*******#數(shù)據(jù)庫密碼

      sonar.jdbc.url=jdbc:PostgreSQL://ip_addr:5432/NX_SONAR# 數(shù)據(jù)庫連接URL

      sonar.web.host=*.*.*.*#IP地址

      sonar.web.port=****#端口號(hào)

      GitLab是一個(gè)開放源代碼的版本控制系統(tǒng),用于多個(gè)人共同開發(fā)同一個(gè)項(xiàng)目,以共用資源為目的,經(jīng)過在其開源接口程序基礎(chǔ)上的Java 2次開發(fā),直接通過智能安全測試平臺(tái)就可將計(jì)量系統(tǒng)的源代碼、配置文件等上傳到GitLab的數(shù)據(jù)倉庫中.PostgreSQL13.0數(shù)據(jù)庫是用于存儲(chǔ)與安全漏洞掃描、版本控制以及智能安全測試平臺(tái)相關(guān)的數(shù)據(jù)表和記錄.

      Maven 3.6是1個(gè)軟件項(xiàng)目管理工具,在Maven插件中擁有1組源代碼分析器.該分析器使用數(shù)據(jù)庫中存儲(chǔ)的配置來完成統(tǒng)一開發(fā)規(guī)范以及管理jar包.通常SonarQube依賴Maven來運(yùn)行分析,也能夠分析非Maven項(xiàng)目.

      以下是智能安全測試平臺(tái)配置文件主要部分:

      #*-----------------------------數(shù)據(jù)庫連接配置-

      db.url=jdbc:PostgreSQL://ip_addr:5432/NK_TEST

      db.username=postgres

      db.password=******

      #*-----------------------------系統(tǒng)配置--------

      app.config=classpath:/system/system-config.xml

      #----GitLab配置-------------------------------

      #登錄GitLab的token,該token在GitLab上去生成

      GitLab.token=*****************

      #GitLab服務(wù)器地址

      GitLab.url=http://ip_addr:port

      #--------SonarQube配置----------------------

      #SonarQube的登錄用戶

      sonar.login=admin

      #SonarQube的登錄密碼

      sonar.password=******

      #SonarQube的服務(wù)器地址

      sonar.url=http://ip_addr:port

      #-------Maven配置-------------------------------

      #Maven的運(yùn)行目錄

      Maven.home=/opt/Maven/

      3.2 代碼質(zhì)量閾值及規(guī)則

      根據(jù)計(jì)量系統(tǒng)各功能模塊的具體情況(新功能、關(guān)鍵應(yīng)用程序、技術(shù)庫等),在SonarQube中設(shè)置多個(gè)不同代碼質(zhì)量預(yù)警指標(biāo)的閾值或配置文件,只有滿足這些質(zhì)量閾值檢測條件才能進(jìn)入下一個(gè)流程,例如,質(zhì)量閾值可以強(qiáng)制要求所有新代碼必須包含至少80%的測試覆蓋率,或者不應(yīng)該存在安全漏洞或缺陷等,質(zhì)量閾值也可以自定義.SonarQube中針對(duì)每個(gè)項(xiàng)目或分支會(huì)通過Web頁面展示詳細(xì)的信息,給出整個(gè)項(xiàng)目或某分支當(dāng)前的健康狀態(tài)、不同級(jí)別漏洞的分類、明細(xì)等多維度的統(tǒng)計(jì)信息,便于進(jìn)行問題的追蹤和修復(fù)[15-16].

      在預(yù)先為編程語言設(shè)定的標(biāo)準(zhǔn)或規(guī)則之上,可以自定義附加的規(guī)則或賦值標(biāo)準(zhǔn),如可以給某些Java代碼規(guī)則賦予特殊的權(quán)重值,以便提高代碼安全質(zhì)量;或通過啟用或停用某些代碼規(guī)則,以調(diào)整代碼質(zhì)量等級(jí).也可以事先定義項(xiàng)目/配置文件的關(guān)聯(lián)度等,以提高代碼的安全系數(shù).

      SonarQube以插件形式集成了眾多缺陷檢測工具,伴隨著檢測工具的不斷更新升級(jí),測試平臺(tái)對(duì)代碼安全漏洞檢測的質(zhì)量將不斷提高,并且工具的更新升級(jí)不會(huì)影響到平臺(tái)代碼安全檢測的進(jìn)程.

      3.3 安全漏洞掃描

      為了驗(yàn)證智能安全測試平臺(tái)的功效,對(duì)計(jì)量系統(tǒng)的主要功能進(jìn)行代碼安全漏洞測試.被測對(duì)象主要包括智能計(jì)量主站系統(tǒng)中的遠(yuǎn)程抄表、電量統(tǒng)計(jì)、負(fù)載管理、線損統(tǒng)計(jì)、用電稽查、配電應(yīng)用、電壓合格率統(tǒng)計(jì)、客戶停電時(shí)間統(tǒng)計(jì)以及計(jì)量裝置遠(yuǎn)程巡檢等業(yè)務(wù).

      首先,計(jì)量系統(tǒng)開發(fā)團(tuán)隊(duì)完成軟件集成后,通過測試平臺(tái)賦予的用戶權(quán)限,登錄智能安全測試平臺(tái)的文件管理模塊,將源代碼和相關(guān)的配置文件上傳到GitLab代碼數(shù)據(jù)倉庫中.

      在計(jì)量系統(tǒng)版本更新升級(jí)前,為了確保新版本編碼無安全漏洞,系統(tǒng)運(yùn)維人員只需通過測試平臺(tái)的漏洞掃描模塊選擇事先創(chuàng)建的項(xiàng)目或項(xiàng)目分支,再從Gitlab獲取要進(jìn)行安全漏洞掃描的代碼,點(diǎn)擊開始掃描,則通過測試工具SonarQube的開源接口,執(zhí)行自動(dòng)掃描測試任務(wù)的操作,具體步驟如下:

      1) 基于漏洞掃描測試工具SonarQube的開源接口程序的Java技術(shù)2次開發(fā),實(shí)現(xiàn)智能安全測試平臺(tái)與SonarQube之間的通信,將漏洞掃描所需的程序代碼等傳遞到測試服務(wù)器上;

      2) 此時(shí),智能安全測試平臺(tái)的漏洞掃描頁面的下方自動(dòng)顯示1條漏洞掃描記錄,并且,其掃描狀態(tài)為“正在掃描”;

      3) 通過Java程序調(diào)取SonarQube的可運(yùn)行指令,執(zhí)行軟件代碼掃描測試命令,系統(tǒng)由事先定義的令牌代替用戶名密碼,自動(dòng)登錄SonarQube軟件,實(shí)施代碼安全漏洞全自動(dòng)掃描測試任務(wù);

      4) 掃描測試成功后,漏洞掃描頁面的下方漏洞掃描記錄的狀態(tài)改為“掃描完成”,同時(shí),自動(dòng)生成本次任務(wù)的代碼安全漏洞等級(jí)測試報(bào)告;

      5) 點(diǎn)擊該記錄的掃描狀態(tài),則彈出“掃描日志”標(biāo)簽;

      6) 為查看安全漏洞掃描結(jié)果詳情,點(diǎn)擊漏洞掃描日志內(nèi)容左上角的“查看掃描分析”,系統(tǒng)將自動(dòng)連接并登錄SonarQube軟件,顯示安全漏洞掃描的詳細(xì)測試報(bào)告(如圖4所示);

      圖4 自動(dòng)測試報(bào)告顯示

      7) 系統(tǒng)運(yùn)維人員根據(jù)測試報(bào)告給出的結(jié)果,判斷軟件是否需要進(jìn)一步的改進(jìn):如果顯示存在安全漏洞或缺陷,將通過電子郵件等方式告知軟件開發(fā)團(tuán)隊(duì),進(jìn)行修改后提交到GitLab編碼庫中,系統(tǒng)運(yùn)維人員只需重復(fù)上述步驟,進(jìn)行回歸測試,直到軟件所有代碼的安全測試都滿足測試規(guī)則要求為止.

      這樣,當(dāng)計(jì)量系統(tǒng)版本更新升級(jí)時(shí),系統(tǒng)運(yùn)維人員只需具備對(duì)測試工具的使用和操作的基本了解,就可隨時(shí)登錄智能安全測試平臺(tái),選擇項(xiàng)目或項(xiàng)目分支,上傳相應(yīng)的源代碼,就可完成對(duì)計(jì)量系統(tǒng)代碼高效、全自動(dòng)的安全漏洞掃描測試,從而有效地控制計(jì)量系統(tǒng)代碼的安全漏洞和質(zhì)量.

      4 結(jié) 論

      基于智能安全測試平臺(tái),計(jì)量系統(tǒng)運(yùn)維人員無需具備專業(yè)軟件測試技能,就可通過由GitLab開源接口的Java 2次開發(fā)程序,直接從其數(shù)據(jù)倉庫中調(diào)取軟件開發(fā)團(tuán)隊(duì)提交的代碼,采用“一鍵式”方式,通過SonarQube開源接口的2次開發(fā)程序,將代碼傳遞到SonarQube上,動(dòng)態(tài)地生成測試指令,完成代碼的自動(dòng)漏洞掃描、測試,生成可視化的安全漏洞測試報(bào)告.基于測試報(bào)告分析,系統(tǒng)運(yùn)維人員可以判斷計(jì)量系統(tǒng)是否存在致命安全漏洞或缺陷,以決定是否允許計(jì)量系統(tǒng)進(jìn)行版本的更新升級(jí).這樣既提高了計(jì)量系統(tǒng)代碼安全漏洞及缺陷的質(zhì)量控制,又減少人力測試和設(shè)備資源的開支,大大提高了電力企業(yè)管理水平和工作效率.

      猜你喜歡
      安全漏洞源代碼漏洞
      人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
      漏洞
      基于TXL的源代碼插樁技術(shù)研究
      安全漏洞太大亞馬遜、沃爾瑪和Target緊急下架這種玩具
      玩具世界(2018年6期)2018-08-31 02:36:26
      軟件源代碼非公知性司法鑒定方法探析
      基于安全漏洞掃描的校園網(wǎng)告警系統(tǒng)的開發(fā)與設(shè)計(jì)
      三明:“兩票制”堵住加價(jià)漏洞
      漏洞在哪兒
      揭秘龍湖產(chǎn)品“源代碼”
      高鐵急救應(yīng)補(bǔ)齊三漏洞
      台前县| 镇巴县| 崇仁县| 兴海县| 新巴尔虎左旗| 临夏市| 浦东新区| 酒泉市| 郸城县| 宝鸡市| 任丘市| 双城市| 达日县| 漾濞| 永平县| 鸡西市| 霍邱县| 大足县| 珲春市| 彩票| 内丘县| 桦甸市| 东兴市| 高安市| 定西市| 福贡县| 自治县| 广河县| 晴隆县| 新田县| 庆元县| 武威市| 佳木斯市| 鹿泉市| 米林县| 新宁县| 凤城市| 清水县| 牡丹江市| 杂多县| 民和|