[AI 에이전트 런타임 보안 샌드박스] 3주차 5일차: 살아 있는 세션에서 진짜 kill 검증하고 중간 점검 마치기
·
AI 에이전트 런타임 보안 샌드박스 프로젝트
3주차 중간 점검의 필수 세 항목(종단 동작, kill switch, 자원 정리)이 모두 통과했고, 그래서 경로 비교 탐지기를 4주차에 진행하기로 결정했습니다. 이 글은 그 근거가 된 실험들을 정리합니다. #점검 항목구분결과근거1쓰기→실행 종단 동작필수통과s04, 150/1502kill switch (TERM을 무시하는 프로세스와 자식까지)필수통과s053100회 반복 뒤 자원 정리필수통과100회·150회 누수 점검 합격4오탐품질부분n01, n03~n05는 BLOCK 0, n06은 알려진 오탐 BLOCK 1, n02 보류5회귀품질통과전체 실행 12/12 (10-25)세션이 살아 있는 동안 호스트가 실행한다: 러너 B안과 s04지금까지의 시나리오 s01은 에이전트가 끝난 뒤에 호스트가 파일을 실행했습니다(A..
[AI 에이전트 런타임 보안 샌드박스] 3주차 4일차: 자원이 새지 않는다는 것을 숫자로 보이기
·
AI 에이전트 런타임 보안 샌드박스 프로젝트
kill switch는 세션을 죽이는 기능이고, 그게 끝난 뒤에 아무것도 남지 않는다는 것은 따로 증명해야 하는 별개의 주장입니다. 이 글은 그 두 번째 주장을 다룹니다.왜 구현이 아니라 누수 확인인가kill이 한 번 되는 것은 s03 하나로 이미 보였습니다. 하지만 세션을 하나 죽일 때마다 cgroup, 네트워크 네임스페이스, veth, 마운트, 감시 맵 항목, 로그 파일 핸들이 조금씩 남으면 100번째 세션쯤에서 로더나 호스트가 무너집니다. 한 번 해 보는 시험으로는 이 종류의 문제가 보이지 않습니다.그래서 "한 번 된다"가 아니라 "여러 번 해도 시작 때와 같다"를 숫자로 보이는 도구를 만들었습니다(커밋 fd85c30). 방식은 단순합니다.시작 때 호스트 상태를 숫자로 찍는다(스냅샷).시나리오를 N..
[AI 에이전트 런타임 보안 샌드박스] 3주차 3일차: 정상 시나리오를 돌릴 환경 만들기: /dev/null, 개발 rootfs, 소유자 문제
·
AI 에이전트 런타임 보안 샌드박스 프로젝트
요약10월 22일에는 두 가지 일을 했다. 오전 11시 40분부터 오후 4시 30분까지는 BLOCK이 나도 종료하지 않고 기록만 하는 관찰 모드를 마무리하고, 러너 버그 하나를 고치고, 한계 목록을 정리했다. 오후 4시 46분부터는 정상 시나리오(n)로 오탐을 재기 위한 실행 환경을 만들어, 컴파일 후 실행 한 건에서 첫 오탐 실측값(SUSPECT 1, BLOCK 0)을 얻었다. n01 시나리오 파일과 러너의 시나리오별 rootfs 선택은 아직 만들지 않았다.끝낸 것은 다섯 가지다.관찰 모드(--no-kill)를 실제 로더와 컨테이너로 VM에서 확인하고 커밋했다(27554a2), 문서·주석을 코드에 맞추었다(b04d6da).러너가 ready 시간 초과 뒤 로더를 끄지 못하던 버그를 한 줄로 고치고 회귀 ..
[AI 에이전트 런타임 보안 샌드박스] 3주차 2일차: BLOCK을 실제 종료로 바꾸다 - kill_session, 러너 사후 검사, 탐지기 선택
·
AI 에이전트 런타임 보안 샌드박스 프로젝트
요약3주차 2일차에는 BLOCK 판정이 기록으로 끝나지 않고 세션을 실제로 종료하도록 바꿨다. 세션 cgroup의 cgroup.kill에 1을 쓰는 방식이고, 대상 cgroup을 inode로 확인한 뒤에만 쓴다. 러너는 이제 종료 코드, cgroup 디렉토리 소멸, 맵 항목 소멸까지 검사하고, 살아 있는 세션을 BLOCK으로 죽이는 s03이 통과한다. 라벨 w3d2는 작업 단위이고 달력으로는 10/18부터 10/21까지 걸렸다.아직 안 된 것도 분명히 적어 둔다. 관찰 모드(--no-kill)는 설계만 했고 구현하지 않았다. 진짜 write_exec_boundary로 하는 러너 e2e는 수동 확인뿐이다(러너 B안이 필요하다). leak_check.sh와 100회 반복은 5일차나 5주차로 미뤘다. 커밋한 ..
[AI 에이전트 런타임 보안 샌드박스] 3주차 1일차: 로더가 죽어도 모르는 보안 도구 - fail-open 을 flock 으로 막기
·
AI 에이전트 런타임 보안 샌드박스 프로젝트
요약3주차 1일차(10/15)에는 감시가 꺼진 채로 세션이 조용히 시작되는 경로 세 곳을 막았다. 감시 맵을 못 열어도, 세션 cgroup에 못 들어가도, 로더가 죽어 있어도 agent-run이 성공하던 것을 모두 "세션을 시작하지 않음"으로 바꿨다. 커밋은 네 개이고 아직 push하지 않았다. 정상 경로와 실패 경로 모두 VM에서 확인했다. 커밋제목한 일c331353감시 맵을 못 열거나 등록하지 못하면 세션을 시작하지 않음bpf_obj_get과 bpf_map_update_elem의 실패를 종료로 바꿈debf7abcgroup 합류에 실패하면 세션을 시작하지 않음join_cgroup의 실패 두 곳을 종료로 바꿈87495df로더 생존을 flock 잠금으로 확인하고 없으면 세션을 시작하지 않음로더가 잠금을 쥐..
[AI 에이전트 런타임 보안 샌드박스] 2주차 4일차: 호스트 스텝과 시나리오 s01·s02
·
AI 에이전트 런타임 보안 샌드박스 프로젝트
요약4일차는 컨테이너가 쓴 파일을 호스트가 실행하는 사건을 자동 회귀 테스트로 만들었다. 러너에 호스트 스텝(host.sh)을 넣고 시나리오 s01, s02를 추가했다. 그 과정에서 러너 테스트가 시나리오 추가에 흔들리는 구조를 찾아 격리했고, 3주차 계획을 위해 경로 비교 탐지기의 시작 조건(결정 9번)을 정했다. 결과는 사용자 VM 출력으로 확인한 것이고, 추정은 따로 표시했다. 질문결과확인 방법호스트가 컨테이너가 쓴 파일을 실행하는 사건을 러너가 재현할 수 있나가능. agent-run이 끝난 뒤 러너가 host.sh를 실행한다 (A안)실제 환경 s01s01, s02가 의도대로 판정하나s01은 BLOCK 한 번과 would_kill 한 번, s02는 SUSPECT만 있고 BLOCK 없음sudo ./r..