xiaohack's Blog - SDLC
type: channel
link: https://blog.xiaohack.org/tag/sdlc/
items: 补齐SDLC最后一块拼图：LLM 在应用安全中的实践探索

补齐SDLC最后一块拼图：LLM 在应用安全中的实践探索
type: item
date: 2026-01-24T19:38:17+08:00
description: 导语随着 DevSecOps 的不断推进，应用安全已被广泛纳入SDLC的各个阶段。然而，在代码扫描、依赖分析、漏洞检测等能力逐步成熟的同时，一个长期存在却难以解决的问题始终横亘在安全工程实践中：安全工具“能发现问题”，却难以判断问题是否真实、是否可利用、是否值得优先处理。大量规则驱动的扫描结果不仅带来了高误报率，也持续消耗着研发与安全团队的精力。近年来随着大语言模型（LLM）的快速发展，为这一困境提供了新的可能。不同于传统规则或静态特征匹配，LLM 在语义理解、上下文推理和条件组合分析方面展现出独特优势，使其具备参与安全“判断层”的潜力。将 LLM 引入 SDLC，不再只是生成代码或辅助文档，而是尝试参与到安全结果的理解、验证与决策之中。本文结合实际应用安全建设经验，围绕 LLM 在 SDLC 中的落地实践展开，重点探讨其在硬编码、SCA、漏洞挖掘等场景中的应用方式与工程化思路。SDLC 应用安全流程SDLC名词解释 SAST（静态应用安全测试）通过对源代码或编译产物进行静态分析，在不运行系统的情况下发现潜在的安全缺陷，如 SQL 注入、XSS、不安全函数调用和硬编码敏感信息等，适合在开发阶段提前发现问题。 SCA（软件成分分析）聚焦于项目中使用的第三方开源组件，识别依赖库及其传递依赖中已知的安全漏洞、风险版本和许可证问题，帮助团队降低因外部组件引入的安全风险。 DAST（动态应用安全测试）在系统运行状态下，从攻击者视角对应用进行测试，通过捕获流量包修改参数重放，模拟真实攻击行为验证系统是否存在可被实际利用的漏洞，如注入攻击、未授权访问等 硬编码（Hard Coding），是指在程序中直接把固定的值写死在源码里，而不是通过配置文件、环境变量等方式获取，比如下面这些情况，都属于硬编码：用户名、密码、token或加密密钥等 为什么我们需要SDLC？产品一句话需求 → 开发自己理解 → 按照个人习惯去开发 → 功能上线后出现大量漏洞 → 被外部利用造成损失而SDLC要做的就是把漏洞扼杀于摇篮之中，而不是靠后期凭经验渗透测试发现。但目前传统的SDLC存在大量告警/误报，推送大量工单给研发会导致业务间摩擦度增加，因此理想情况是把真正需要修复的工单交给研发处理硬编码规则下引入AI判断，减少误报问题背景：目前硬编码扫描是根据规则的正则匹配，存在一定的局限性和误报整体流程结合硬编码规则 + AI 判断保留高召回，同时降低误报率硬编码规则先行使用固定规则（正则、逻辑判断）先筛掉明显非风险项，让 AI 只处理模糊/不确定案例AI 判断做辅助只对硬编码规则未覆盖、可疑的候选项输出风险判断，输出结果可附置信度或分类标签置信度 + 白名单控制AI 输出带置信度，低于阈值直接忽略，对常见合法值、默认值设置白名单提示词 promot通过定位文件的位置，结合上下文判断实际风险等级，把AI分析结果输出你是一个资深应用安全专家，精通代码安全、凭证泄露、真实攻击利用分析。 现在给你一个【疑似硬编码凭证】的扫描结果，请你进行【可利用性研判】。 输入信息如下（JSON）： %s 请严格按以下维度进行分析： 1. 该硬编码是否为真实敏感凭证 2. 是否存在被外部攻击者利用的可能 3. 是否依赖运行环境 4. 泄露后的安全影响 5. 修复建议 请以 JSON 格式输出分析结果 模型输入字段释义 字段 释义 match 匹配到的硬编码内容（部分脱敏显示） rule key类型 path 硬编码所在的完整文件路径 branch 分支 code 上下5行代码 增加输出长度，避免截断"extra_body": map[string]interface{}{ "think_mode": true, "max_output_tokens": 1024, 实现效果如果是走正常的流程，secret_value会被 generic-api-key规则名字标记严重程度为medium开启AI分析选项后，通过定位文件的位置，结合上下文交给ai分析，AI判断实际危害程度为低在代码中发现硬编码的敏感信息'DEMO_SECRET'，其值为'secret_value'。根据规则'generic-api-key'，这可能是一个API密钥或其他类型的敏感凭证。该变量位于'E:\SDLC平台\backend\uploads\demo.py_scan\demo.txt'文件中，并且注释表明它看起来像一个Key，但无实际用途。由于这是一个测试环境中的示例代码，风险相对较低。 掩码输出硬编码片段代码中存在：const apiKey = "sk_live_9f83a0b7..."AI分析后会直接原样输出，给出完整的佐证片段，这样是不符合数据安全合规要求的，就会产生 二次扩散风险。正确掩码后的做法，AI 只需知道这是一…

补齐SDLC最后一块拼图：LLM 在应用安全中的实践探索
type: item
date: 2026-01-21T09:02:26+08:00
description: 导语随着 DevSecOps 的不断推进，应用安全已被广泛纳入SDLC的各个阶段。然而，在代码扫描、依赖分析、漏洞检测等能力逐步成熟的同时，一个长期存在却难以解决的问题始终横亘在安全工程实践中：安全工具“能发现问题”，却难以判断问题是否真实、是否可利用、是否值得优先处理。大量规则驱动的扫描结果不仅带来了高误报率，也持续消耗着研发与安全团队的精力。近年来随着大语言模型（LLM）的快速发展，为这一困境提供了新的可能。不同于传统规则或静态特征匹配，LLM 在语义理解、上下文推理和条件组合分析方面展现出独特优势，使其具备参与安全“判断层”的潜力。将 LLM 引入 SDLC，不再只是生成代码或辅助文档，而是尝试参与到安全结果的理解、验证与决策之中。本文结合实际应用安全建设经验，围绕 LLM 在 SDLC 中的落地实践展开，重点探讨其在硬编码、SCA、漏洞挖掘等场景中的应用方式与工程化思路。SDLC 应用安全流程SDLC名词解释 SAST（静态应用安全测试）通过对源代码或编译产物进行静态分析，在不运行系统的情况下发现潜在的安全缺陷，如 SQL 注入、XSS、不安全函数调用和硬编码敏感信息等，适合在开发阶段提前发现问题。 SCA（软件成分分析）聚焦于项目中使用的第三方开源组件，识别依赖库及其传递依赖中已知的安全漏洞、风险版本和许可证问题，帮助团队降低因外部组件引入的安全风险。 DAST（动态应用安全测试）在系统运行状态下，从攻击者视角对应用进行测试，通过捕获流量包修改参数重放，模拟真实攻击行为验证系统是否存在可被实际利用的漏洞，如注入攻击、未授权访问等 硬编码（Hard Coding），是指在程序中直接把固定的值写死在源码里，而不是通过配置文件、环境变量等方式获取，比如下面这些情况，都属于硬编码：用户名、密码、token或加密密钥等 为什么我们需要SDLC？产品一句话需求 → 开发自己理解 → 按照个人习惯去开发 → 功能上线后出现大量漏洞 → 被外部利用造成损失而SDLC要做的就是把漏洞扼杀于摇篮之中，而不是靠后期凭经验渗透测试发现。但目前传统的SDLC存在大量告警/误报，推送大量工单给研发会导致业务间摩擦度增加，因此理想情况是把真正需要修复的工单交给研发处理硬编码规则下引入AI判断，减少误报问题背景：目前硬编码扫描是根据规则的正则匹配，存在一定的局限性和误报整体流程结合硬编码规则 + AI 判断保留高召回，同时降低误报率硬编码规则先行使用固定规则（正则、逻辑判断）先筛掉明显非风险项，让 AI 只处理模糊/不确定案例AI 判断做辅助只对硬编码规则未覆盖、可疑的候选项输出风险判断，输出结果可附置信度或分类标签置信度 + 白名单控制AI 输出带置信度，低于阈值直接忽略，对常见合法值、默认值设置白名单提示词 promot通过定位文件的位置，结合上下文判断实际风险等级，把AI分析结果输出你是一个资深应用安全专家，精通代码安全、凭证泄露、真实攻击利用分析。 现在给你一个【疑似硬编码凭证】的扫描结果，请你进行【可利用性研判】。 输入信息如下（JSON）： %s 请严格按以下维度进行分析： 1. 该硬编码是否为真实敏感凭证 2. 是否存在被外部攻击者利用的可能 3. 是否依赖运行环境 4. 泄露后的安全影响 5. 修复建议 请以 JSON 格式输出分析结果 模型输入字段释义 字段 释义 match 匹配到的硬编码内容（部分脱敏显示） rule key类型 path 硬编码所在的完整文件路径 branch 分支 code 上下5行代码 增加输出长度，避免截断"extra_body": map[string]interface{}{ "think_mode": true, "max_output_tokens": 1024, 实现效果如果是走正常的流程，secret_value会被 generic-api-key规则名字标记严重程度为medium开启AI分析选项后，通过定位文件的位置，结合上下文交给ai分析，AI判断实际危害程度为低在代码中发现硬编码的敏感信息'DEMO_SECRET'，其值为'secret_value'。根据规则'generic-api-key'，这可能是一个API密钥或其他类型的敏感凭证。该变量位于'E:\SDLC平台\backend\uploads\demo.py_scan\demo.txt'文件中，并且注释表明它看起来像一个Key，但无实际用途。由于这是一个测试环境中的示例代码，风险相对较低。 掩码输出硬编码片段代码中存在：const apiKey = "sk_live_9f83a0b7..."AI分析后会直接原样输出，给出完整的佐证片段，这样是不符合数据安全合规要求的，就会产生 二次扩散风险。正确掩码后的做法，AI 只需知道这是一…