T02 · Agent Memory Poisoning
- Location
index.js:680- Finding
Untrusted Session Content Can Poison Persistent Agent Memory
- Content
View full analysis
0) { const content = messages.slice(0, 10).map(m => `${m.role}: ${(m.content || '').substring(0, 200)}` ).join('\n'); if (sessions_spawn_fn) { try { console.log(` 🤖 调用 LLM 提炼...`); const llmResult = await sessions_spawn_fn({ task: buildSummarizeTask(content, sessionId), runtime: 'subagent', mode: 'run', // 使用配置的 timeout,默认 1000 秒(防止 subagent 超时) timeoutSeconds: config.memorySave?.timeoutSeconds || DEFAULT_CONFIG.memorySave.timeoutSeconds, // 执行完毕后自动删除 subagent session,避免残留导致下一轮 heartbeat 被误处理 cleanup: 'delete' }); // 追踪自身产生的 subagent session ID(防止下一轮被当作新 session 处理) if (llmResult && llmResult.sessionId) { ownSubagentIds.add(llmResult.sessionId); } const parsed = parseLLMResult(llmResult); if (parsed) { summary = parsed; } else { console.log(` ⚠️ LLM 解析失败,使用降级方案`); summary = summarizeSessionLocal(messages, sessionId); } ``` ```js if (summaries.length > 0) { // 空转保护:如果所有摘要都是自身 subagent 的记录,跳过写入 const hasRealC ...[truncated 5352 chars]- Remediation
View remediation
