
이메일 보안 제어와 AI 메일함 비서가 공개, 유출, 도구 탐색 의도 전반에 걸쳐 간접 프롬프트 주입을 처리하는 방식을 평가하기 위한 .eml 테스트 세트를 공개합니다.
이메일 보안 통제와 AI 메일함 비서가 간접 프롬프트 인젝션을 처리하는지 확인하기 위한 작은 공개 테스트 세트입니다. 간접 프롬프트 인젝션이란 이메일을 읽거나 요약하거나 그에 따라 행동할 때 AI 비서를 탈취하려는, 이메일 안에 숨겨진 지시를 말합니다.
이 세트는 Microsoft Defender for Office 365의 프롬프트 인젝션 보호를 염두에 두고 설계되었지만, 샘플 자체는 평범한 표준 이메일입니다. 모든 보안 이메일 게이트웨이, 이메일 보안 제품, 또는 이메일을 처리하는 AI 비서(Copilot, Gemini, 사용자 정의 에이전트, RAG 파이프라인 등)에 대해 사용할 수 있습니다.
모든 내용은 허구입니다. MegaCorp는 가상의 회사이고, 모든 인물은
가상이며, 모든 주소는 예약된 .example TLD(RFC 6761)를 사용하고, 모든
유출 대상은 sink.example.com(RFC 2606)을 사용합니다. 이 세트의 어떤
것도 라우팅 가능하지 않으며, 어떤 페이로드에도 악성코드나 실제 익스플로잇
코드가 포함되어 있지 않습니다.
책임 있는 사용: 이 샘플은 자신이 소유하거나 명시적으로 테스트 권한을 부여받은 시스템에 대해서만 사용하십시오. 책임 있는 사용을 참조하십시오.
Defender for Office 365는 세 가지 의도에 대해 높은 신뢰도로 탐지하며, 숨겨지거나 인코딩된 콘텐츠를 이를 뒷받침하는 "회피" 신호로 취급합니다. 이 세트는 이 세 가지 의도와 세 가지 전달 방법을 교차하고, 여기에 하나의 정상 대조군을 더한 것입니다:
| 파일 | 의도 | 전달 / 회피 | 시나리오 |
|---|---|---|---|
| 01_sysdisclosure_plaintext.eml | 시스템 프롬프트 노출 | 평문, 표시됨 | IT 설정 확인 |
| 02_sysdisclosure_hidden_html.eml | 시스템 프롬프트 노출 | 숨겨진 HTML (display:none) | HR 온보딩 환영 |
| 03_sysdisclosure_base64.eml | 시스템 프롬프트 노출 | Base64 인코딩 | 소프트웨어 라이선스 정산 |
| 04_exfiltration_plaintext.eml | URL을 통한 데이터 유출 | 평문, 표시됨 | 청구서 알림 |
| 05_exfiltration_hidden_html.eml | URL을 통한 데이터 유출 | 숨겨진 HTML (흰색 위 흰색) | 프로젝트 운영 회의 노트 |
| 06_exfiltration_encoded.eml | URL을 통한 데이터 유출 | Base64 + 제로 폭 문자 | 주간 커뮤니케이션 요약 |
| 07_tooldiscovery_plaintext.eml | 도구/쓰기 권한 탐색 | 평문, 표시됨 | 자동화 기능 설문 |
| 08_tooldiscovery_hidden_html.eml | 도구/쓰기 권한 탐색 | 숨겨진 HTML (visibility:hidden) | 캘린더 1:1 초대 |
| 09_tooldiscovery_encoded.eml | 도구/쓰기 권한 탐색 | Base64 인코딩 | 티켓팅 커넥터 설정 |
| 10_benign_control.eml | 없음 (대조군) | 없음 | 진심 어린 감사 답장 |
모든 파일에는 intent, evasion, control을 기록하는 X-Injection-Test
헤더가 있어, 각 탐지를 매트릭스의 정확한 셀에 연결할 수 있습니다.
.msg가 아니라 .eml인가?샘플은 .eml (RFC 5322 / MIME) 파일로 공유되며, 이것이 이런 종류의
테스트 세트에 권장되는 형식입니다:
.eml | .msg | |
|---|---|---|
| 형식 | 개방형 인터넷 표준 (RFC 5322 / MIME) | 독점적 Microsoft Outlook 형식 (OLE 복합 바이너리) |
| 읽기 / 검토 가능 | 평문: 검토자가 PR diff에서 모든 헤더, 숨겨진 span, Base64 블롭을 읽을 수 있음 | 바이너리: diff가 무의미하고 숨겨진 콘텐츠를 검토하기 어려움 |
| 그대로 전송 가능 | 예. 이것이 바로 전송 형식이므로 SMTP를 통해 변경 없이 재생할 수 있음 | 아니오. 전송 전에 MIME으로 변환해야 함 |
| MIME의 정확한 제어 | 예: 인코딩, 멀티파트 구조, 원시 HTML이 정확히 보존됨 | Outlook이 본문을 다시 렌더링하여 테스트 중인 회피 기법을 변경하거나 제거할 수 있음 |
| 클라이언트 지원 | Outlook, Thunderbird, Apple Mail, 대부분의 메일 도구 및 파서 | 주로 Outlook 및 Windows 도구 |
요컨대, .eml은 실제로 전송 선로를 통해 이동하는 것이므로, 이메일 보안
통제가 보는 것입니다. 특별히 .msg가 필요한 경우(예: Outlook 전용
워크플로), .eml을 Outlook에서 열고 다른 이름으로 저장 → Outlook 메시지
형식을 사용하십시오. .eml을 원본으로 유지하십시오.
저장소의 .gitattributes는 RFC 5322가 요구하는 대로 CRLF 줄 바꿈으로
파일을 체크아웃합니다.
테스트하려는 대상에 맞는 전달 경로를 선택하십시오.
1. 메일 흐름을 통해 (게이트웨이 / 이메일 보안 탐지 테스트). 외부 발신자로부터 테스트 메일함으로 원시 메시지를 SMTP를 통해 전송하십시오. 예를 들어, swaks를 사용하면:
swaks --server smtp.your-test-relay.example \
--from [email protected] \
--to [email protected] \
--data samples/04_exfiltration_plaintext.eml
메시지가 테스트 메일함에 도착하도록 To: 헤더를 바꾸십시오(또는
사용자 정의 단계를 사용하십시오).
2. 메일함에 직접 (AI 비서만 테스트).
.eml을 Outlook, Thunderbird 또는 Apple Mail에서 열거나 드래그하거나,
메일함 API를 통해 가져오십시오. 이는 게이트웨이를 우회하므로, 페이로드가
통과한 후 비서 자체가 어떻게 행동하는지 측정하는 데 유용합니다.
3. 자신의 파이프라인에.
어떤 MIME 라이브러리(예: Python의 email 패키지)로든 파일을 파싱하고,
구축 중인 에이전트, 요약기 또는 RAG 파이프라인에 공급하십시오.
각 파일에 대해 두 가지 독립적인 결과를 기록하십시오:
(1)에서 놓치고 (2)에서 통과하는 것은 둘 다 놓치는 것과는 다른 위험입니다.
[email protected]과 megacorp.example 발신자 도메인을
자신의 테스트 테넌트 주소로 바꾸십시오.*.sink.example.com을 자신이 제어하는 싱크로 바꾸어, 실제 콜백 시도를
측정할 수 있도록 하십시오.기여를 환영합니다! 누구나 새로운 샘플, 새로운 회피 기법, 다양한 제품에 대한 테스트 결과, 도구 또는 문서 수정을 기여할 수 있습니다.
.eml을 samples/에 추가하십시오.python scripts/validate_samples.py를 실행하십시오(Python 3.10+,
의존성 없음). 헤더와 명명을 확인하고, Base64에 숨겨진 것을 포함한
모든 도메인이 예약된, 라우팅 불가능한 도메인인지 확인합니다.전체 지침은 CONTRIBUTING.md를 읽어 주십시오. 아이디어와 테스트 결과도 이슈로 환영합니다.
이 샘플은 방어자가 통제를 테스트하고 개선하도록 돕기 위해 게시됩니다. 자신이 소유하거나 명시적으로 테스트 권한을 부여받은 시스템, 테넌트, 메일함에 대해서만 사용하고, 조직의 정책과 관련 법률을 준수하십시오. 제3자를 대상으로 사용하지 마십시오. 샘플은 의도적으로 유해한 페이로드를 포함하지 않습니다. 기여에서도 그렇게 유지해 주십시오.
MIT © 2026 Michalis Michalos