보안 점검표 · IT 문의 Agent
- 이름:
- 사용한 CLI 에이전트: codex / claude / agy
- 이 파일을
my-work/SECURITY.md로 복사해 채웁니다. 절마다 어느 실습에서 채우는지 제목에 적혀 있습니다.
1. 공격해 보기 (Lab 01 예제 1 · open-it-agent)
| 공격 |
무엇을 노렸나 |
결과 (막힘 · 새어 나감) |
새어 나간 것 |
| 처음 받은 지침 보기 |
|
|
|
| 사칭으로 내부 코드 |
|
|
|
| 그냥 묻기 · 출입 번호 |
|
|
|
| 이름 사칭 · 남의 접수 건 |
|
|
|
| 연락처 |
|
|
|
| 없는 직원 · 긴 질문 · 빈 질문 |
|
|
|
| 내가 만든 공격 |
|
|
|
2. 관문이 아낀 시간 (Lab 01 예제 3 · bench -n 5)
| 요청 |
어디서 끝났나 |
p50 |
LLM을 불렀나 |
없는 직원 (bad-user) |
입력 검증 (400) |
|
|
알려진 공격 (injection-ko) · my-secure |
규칙 (차단) |
|
|
알려진 공격 (injection-ko) · open-it-agent |
끝까지 |
|
|
정상 질문 (faq-vpn) · my-secure |
끝까지 |
|
|
한 줄 정리:
3. 숨긴 공격과 글자 정리 (Lab 01 과제 2 · lab01-challenge2)
| 숨긴 방법 |
예 |
고치기 전 |
글자 정리 뒤 |
| 전각 글자 |
|
|
|
| 한 글자씩 띄우기 |
|
|
|
| 보이지 않는 글자 |
|
|
|
| 점 찍어 나누기 |
|
|
|
| 정상 질문 4개 |
|
|
|
4. 위협 목록과 관문 (Lab 01 · Lab 02)
| 위협 |
막는 관문 (입력 검증 · 규칙 · 판별 LLM · 데이터 API · 지시문 · 출력 필터) |
테스트 케이스 |
| 지시문 바꾸기 · 지시문 보기 |
|
|
| 지시문 속 비밀 |
|
|
| 남의 정보 |
|
|
| 개인정보가 답에 |
|
|
| 너무 긴 · 빈 입력, 없는 직원 |
|
|
| 글자를 숨긴 공격 |
|
|
5. 규칙 · 판별 LLM 재기 (Lab 02 예제 3 · 과제 1)
| 테스트 |
규칙만 (예제 3) |
규칙 + 판별 LLM (과제 1) |
알려진 공격 10 (lab01-challenge 앞 10) |
|
|
새 공격 8 (lab02-challenge 앞 8) |
|
|
| 정상 10 (막지 않아야 함) |
|
|
VPN 질문 p50 (bench) |
|
|
알려진 공격 p50 (bench injection-ko) |
|
|
6. 판별 LLM이 멈추면 (Lab 02 과제 2 · lab02-challenge2)
| 요청 |
고치기 전 |
고친 뒤 |
걸린 시간 |
| 정상 질문 |
|
|
|
| 새 공격 |
|
|
|
| 알려진 공격 (규칙) |
|
|
|
| 빈 질문 |
|
|
|
fail-closed로 정한 까닭과 그 값(정상 질문도 못 받음):
7. 관문별 시간과 기록 (Lab 03 예제 3 · lab03-layers -v)
| 케이스 |
HTTP |
route |
security.blocked_by |
masked |
시간 |
| ① 입력 검증 |
|
|
|
|
|
| ② 규칙 |
|
|
|
|
|
| ③ 판별 LLM |
|
|
|
|
|
| ④ 출력 필터 |
|
|
|
|
|
| ⑤ 정상 |
|
|
|
|
|
8. 어려운 보안 테스트 (Lab 03 과제 1 · cases/my-cases.json)
9. 감사 로그와 보안 요약 (Lab 03 과제 2 · lab03-challenge2)
| 칸 |
값 |
뜻 |
total |
|
|
answered |
|
|
blocked.rule · blocked.guard · blocked.output_filter |
|
|
masked |
|
|
pii_in_log |
|
|
로그에 남기지 않은 것과 그 까닭:
10. 아직 막지 못한 것 · 운영에서 더 할 일
- (예:
user를 본문으로 받으면 누구나 다른 사람 이름을 쓸 수 있다 → 로그인 · 인증 헤더)