随着攻防对抗升级,传统关键词告警面临两大困局:海量低危告警引发的告警疲劳,以及新型复杂攻击特征难以被静态正则捕获。
本文解析 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();
// 构造 OpenAI / DeepSeek 标准兼容的 JSON 载荷并开启 stream: true
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 实现了三级容灾矩阵:

  1. JSON 容错清洗器:自动剔除 LLM 返回的 json 代码块包裹,容忍并提取有效 JSON 字段;
  2. 本地 Ollama 私有化备用:无缝路由至局域网部署的开源大模型(如 DeepSeek-R1、Qwen2.5-Coder);
  3. 内核专家规则引擎:当完全离线或外部模型宕机时,秒级触发内置特征匹配(SQLi、XSS、Path Traversal、Brute Force),确保前端获得 100% 确定性、零中断的研判报告。

📊 五、总结

通过融合 双中台跨系统协同研判流水线 (IncidentInvestigationPipeline)、结构化 Prompt 设计、纯 CPU 2ms 密集特征向量化引擎、0 Token 语义向量诊断缓存、金融级 PII 敏感脱敏装甲、JDK 原生 SSE 流式传输 与 三级 Fail-Safe 容灾机制,Nexus AI 成功将大语言模型的智能推理能力赋能于日志安全审计,全套 26 项自动化单元测试 100% 绿灯通过,显著降低了安全研判的响应时间与误报成本。