随着攻防对抗升级,传统关键词告警面临两大困局:海量低危告警引发的告警疲劳 ,以及新型复杂攻击特征难以被静态正则捕获 。 本文解析 Nexus AI Security Copilot 的架构实现,探讨如何利用 Spring Boot 3、大语言模型(LLM)与 Server-Sent Events(SSE)打造具有威胁定级、攻击链推演与自动化处置能力的日志 AI 研判大脑。
🧠 一、安全日志 AI 研判的架构流程 Nexus AI 的核心交互时序如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 [ 用户 / 控制台 ] [ Nexus AI 后端 (8081) ] [ 大模型 (DeepSeek/Qwen) ] │ │ │ │── POST /api/ai/analyze-stream ───>│ │ │ (带日志载荷 & 模型偏好) │── 组装结构化 System Prompt ─────────>│ │ │ (要求输出标准 JSON) │ │<── HTTP 200 text/event-stream ────│ │ │ │<── SSE Chunk (流式 Token 文本) ──────│ │<── event: chunk (逐字打字机) ─────│ │ │ │ │ │ │── [模型输出结束] ────────────────────│ │ │── JSON 解析、清洗与威胁定级 ─────────│ │ │── 自动持久化落库 MySQL ──────────────│ │<── event: done (完整结构化结果) ──│ │
📝 二、结构化 Prompt 工程与防越狱注入 大模型输出天然具有不确定性,为了让前端 SOC Studio 能够稳定渲染 CVSS 3.1 评分、MITRE 战术矩阵与防御剧本,我们设计了严格的 System Prompt 约束:
1 2 3 4 5 6 7 8 9 10 11 你是一名世界顶级的资深网络安全分析专家(SOC Security Analyst)。 请对用户输入的系统日志文本进行威胁研判,严格按照以下 JSON 格式输出,禁止包含任何额外的 Markdown 解释文字: { "operationType": "LOGIN | QUERY | ACCESS | ATTACK | EXPLOIT", "riskLevel": "NORMAL | LOW | MEDIUM | HIGH | CRITICAL", "needIntervention": true | false, "sourceIp": "从日志中提取的攻击源 IP 或 null", "summary": "一句话中文安全事件总结 (30字以内)", "suggestion": "专业的应急处置与安全加固建议" }
1. 防御 Prompt 注入(Anti-Prompt Injection) 通过在服务端对用户日志载荷进行 <security_telemetry_payload> 沙箱隔离与转义,避免攻击者在日志中伪造 Ignore previous instructions 等注入指令。
2. 金融级 PII 敏感信息脱敏装甲 (PiiSanitizer) 在将原始日志发送至公网商业大模型(DeepSeek / OpenAI)前,系统通过 PiiSanitizer 自动对密码凭证([REDACTED_SECRET])、手机号(138****5678)、身份证与内网物理绝对路径进行金融级规则脱敏,确保数据出域零合规风险。
⚡ 三、零第三方依赖:JDK 11+ HttpClient 异步流式集成 放弃庞大臃肿的第三方 SDK,直接基于 JDK 内置的 java.net.http.HttpClient 实现非阻塞异步流式推送:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 public void analyzeStream (String logContent, String username, String provider, String customModel, SseEmitter emitter) { CompletableFuture.runAsync(() -> { long startTime = System.currentTimeMillis(); JSONObject requestBody = buildRequestBody(buildSystemPrompt(), logContent); requestBody.put("stream" , true ); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(apiUrl)) .header("Content-Type" , "application/json" ) .header("Authorization" , "Bearer " + apiKey) .POST(HttpRequest.BodyPublishers.ofString(requestBody.toJSONString())) .build(); StringBuilder fullText = new StringBuilder (); httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofLines()) .thenAccept(response -> { response.body().forEach(line -> { String trimmed = line.trim(); if (trimmed.startsWith("data:" )) { String data = trimmed.substring(5 ).trim(); if (!"[DONE]" .equals(data) && !data.isEmpty()) { String chunk = extractChunkFromStreamData(data); if (chunk != null ) { fullText.append(chunk); emitter.send(SseEmitter.event().name("chunk" ).data(chunk)); } } } }); AnalysisResult result = parseResponse(fullText.toString()); saveToHistory(logContent, result, username); emitter.send(SseEmitter.event().name("done" ).data(JSON.toJSONString(result))); emitter.complete(); }) .exceptionally(ex -> { log.error("LLM streaming failed, activating rule fallback" , ex); simulateStreamFallback(logContent, username, startTime, emitter); return null ; }); }); }
🛡️ 四、Fail-Safe 容错与内核规则引擎兜底 在真实的生产环境中,外部大模型可能面临网络抖动、Token 额度耗尽或无 API Key 运行的情况。
Nexus AI 实现了三级容灾矩阵:
JSON 容错清洗器 :自动剔除 LLM 返回的 json 代码块包裹,容忍并提取有效 JSON 字段;
本地 Ollama 私有化备用 :无缝路由至局域网部署的开源大模型(如 DeepSeek-R1、Qwen2.5-Coder);
内核专家规则引擎 :当完全离线或外部模型宕机时,秒级触发内置特征匹配(SQLi、XSS、Path Traversal、Brute Force),确保前端获得 100% 确定性、零中断的研判报告。
📊 五、总结 通过融合 双中台跨系统协同研判流水线 (IncidentInvestigationPipeline) 、结构化 Prompt 设计 、纯 CPU 2ms 密集特征向量化引擎 、0 Token 语义向量诊断缓存 、金融级 PII 敏感脱敏装甲 、JDK 原生 SSE 流式传输 与 三级 Fail-Safe 容灾机制 ,Nexus AI 成功将大语言模型的智能推理能力赋能于日志安全审计,全套 26 项自动化单元测试 100% 绿灯通过,显著降低了安全研判的响应时间与误报成本。