LLM 메모리를 만들다 우연히 프로그램 분석 엔진이 된 이야기

2 weeks ago 33

장시간 취약점 조사에서 폐기된 가정과 그에 의존한 결론이 되살아나는 문제를 해결하려다, 지식을 검색하는 메모리 대신 현재 유효한 분석 상태를 유지하는 Datalog 엔진 Lemmalog를 개발함 LLM은 자연어·코드·디버거 출력을 구조화된 사실로 바꾸고, Lemmalog는 증분 평가와 철회, 출처 추적, 시간 구간 관리를 맡아 전제가 바뀌면 영향받은 결론을 자동으로 무효화함 LongMemEval에서 F1 0.463±0.010, 정확도 0.575±0.004를 기록했으며, 전체 대화 입력보다 F1이 2배 이상 높고 질문당 문맥은 약 104,000토큰에서 2,700토큰으로 약 38배 줄어듦 LoCoMo에서는 F1 0.533±0.001로 전용 메모리 시스템 중 3위에 올랐고, 날짜 정규화·엔티티 통합·혼합 검색·집계 노출 같은 입출력 개선으로 초기 0.483보다 성능이 높아짐 PropMem보다 전체 성능이 낮고 조건부·미묘한 추론에도 약하지만, 지식 갱신과 시간 상태, 근거 없는 전제 거부에서 경쟁력을 보였으며 실제 장기 취약점 조사에서 폐기된 가설의 부활을 막는지 검증해야 함 대화 기록이 아닌 현재 지식 유지 LLM 에이전트는 대규모 코드베이스 탐색, 낯선 하위 시스템 해석, 잠재적 공격 표면 조사에 유용하지만 조사가 몇 시간 이어지면 이미 배제한 접근법을 다시 제안하거나, 틀린 가정을 잊거나, 더 이상 유효하지 않은 관찰에 의존해 추론하기 시작함 일반적인 메모리 시스템은 과거 대화와 관찰을 저장·임베딩한 뒤 관련 항목을 검색하지만, 취약점 조사에는 과거 발언을 기억하는 것보다 현재 무엇이 참인지 유지하는 기능이 필요함 예를 들어 다음 사실을 조합하면 공격자가 커널 객체를 제어한다는 결론을 낼 수 있음 공격자가 object_a를 제어함 object_a가 object_b를 가리킴 object_b는 커널 객체임 이후 LLDB에서 두 객체의 연결이 잘못된 가정이었다고 확인되면 기존 사실과 반증이 함께 검색될 수 있고, LLM이 어느 결론까지 무효인지 다시 판단해야 함 필요한 동작은 전체 조사 기록을 재구성하는 것이 아니라 입력 관찰이 바뀔 때 그에 의존한 결론을 자동으로 무효화하는 것임 프로그램 분석과 Datalog 프로그램 분석은 프로그램에 관한 입력 사실과 추가 사실을 유도하는 규칙으로 고정점(fixed point) 을 계산하며, 입력이 바뀌면 전체를 다시 실행하지 않고 영향받은 결과만 갱신할 수 있음 Datalog는...

Read Entire Article