<strike id="ca4is"><em id="ca4is"></em></strike>
  • <sup id="ca4is"></sup>
    • <s id="ca4is"><em id="ca4is"></em></s>
      <option id="ca4is"><cite id="ca4is"></cite></option>
    • 二維碼
      企資網(wǎng)

      掃一掃關(guān)注

      當(dāng)前位置: 首頁 » 企業(yè)資訊 » 熱點 » 正文

      40_高風(fēng)險漏洞_GitHub_Copilo

      放大字體  縮小字體 發(fā)布日期:2021-09-08 00:13:14    作者:企資小編    瀏覽次數(shù):123
      導(dǎo)讀

      來源:arXiv編輯:LRS【新智元導(dǎo)讀】garbage in, garbage out耳熟能詳,如果你寫的開源代碼被輸入到了代碼生成工具Copilot中,會不會影響它的生成性能呢?紐約大學(xué)的研究員最近發(fā)現(xiàn),Copilot生成的代碼有超過40%都含

      來源:arXiv

      編輯:LRS

      【新智元導(dǎo)讀】garbage in, garbage out耳熟能詳,如果你寫的開源代碼被輸入到了代碼生成工具Copilot中,會不會影響它的生成性能呢?紐約大學(xué)的研究員最近發(fā)現(xiàn),Copilot生成的代碼有超過40%都含有高危漏洞,究其原因竟然是GitHub提供的源代碼自帶漏洞!


      隨著AI技術(shù)的不斷進(jìn)步,程序員們好像不止想取代傳統(tǒng)行業(yè)的人,而且還在積極思考如何取代自己,AI研究員們對「代碼自動生成」更情有獨鐘。


      結(jié)對編程(Pair programming)是一種敏捷軟件開發(fā)的方法,兩個程序員在一個計算機(jī)上共同工作。一個人輸入代碼,而另一個人審查他輸入的每一行代碼。



      輸入代碼的人稱作駕駛員,審查代碼的人稱作觀察員(或?qū)Ш絾T),兩個程序員經(jīng)常互換角色。


      審查代碼的人有時候也扮演「小黃鴨」,作用是聽著駕駛員耐心地向自己解釋每一行程序的作用,不用說話就可以激發(fā)駕駛員的靈感,還有助于發(fā)現(xiàn)bug。



      如果觀察員是一個AI,想象有一個AI助手和你一起結(jié)對編程是一種什么感覺?


      今年六月,OpenAI 就和 GitHub 聯(lián)手發(fā)布了一個新工具 GitHub Copilot,一時風(fēng)頭無兩,只要寫下注釋,后面的代碼內(nèi)容基本都能預(yù)測正確,尤其對于寫utils之類的函數(shù)來說實在是太方便。



      但后來GitHub Copilot又卷入各種倫理風(fēng)波中,有人認(rèn)為他這是背誦代碼,也有人認(rèn)為可能會讓使用者無意中抄襲了其他程序員的勞動成果,最關(guān)鍵的是,GitHub Copilot收費,網(wǎng)友認(rèn)為你既然用的開源代碼訓(xùn)練的模型,怎么能收費呢?



      除了上述問題不談,Copilot的安全性又怎么樣?能不能生產(chǎn)出讓人民放心、讓百姓安心的好代碼?


      對此,來自紐約大學(xué)的研究員們最近發(fā)表了一篇論文,系統(tǒng)地對Copilot進(jìn)行實驗,通過為Copilot設(shè)計要完成的場景,并通過分析生成的代碼的安全弱點來深入了解這些問題。


      論文地址:arxiv.org/pdf/2108.09293v2.pdf


      garbage in, garbage out?


      代碼的質(zhì)量由許多因素決定,但代碼生成(code generation)更強(qiáng)調(diào)功能的正確性,這點通過能否正常編譯和單元測試來衡量質(zhì)量,或者使用文本相似性度量來衡量與預(yù)期的代碼之間的差距。


      與生成代碼的功能正確性度量不同,評估Copilot提供的代碼的安全性是一個開放的問題,并沒有特定的解決方法。


      除了由人工進(jìn)行手動評估外,還可以用其他工具和技術(shù)可以對軟件進(jìn)行安全分析,例如源代碼分析工具、靜態(tài)應(yīng)用程序安全測試(Static Application Security Testing, SAST)工具,都能夠發(fā)現(xiàn)代碼的安全缺陷,并且可以用于識別特定類型的漏洞。


      使用Copilot時,當(dāng)用戶向程序添加一行代碼后,Copilot會連續(xù)掃描程序,并定期上傳一些代碼、光標(biāo)的位置和代碼的元數(shù)據(jù),然后再根據(jù)這些特征生成一些候選代碼選項供用戶插入。


      Copilot能夠生成與程序功能相關(guān)的代碼,例如注釋、docstring、函數(shù)名等,Copilot還能夠為每個候選代碼的置信度進(jìn)行評分。



      了解如何使用Copilot后,需要定義問題:如果一段代碼包含了CWE中展示的特點,那么這段代碼就是有漏洞的(vulnerable)。


      CWE(Common Weakness Enumeration,通用缺陷枚舉)成立于2006年,是由美國國土安全部國家計算機(jī)安全部門資助的軟件安全戰(zhàn)略性項目,是常見的源代碼漏洞詞典庫和通用標(biāo)準(zhǔn)。



      使用Github CodeQL來分析靜態(tài)代碼。上圖中的代碼是使用Copilot的top scoring選項來構(gòu)建一段代碼程序,使用CodeQL的python-security-and-quality.qls測試套件中檢查153個安全屬性,可以發(fā)現(xiàn)報告SQL查詢生成方法有漏洞(第14-16行),可能允許用戶插入惡意SQL代碼,在CWE的術(shù)語中是CWE-89(SQL注入)。



      隨后研究人員通過引導(dǎo)Copilot生成2021 CWE Top 25 相關(guān)的漏洞進(jìn)行實驗。首先對每個CWE漏洞,寫下多個相關(guān)的代碼提示(CWE scenarios),然后把這些這些不完整的代碼片段輸入到Copilot中生成代碼。



      為了簡化實驗過程,主要對Python, C和Verilog這三種語言進(jìn)行試驗。CodeQL能夠很完善地Python和C的代碼檢測,選擇Verilog的原因是測試Copilot對于非明星語言的代碼生成能力。


      每個代碼片段,Copilot都要生成25個補(bǔ)全代碼,然后,將每個候選代碼與原始程序片段組合成為完整的代碼,如果某些選項存在重大語法問題,即無法編譯/解析,則會丟棄4b中的某些候選代碼。如果簡單的編輯操作(例如添加或刪除單個大括號)就能夠可編譯的輸出結(jié)果,那就可以基于正則表達(dá)式的工具自動進(jìn)行這些更改。


      在5a步,使用CodeQL內(nèi)置的查詢對每個程序進(jìn)行評估,對于一些需要額外代碼上下文或無法形成CodeQL可檢查屬性的CWE,需要由人工手動執(zhí)行5c。在這一步中,CodeQL被配置為只檢查特定CWE,并且不評估正確性,只評估漏洞。


      第6步中輸出評估結(jié)果。


      論文中對25個CWE漏洞都有詳細(xì)的實驗描述,感興趣的小伙伴可以戳原文。



      40.48%都是BUG


      實驗結(jié)果總的來說不太理想。


      從安全的角度來看,Copilot生成的代碼中有大量的漏洞,大概比例為40.48%。由于Copilot的訓(xùn)練數(shù)據(jù)來自GitHub上可用的開源代碼的訓(xùn)練,所以一定程度上認(rèn)為這個安全質(zhì)量評價也同樣適用于GitHub中的代碼。


      也就是說,當(dāng)某些bug在開源存儲庫中經(jīng)常出現(xiàn)時,這些bug也更容易被Copilot生成出來。話雖如此,但也不應(yīng)該對GitHub上存儲的開源存儲庫的安全質(zhì)量輕易下結(jié)論。


      開源軟件的另一個需要考慮安全質(zhì)量的方面是時間的影響。隨著網(wǎng)絡(luò)安全形勢的發(fā)展,某些文章所說的最佳實踐(best practice)可能會慢慢變成反面教材,過時實踐可能會永久地存在于訓(xùn)練數(shù)據(jù)中,并導(dǎo)致生成的代碼也是不可靠的。


      一個明顯的例子是密碼散列的DOW CWE-522方案,不久前MD5被認(rèn)為是安全的,SHA-256被認(rèn)為是安全的,但現(xiàn)在的最佳實踐仍然要么涉及多輪簡單的散列函數(shù),要么使用像bcrypt一樣上了年紀(jì)的加密庫(優(yōu)雅,但也老了)。



      未維護(hù)和遺留代碼也使用不安全的散列方式,Copilot從這些代碼中學(xué)習(xí),所以也會對程序員繼續(xù)建議使用這些散列方法。


      最后研究人員還是贊揚(yáng)了Copilot,這樣的次時代AutoComplete工具將提高軟件開發(fā)人員的生產(chǎn)率,但使用Copilot作為結(jié)對編程的副駕駛時,開發(fā)人員應(yīng)該保持警惕。


      在理想情況下,在訓(xùn)練和生成過程中,Copilot應(yīng)該與安全工具相配合,將引入安全漏洞的風(fēng)險降至最低。



      參考資料:

      arxiv.org/pdf/2108.09293v2.pdf

       
      (文/企資小編)
      免責(zé)聲明
      本文僅代表作發(fā)布者:企資小編個人觀點,本站未對其內(nèi)容進(jìn)行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請及時聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
       

      Copyright ? 2016 - 2025 - 企資網(wǎng) 48903.COM All Rights Reserved 粵公網(wǎng)安備 44030702000589號

      粵ICP備16078936號

      微信

      關(guān)注
      微信

      微信二維碼

      WAP二維碼

      客服

      聯(lián)系
      客服

      聯(lián)系客服:

      在線QQ: 303377504

      客服電話: 020-82301567

      E_mail郵箱: weilaitui@qq.com

      微信公眾號: weishitui

      客服001 客服002 客服003

      工作時間:

      周一至周五: 09:00 - 18:00

      反饋

      用戶
      反饋

      午夜久久久久久网站,99久久www免费,欧美日本日韩aⅴ在线视频,东京干手机福利视频
        <strike id="ca4is"><em id="ca4is"></em></strike>
      • <sup id="ca4is"></sup>
        • <s id="ca4is"><em id="ca4is"></em></s>
          <option id="ca4is"><cite id="ca4is"></cite></option>
        • 主站蜘蛛池模板: 久久精品国产成人AV| 国产福利第一视频| 制服丝袜电影在线观看| 国产精品免费无遮挡无码永久视频| 国产乱子经典视频在线观看| 久久综合狠狠色综合伊人| 人人干人人干人人干| 最近高清中文在线字幕在线观看| 无码喷水一区二区浪潮AV| 国产午夜无码精品免费看动漫| 久久人人爽人人爽人人片av高请 | 韩国一级淫片漂亮老师| 激情综合色综合啪啪开心| 天堂√最新版中文在线| 亚洲视频一区二区三区四区| 中文字幕第315页| 福利视频导航大全| 欧美一级大片在线观看| 国产激情视频在线播放| 亚洲成年人电影在线观看| 3d动漫h在线观看| 热99re久久精品天堂vr| 国产资源在线视频| 亚洲s色大片在线观看| 91精品久久久| 波多野结衣制服诱惑| 性xxxxx欧美极品少妇| 免费日产乱码卡一卡| 97一区二区三区四区久久| 欧美怡红院免费全部视频| 国产成人欧美一区二区三区 | 在线视频一区二区三区| 亚洲欧美国产免费综合视频| www.羞羞视频| 日本三级欧美三级| 全黄a免费一级毛片人人爱| 99久久精品免费看国产一区二区三区 | 免费超爽大片黄| 999福利视频| 日韩视频在线观看一区二区| 国产精品18久久久久久麻辣|