《A1--管占明--LLM與安全風險治理 - 端到端解決校驗缺失風險代碼.pdf》由會員分享,可在線閱讀,更多相關《A1--管占明--LLM與安全風險治理 - 端到端解決校驗缺失風險代碼.pdf(41頁珍藏版)》請在三個皮匠報告上搜索。
1、LLMLLM與安全風險治理與安全風險治理-端到端解決端到端解決校驗校驗缺失風險代碼缺失風險代碼管占明管占明字節跳動-代碼智能團隊目錄目錄CONTENTS安全風險治理的挑戰與LLM機遇1 基于LLM的風險代碼識別與修復2 實驗結果與分析3 投產效果&局限性4 總結 5 0101安全風險治理的挑戰安全風險治理的挑戰與與LLMLLM機遇機遇01治理成本治理成本02檢測檢測效果效果安全風險治理的挑戰安全風險治理的挑戰治理風險代碼成本高傳統方法難以從語義層面理解業務場景,檢測效果有限如何比攻擊者先行一步如何比攻擊者先行一步木桶理論讓“攻守效率”不平等,使用相同的方法無法實現目標需求編碼編譯測試上線治理左
2、移1、風險治理時機左移:盡早解決風險2、AI for 安全:“泛化能力”、“檢測未知風險”AI Detection風險形成邏輯:風險代碼與漏洞風險形成邏輯:風險代碼與漏洞安全風險其實是一個過程過程而非瞬時狀態,暨多層脆弱性構成的因果鏈路最終導致了危害的發生缺失校驗(風險代碼)越權漏洞(漏洞)左移的核心是解決更深層成因讓治理風險更高效早晚治理深層風險代碼的成本治理深層風險代碼的成本現有面向漏洞的修復流程成現有面向漏洞的修復流程成本高昂本高昂漏洞讓“修復”與“發現”兩部分割裂割裂風險代碼實例數風險代碼實例數 漏洞數漏洞數風險代碼是漏洞的必要條件難以壓縮難以壓縮:解決時機前移、確認“可利用性”和“危
3、害”難度大修復成本修復成本成為瓶頸成為瓶頸漏洞工單安全人員確認業務確認復測解決及時且自動的修復風險來降低成本及時且自動的修復風險來降低成本關鍵挑戰關鍵挑戰:理解:理解業務業務業務場景定義了安全風險成因與危害,以校驗缺失風險代碼為例從業務代碼中識別校驗需求業務場景類型、函數功能語義變量結構定義、上下文函數定義支撐校驗的Common Sense/客觀關系知識值域/類型/模式校驗需求理解歷史上不同校驗需求對應的實現方式交易、評論、訂單、UG組件、中間件、自定義代碼、三方函數理解業務邏輯和歷史實現方式理解業務邏輯和歷史實現方式MotivationMotivation:通過通過LLMLLM端到端解決風險
4、代碼端到端解決風險代碼理解業務邏輯理解業務邏輯和歷史實現方式和歷史實現方式LLM的代碼理解和分析能力LLM模型本身掌握通用的代碼語法、文本語義分析、甚至是簡單數據流分析,同時具備多種代碼理代碼理解能力解能力從風險代碼更加從風險代碼更加高效治理風險高效治理風險LLM對校驗需求推斷能力LLM涌現的邏輯演繹推理能力,可結合歷史代碼從代碼語義、注釋語義、數據流等多角度信息合理推多角度信息合理推斷校驗需求斷校驗需求及時且自動及時且自動地地修復風險來降低成本修復風險來降低成本LLM的代碼生成能力多種LLM代碼補全應用證明了其理解開發者意圖的能力,可利用其代碼生成能力實現校驗代碼生成補全、實現自動修復將原校
5、驗語句移除之后(不在訓練集中),模型能夠生成語義類似的校驗語句,原代碼為orderResp.GetAccount().Id,模型生成的為orderResp.UserId說明模型在“語義層面”進行補全,成功識別到代碼來自“獲取訂單信息”場景,關聯“需要對訂單的屬主與當前登錄用戶進行校驗”需求,并生成校驗代碼Risky Code LLMRisky Code LLM可在語義層面理解業可在語義層面理解業務場景、分析校驗需求并補全校驗語句務場景、分析校驗需求并補全校驗語句Show CaseShow Case0202基于基于LLMLLM的風險代碼的風險代碼識別與修復識別與修復任務目標任務目標任務目標:對代
6、碼中缺失的對代碼中缺失的If If語句進行補全語句進行補全風險校驗缺失風險If Statement缺失if(boolean_expression)經統計,在全部漏洞中,If Statement語句缺失相關的漏洞占比很高補全鑒權校驗,當請求訂單不屬于當前登錄用戶時,阻止獲取訂單補全校驗語句沒有對訂單屬主鑒權,導致可以越權獲取任意訂單整體框架整體框架Pretraining:使用具備基礎代碼能力的開源LLM模型作為Base Model0101Continue Training:結合公司Codebase代碼,對Base Model進一步Continue Training,填補開源LLM模型數據分布與公
7、司代碼分布存在的差異0202Supervised Fine-Tune(SFT):基于Codebase和歷史漏洞數據,對模型進行指令微調,使模型了解“當前的任務/指令為補全校驗語句”,以及“在何種代碼分布下需要補全校驗語句”0303已知前提:風險代碼形成邏輯與業務場景關系緊密Pretraining&Continue TrainingPretraining&Continue TrainingPretrained Base Model:Codegen 6b、StarCoder 15bhttps:/huggingface.co/Salesforce/codegen-6B-monohttps:/hugg
8、ingface.co/bigcode/starcoder為解決開源LLM模型數據分布與公司代碼分布存在的差異的問題,我們使用開源模型在公司內部6種語言的代碼數據上進行了Continue Training,訓練方法與預訓練保持一致即通過上文預測下一個token:訓練代碼采用公司內部6種語言的代碼數據,樣本總大小60G,樣本數量1700萬+,token數量約23B;:過濾重復樣本、敏感信息過濾等.Supervised Fine-TuneSupervised Fine-Tune數據格式:數據格式:采用了FIM(Fill in Middle)的訓練模型,通過引入Special Token,將函數方法上
9、下文輸入到模型中,模型需要輸出該方法缺失的關鍵校驗,具體格式如下:Model Input:context Model Output:completed check計算Loss規則打標:規則打標:AST抽取出If Statement,通過簡單規則過濾除關鍵的校驗。打標出來的數據形式較為固定LLMLLM打標:打標:部分關鍵校驗形式多變,單純規則無法識別(例如調鑒權語句再通過If判斷結果,關鍵信息應是鑒權函數,而不是If語句),此類數據通過LLM識別。Supervised Fine-TuneSupervised Fine-Tune在實踐過程中,我們發現LLM有時會無中生有、強行編造一些結構體的成員變
10、量,導致生成錯誤的校驗語句。例如,如果orderResp中的屬主是某個Group,同Group中的用戶可以相互查看訂單,那么對orderResp.UserId校驗就是錯誤的此時可以在Prompt中補充orderResp的成員變量,從而生成正確的校驗語句:if orderResp.GroupId!=common.GetGroupID(ctx)在在PromptPrompt內豐富上下文信息可緩解幻覺(內豐富上下文信息可緩解幻覺(hallucinationhallucination)問題)問題context構成:給定待掃描函數,則該函數的context包含Supervised Fine-TuneSup
11、ervised Fine-Tune當前函數代碼成員方法成員變量Callee函數代碼該函數代碼該函數Callee對象的成員變量對象的成員方法External KnowledgeExternal Knowledge In GenerationIn GenerationExternal KnowledgeExternal Knowledge:基于代碼靜態分析技術得到的函數LSP信息,以及結合數據流、業務知識等定制的規則信息在生成過程中,利用外部知識構建candidate list將以上外部信息引入到模型生成過程中,進一步提升模型效果0303實驗結果與分析實驗結果與分析實驗指標實驗指標機器翻譯領域的常
12、見指標,衡量參考文本和生成文本在1-gram至n-gram的相似性在BLEU基礎上提高編程語言關鍵字的權重衡量模型生成代碼與原代碼的語法相似性,即參考代碼和生成代碼中相同AST子樹的比例IF語句布爾表達式中被校驗變量的Jaccard相似度DFGDFG相似性相似性衡量模型生成代碼與原代碼的語義相似性,即參考代碼和生成代碼中相同DFG邊的比例生成的校驗語句與ground truth完全一致的數量占比BLEUBLEU加權加權BLEUBLEU校驗變量的校驗變量的JaccardJaccard相似度相似度ASTAST相似性相似性correct rateCodebleuCodebleu:加權平均:加權平均模
13、型參數量模型參數量模型模型參數量參數量codebleucodebleubleubleu加權加權bleubleuASTAST相似相似性性校驗變量校驗變量JaccardJaccard相似度相似度correct ratecorrect rateCustomizedCustomized1.7b1.7b0.490.450.450.580.40-CodegenCodegen6b6b0.510.480.500.560.53-StarcoderStarcoder15b15b0.580.580.550.550.570.570.650.650.550.55-Continue TrainingContinue Tr
14、aining模型模型訓練方式訓練方式codebleucodebleubleubleu加權加權bleubleuASTAST相似性相似性校驗變量校驗變量JaccardJaccard相似度相似度correct correct raterateCodegen 6bCodegen 6bSFT0.490.470.490.540.50-Codegen 6bCodegen 6bContinue Training-SFT0.510.510.480.480.500.500.560.560.530.53-LLMLLM打標數據打標數據模型模型SFTSFT數據數據codebleucodebleubleubleu加權加權
15、bleubleuASTAST相似性相似性校驗變量校驗變量JaccardJaccard相似度相似度correct correct raterateCodegen 6bCodegen 6b規則打標0.520.50.520.60.5018.9%Codegen 6bCodegen 6b規則打標+LLM打標0.560.560.530.530.550.550.630.630.510.5122.3%22.3%LSPLSP信息引入信息引入模型模型ContextContext構成構成codebleucodebleubleubleu加權加權bleubleu語法匹配語法匹配程度程度校驗變量校驗變量JaccardJa
16、ccard相似度相似度correct ratecorrect rateCodegen 6bno context0.5790.5450.5620.6610.62832.1%Codegen 6bwith context0.6040.5690.590.680.65338.4%starcode 15bwith context0.6550.6550.6270.6270.6420.6420.7230.7230.7030.70344.7%44.7%函數信息覆蓋率提升,與模型效果提升呈正相關LSPLSP解析解析函數信息覆蓋率函數信息覆蓋率variable jaccardvariable jaccard增量增量
17、correct ratecorrect rate增量增量優化前7%1.6%0.4%優化后27.2%27.2%2.5%2.5%6.3%6.3%LSP信息的引入對比BenchmarkBenchmark單次推理采樣的Precision在25%左右,且準確性隨推理采樣次數增多逐漸增加注:生成完全一致(Exactly Match)的校驗語句則認為正確漏洞漏洞類型類型漏洞類型漏洞類型bleubleucodebleucodebleu加權加權N-gramN-gram語法匹配程度語法匹配程度校驗變量校驗變量JaccardJaccard相似度相似度服務端請求偽造(SSRF)0.78 0.85 0.79 0.92
18、0.77 上傳漏洞0.78 0.85 0.78 0.93 0.79 跨站請求偽造(CSRF)0.75 0.83 0.75 0.93 0.73 潛在信息泄露0.78 0.83 0.78 0.91 0.75 未授權訪問0.77 0.77 0.85 0.85 0.77 0.77 0.93 0.93 0.76 0.76 邏輯漏洞0.69 0.69 0.79 0.79 0.70 0.70 0.84 0.84 0.67 0.67 權限繞過0.75 0.75 0.82 0.82 0.76 0.76 0.90 0.90 0.76 0.76 敏感字段泄露0.71 0.79 0.72 0.85 0.70 SQL注
19、入0.68 0.76 0.68 0.81 0.71 跨站腳本攻擊(XSS)0.34 0.49 0.37 0.49 0.31 非法圖床漏洞0.37 0.52 0.39 0.54 0.33 上傳漏洞、上傳漏洞、S SSRFSRF等等“校驗形式單一校驗形式單一”的傳統的傳統webweb洞洞及涉及到鑒權的邏輯漏洞及涉及到鑒權的邏輯漏洞具有較高的準確性具有較高的準確性測試數據來源:歷史漏洞數據:歷史漏洞數據:篩選歷史漏洞修復MR中包含新增校驗語句的漏洞。將Merge之前的代碼作為context,將MR中新增的校驗語句作為completed check可視化可視化模型在推理時重點關注:函數首部、關鍵校驗語
20、句、關鍵函數調用語句、上文若干行模型在推理時重點關注:函數首部、關鍵校驗語句、關鍵函數調用語句、上文若干行函數簽名:函數簽名:模型需要從函數名中獲得基本的函數功能,并且函數參數中會包含需校驗的變量等信息函數調用:函數調用:模型需要從這類語句中獲取一些關鍵的變量賦值,以及Callee函數中可能進行的一些操作(例如是否已調用鑒權函數)校驗語句:校驗語句:模型需要從這類語句中判斷代碼是否進行過某些校驗鄰近的上文:鄰近的上文:Decoder本身的特性,Next Token Prediction時,會對上文具有較高的關注,以正確生成下文0404投產效果投產效果&局限性局限性落地場景與效果落地場景與效果目
21、前已完成Continue Training、STF、評估體系全流程建設,并針對Go語言倉庫在“風險檢測服務”和“IDE安全插件”兩個場景進行落地:風險治理效果:風險治理效果:“IF語句”缺失引發漏洞比例下降治理存量風險治理存量風險風險檢測服務:風險檢測服務:通過對業務存量代碼中存在的風險進行回掃,發現漏洞并治理,發現占比10%左右治理增量風險治理增量風險IDEIDE安全插件:安全插件:以插件形式將風險檢測嵌入到研發開發過程中,實現風險左移。目前已覆蓋VSCode上的全量Go倉庫,正覆蓋JetBrains系列插件。線上精確率59.46%,上線后,“校驗缺失”導致的漏洞數量持續下降風險獨報能力風險
22、獨報能力與傳統的黑盒/白盒檢測方法相比,風險大模型上報的漏洞中,有近4成的漏洞是大模型獨報(黑盒/白盒均未檢出),表明風險大模型與傳統方法能夠形勢互補從現有代碼中自動學習,不依賴人工枚舉直接處理文本,對外部分析依賴較低風險修復效率風險修復效率風險大模型直接提供修復建議,相較于傳統檢測工具只提示存在風險,降低了研發對風險的理解和修復成本,使得風險修復效率大幅降低IDEIDE插件場景縮短了插件場景縮短了96.39%96.39%修復時間修復時間線上漏洞縮短了線上漏洞縮短了44.86%44.86%修復時間修復時間0505總結總結Limitation-Limitation-模型能力模型能力非 if-co
23、ndition 形式的校驗能力弱,例:三方函數+校驗變量模型處理長度有限,無法充分利用外部知識冗余校驗數據流冗余:uid=get_uid(order_id):isowner(uid,order_id)重復校驗Limitation-Limitation-業務落地業務落地 缺乏可解釋性與可控性,難以作為關鍵卡點補全語句信息量較少,校驗原因不明確推理性能限制FutureFuture上下文信息的引入與使用,更廣泛、更靈活LSP信息、數據流、調用鏈等業務知識、專家知識等新的位置編碼技術,提升模型處理長度邏輯推理能力引入自然語言,構造nl+code數據,建設模型chat能力構造CoT數據,建設模型邏輯推理能力,提升可解釋性LLMLLM與安全風險治理與安全風險治理-端到端解決端到端解決校驗校驗缺失風險代碼缺失風險代碼管占明管占明字節跳動-代碼智能團隊