LLM 에이전트의 취약점 연구에서 기억을 프로그램 분석 방식으로 관리하는 Datalog 엔진 ‘Lemmalog’가 구현됐다. 관찰과 그로부터 도출된 결론을 구조화해, 전제가 바뀌면 영향을 받은 결론을 자동으로 무효화하는 방식이다.
이 내용은 8월 29일 개인 기술 pwning.systems에 게시된 소개됐다. 글에 따르면 LLM 에이전트는 대규모 코인베이스를 탐색하고 낯선 하위 시스템을 설명하며 잠재적인 공격 표면을 찾는 데 활용할 수 있지만, 조사가 몇 시간 이어지면 이미 배제한 접근법을 다시 제안하거나 거짓으로 판명된 가정에 근거해 추론하는 문제가 나타났다.
기존 메모리 시스템은 과거 대화나 관찰 내용을 저장한 뒤 임베딩하고, 필요할 때 관련성이 높은 일부 정보를 검색해 프롬프트에 넣는 방식이 일반적이다. 그러나 이 방식에서는 새로 확인된 사실이 과거 결론에 어떤 영향을 미치는지 LLM이 대화 기록을 다시 읽고 판단해야 한다. 관찰 하나가 틀렸다는 사실을 알려도 그 관찰에 의존한 모든 추론을 자동으로 철회한다는 보장은 없다.
Lemmalog는 이 문제를 프로그램 분석과 같은 방식으로 다룬다. 프로그램 분석에서는 프로그램에 관한 사실을 입력하고, 사실에서 새로운 사실을 도출하는 규칙을 적용해 더 이상 도출할 결과가 없을 때까지 상태를 계산한다. 입력 사실이 바뀌면 전체 분석을 처음부터 반복하지 않고 영향을 받은 결과만 갱신하는 기법도 활용된다. 취약점 조사에서 특정 객체 간 연결에 관한 관찰이 잘못된 것으로 확인되면, 그 관찰에서 도출된 공격 가능성 관련 결론만 무효화하는 식이다.
구조상 LLM은 자연어, 소스 코드, 디버거 출력처럼 불완전하고 모호한 정보를 해석해 구조화된 사실로 바꾸는 역할을 맡는다. 이후 사실 간 관계를 계산하고 결론을 유지하는 일은 Lemmalog의 Datalog 데이터베이스가 처리한다. Datalog는 계산 절차를 직접 지시하기보다 사실과 규칙을 선언하고, 기존 사실에서 새 사실을 도출하는 선언형 논리 프로그래밍 언어다.
사실을 추가하는 작업은 비교적 단순하지만 삭제는 더 복잡하다. 어떤 결론이 두 개의 독립적인 근거에서 도출됐다면 근거 하나가 사라져도 결론을 삭제해서는 안 된다. 두 근거가 모두 사라졌을 때만 결론을 없애야 하기 때문이다. Lemmalog는 각 사실이 어떤 경로로 도출됐는지와 이를 뒷받침하는 근거를 추적해 상태를 갱신하며, 이를 바탕으로 특정 사실이 왜 참인지도 설명할 수 있도록 설계됐다.