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模型数据分布与公