♻️ 같은 오탐을 두 번 생각하지 않기 — 보안 에이전트 파수꾼의 '판정 재사용'은 어떻게 안전하게 만들었나
열흘 전 「파수꾼 관제 90분 — AI 보안 분석가는 같은 오탐을 26번 조사했다」를 썼다. DB 컨테이너 초기화가 일으키는 똑같은 경보를 보안 에이전트가 매번 처음 보는 것처럼 조사했고, 그 90분 동안 토큰의 73% 가 거기에 들어갔다. 그 글의 마지막 줄은 이랬다. “에이전트가 얼마나 똑똑한지만큼 중요한 건, 같은 걸 두 번 생각하지 않는가이다.”
오늘 새벽, 그 다음 장이 텔레그램으로 도착했다.
♻️ [Clear Log Activities] <노드> · /usr/bin/dash
지난 판정 재사용: lynis 보안 점검이 실행되어 로그 파일을 열었으며, 이는 Falco 의
'Clear Log Activities' 규칙에 의해 오탐으로 판단됨. (신뢰도 높음)
근거: <run-id> (10-06 00:23 KST 조사)와 규칙·위치·실행파일·부모 프로세스·명령줄이 같음 — LLM 재조사 생략
약 23시간 뒤 이 소음이 다시 오면 새로 조사합니다.
LLM 을 한 번도 부르지 않고 끝난 경보다. 이 글은 이 한 장짜리 카드 뒤에 있는 설계를 정리한다. 핵심은 “재사용한다”가 아니라 “언제 재사용하면 안 되는가”를 먼저 정한 것이다.
먼저 사실 확인 — 판정이 맞았나
재사용 카드가 맞는 말을 하는지부터 봤다. 해당 노드에서 보안 감사 도구 lynis 는 systemd 타이머로 매일 돈다. 그날은 00:22 에 시작했고, lynis 로그가 01:08 까지 쓰였다. 경보는 그 실행 직후였다. 판정 내용은 사실과 맞았다. (카드 문구는 “크론작업”이라고 했지만 엄밀히는 타이머다. 판정에는 영향이 없다.)
두 겹의 “같은 경보” 처리
파수꾼에는 반복 경보를 다루는 장치가 두 겹 있다.
| 묶음 (coalesce) | 판정 재사용 (verdict reuse) | |
|---|---|---|
| 시간 창 | 120분 | 24시간 |
| 같다고 보는 기준 | 규칙·위치·실행파일·부모 프로세스 | 위 + 명령줄 해시 |
| 재시작 후 | 사라짐 (메모리) | 감사 기록에서 복원 |
| 결과 | 카드 없이 집계만 | 지난 판정을 인용한 짧은 카드 |
묶음만으로는 부족했다. 120분이 지나면 매시간 도는 점검 스크립트를 또 처음부터 조사했다. 코드 주석에는 실측이 남아 있다. “lemuel grep /etc/shadow 한 키가 90회 조사”(2026-09-23). 그래서 24시간짜리 두 번째 겹이 필요했다.
여기서 중요한 차이가 명령줄이다. 묶음은 인자만 바뀌는 점검 스크립트를 한 건으로 보려고 명령줄을 뺀다. 하지만 재사용 판정은 LLM 이 그 명령줄을 읽고 내린 결론이다. 다른 명령줄에 그 결론을 들이밀면 안 된다. 그래서 재사용 키에는 명령줄 해시를 더한다.
재사용해도 되는 판정의 조건
모든 판정을 재사용하지 않는다. 다음을 모두 만족할 때만 기억한다.
- 판정이 명시적으로 “오탐”이다.
- 신뢰도가 “높음” 또는 “중간”이다.
- 조사 중 프롬프트 주입 의심이나 가드 경고가 없었다.
- 조치 제안에 파괴적이거나 고위험인 것이 없다.
그리고 반대 방향의 규칙이 하나 더 있다. 같은 키로 새 조사를 했는데 재사용 불가 판정(예: “의심”)이 나오면, 옛 오탐 기억을 지운다. 같은 소음에서 의심이 나왔는데 어제의 “오탐”을 계속 들이밀면 그게 곧 사고다.
재사용하면 안 되는 경보
키를 아예 만들지 않아서, 매번 새로 조사하는 경보들이 있다.
- BPFDoor 계열 패턴 + 시스템 밖 경로에서 실행된 프로세스. 소켓에 BPF 필터를 붙여 “매직 패킷”을 기다리는 백도어 계열이라, 열린 포트가 없어 방화벽에서는 보이지 않는다. 시스템 경로 안(CI 의 dockerd 등)에서 나는 같은 패턴의 소음은 재사용하지만, 낯선 경로면 옛 판정을 쓰지 않는다.
- 룰 하한 대상. 하한 설정이 꺼져 있던 시기에 내려진 “오탐”이 남아 있을 수 있어서, 매번 새로 본다.
- 킬체인 신호가 붙은 경보. 소음 속에서 공격 단계가 이어지는 흐름이 보이면, 묶지도 재사용하지도 않고 조사한다.
시계에 대한 두 가지 원칙
- 재사용이 재사용을 연장하지 않는다. 24시간의 기준은 원 조사 시각이다. 재사용 카드가 몇 번 나가든 하루가 지나면 처음부터 다시 본다. 카드의 “약 23시간 뒤 새로 조사”가 그 남은 시간이다.
- 미래 시각의 판정은 쓰지 않는다. 시계가 뒤로 가면(NTP 실패, VM 재개 등) “지금 − 기록 시각”이 음수가 되는데, 예전 구현은 그걸 창 안으로 통과시켜 오탐 판정이 24시간을 넘겨 계속 재사용될 수 있었다. 2차 보안 리뷰에서 나온 지적이다. 지금은 허용오차(300초)보다 더 미래인 기록은 버린다.
비용은 어떻게 세나
재사용된 경보는 LLM 을 쓰지 않았으므로 토큰 0 으로 기록한다. 대신 “경보 1건당 평균 토큰”을 계산할 때는 분모에 포함한다. 재사용이 늘수록 경보당 비용이 실제로 내려가는 게 숫자에 보이게 하려는 것이다.
정리 — 기억은 공짜가 아니다
| 질문 | 파수꾼의 답 |
|---|---|
| 같은 경보란? | 규칙·위치·실행파일·부모 + 명령줄 해시 |
| 얼마나 오래? | 원 조사 기준 24시간, 연장 없음 |
| 어떤 판정을? | 오탐 · 신뢰도 중간 이상 · 주입 흔적 없음 · 위험 제안 없음 |
| 언제 잊나? | 같은 키에서 재사용 불가 판정이 나오면 즉시 |
| 무엇은 절대? | BPFDoor 계열(낯선 경로), 룰 하한 대상, 킬체인 신호 |
열흘 전 글에서는 “어제의 자기 자신을 모르는 것”을 문제로 꼽았다. 이번에 만든 건 기억이다. 그런데 보안에서 기억은 그 자체로 위험이다. 틀린 기억을 오래 믿으면 그게 곧 사각지대가 된다. 그래서 이 기능의 대부분은 “기억할 조건”과 “잊을 조건”으로 이루어져 있다.
References
- 파수꾼 이전 글: 같은 오탐을 26번 조사했다
- Falco 문서 — https://falco.org/docs/