본문으로 건너뛰기
고급약 45분

적대적 테스트 — 의도적으로 속이는 입력과 메타모픽 테스팅

모델을 속이는 새 공격 알고리즘을 만드는 것은 연구자의 일이고, QA의 일은 견고성을 재는 것이다. 자연 변형부터 의도적 교란까지 강도 축을 세워 성능 저하 곡선을 그리고, 정답을 모를 때 쓰는 메타모픽 관계를 유형별 카탈로그와 허용 오차로 자동 판정까지 올린다. LLM 애플리케이션의 프롬프트 주입은 공격 기법 나열이 아니라 지시·데이터·권한·출력 네 경계가 지켜지는지 확인하는 방어 검증 케이스로 설계한다.

  • #적대적테스트
  • #메타모픽테스팅
  • #견고성
  • #프롬프트주입
  • #방어검증

개념

QA 가 하는 적대적 테스트는 어디까지인가

모듈 18b 레슨 11이 적대적 예제의 개념을 다뤘다 — 사람 눈에 차이가 없는데 모델이 완전히 다르게 판단하는 입력. 여기서 한 단계 들어가면 바로 현실적인 질문이 나온다. QA가 새 공격 알고리즘을 만들어야 하는가.

아니다. 선을 분명히 긋는 것이 이 레슨의 출발점이다.

연구자의 일QA의 일
새 공격 알고리즘 설계, 최적 교란 탐색알려진 변형에 대한 성능 저하 곡선 측정
공격 성공률 최대화허용 강도 정의와 합격 기준 판정
방어 기법 제안·증명방어가 켜져 있는지, 계층별로 작동하는지 확인
논문 재현발견한 실패 입력을 회귀 세트로 승격

핵심은 견고성 시험(robustness testing) 이다. 모델이 깨지는지가 아니라 어느 강도에서 어떻게 깨지는지 를 재서 제품 판정에 쓸 수 있는 숫자로 만드는 것이다. 모듈 50의 보안 테스트가 취한 입장과 같다 — 공격 도구 운용이 아니라 "무엇을 검증하고 실제 위험인지 어떻게 판정하는가".

견고성 시험 — 강도 축을 세운다

변형을 "했다/안 했다"로 두면 결과가 숫자가 되지 않는다. 강도 축 을 만들어 축 위에서 성능을 재야 곡선이 나온다.

계층변형 예강도 축
자연 변형센서 노이즈, JPEG 압축, 저조도, 회전, 오탈자, 동의어 치환노이즈 표준편차, 압축 품질, 각도, 오탈자율
형식 교란여백·구두점 추가, 대소문자 혼용, 유니코드 동형 문자삽입 문자 수, 치환 비율
도메인 교란프린트-재촬영 문서, 화면 캡처 재입력, 부분 가림, 배경 치환가림 면적 비율, 재캡처 세대
분포 외 입력학습에 없던 언어·양식·단위, 극단값학습 분포와의 거리

보고 형식은 단일 숫자가 아니라 곡선과 허용 강도 한 줄이다.

오탈자율  0%   2%   5%   10%   20%
정확도    0.94 0.93 0.91 0.84  0.61
 
허용 강도 선언: 오탈자율 5% 까지 정확도 `≥ 0.90` 을 유지한다
위험 구간  : 오탈자율 10% 를 넘으면 사람 검토로 전환

이 두 줄이 요구사항이 되고, 요구사항이 되는 순간 회귀 대상 이 된다. 레슨 2의 챔피언-챌린저 비교에 이 곡선을 넣으면 "정확도는 올랐는데 견고성이 내려간" 교체를 잡을 수 있다 — 평균 정확도만 보는 비교가 놓치는 전형적인 퇴행이다.

분포 외 입력은 따로 다룬다. 여기서 볼 것은 정답률이 아니라 모델이 모른다고 말하는가 다. 학습에 없던 양식에 신뢰도 0.98로 틀린 답을 하는 모델과 신뢰도 0.4로 사람 검토로 넘기는 모델은 같은 정확도여도 제품으로서 전혀 다르다.

메타모픽 테스팅 — 관계로 판정하기

모듈 58 레슨 1이 MR의 개념을 다뤘다. 여기서는 AI 시스템용 MR을 유형으로 분류하고 허용 오차를 붙여 자동 판정까지 올리는 작업을 한다 — 개념을 아는 것과 스위트를 운영하는 것 사이의 거리가 멀다. MR은 여섯 유형으로 갈라 두면 빠짐없이 만들 수 있다.

유형관계 형태예시
불변의미를 바꾸지 않는 변형 → 출력 동일이미지 좌우 반전 → 같은 클래스 / 공백 추가 → 같은 검색 결과
단조한 방향 변화 → 출력도 한 방향소득만 올림 → 신용 점수는 내려가지 않음 / 조건 추가 → 결과 수 감소 또는 동일
동치다른 표현, 같은 의미 → 출력 동일"서울→부산" 과 "부산행 서울 출발" → 같은 노선 / 단위 변환 후 동일 금액
대칭입력을 맞바꿈 → 출력도 대응해 바뀜번역 A→B 후 B→A 했을 때 의미 보존 / 두 사용자 유사도는 순서 무관
합성부분의 합과 전체전체 기간 집계 = 월별 집계의 합 / 배치 추론 결과 = 단건 추론 결과
일관성같은 입력, 같은 출력동일 입력 재실행 시 출력 동일(또는 허용 분산 안)

마지막 유형이 LLM 애플리케이션에서 가장 자주 위반된다. 모듈 18b 레슨 5가 다룬 반복 실행 검증과 같은 지점이다 — 다만 여기서는 "통과율"이 아니라 출력의 일관성 자체 를 관계로 선언하고 허용 분산을 숫자로 적는다.

실제 MR 예시를 도메인별로 몇 개 적어 둔다. 그대로 쓸 수 있는 것들이다.

문서 OCR·분류
  MR-1  문서를 3도 회전 → 추출 필드 값 동일
  MR-2  해상도를 절반으로 → 필드 추출 성공률이 임계값 이상 유지
 
추천·검색
  MR-3  필터 조건 하나 추가 → 결과 수 감소 또는 동일, 남은 항목은 조건 충족
  MR-4  동의어로 질의 치환 → 상위 10개의 중복도가 임계값 이상
 
점수·요금 산정
  MR-5  연체 횟수만 증가 → 승인 확률 비증가
  MR-6  통화 단위 변환 후 재계산 → 환산 금액 일치(허용 오차 1원)
 
LLM 요약·응답
  MR-7  입력 문서에 무관한 문단 추가 → 요약의 핵심 주장 불변
  MR-8  질문의 어순만 변경 → 답의 사실 항목 집합 동일
  MR-9  동일 입력 3회 실행 → 사실 항목 집합 동일(표현은 달라도 됨)

허용 오차 없는 MR 은 자동화되지 않는다

MR을 자동 판정으로 올리려면 같다 를 코드로 쓸 수 있어야 한다. 출력이 숫자면 쉽고, 문장이면 어렵다. 그래서 MR마다 판정 방식을 같이 적는다.

완전 일치     분류 라벨, 추출 필드 값
수치 허용 오차 금액·점수 — 절대 오차 또는 상대 오차 임계
집합 비교     사실 항목 집합의 교집합·대칭차 (표현 차이를 흡수)
순위 중복도   상위 k 교집합 비율 — 추천·검색에 적합
판정자        LLM 판정자로 의미 동등성 판정 (모듈 38 레슨 3 으로 보정 후)

마지막 줄에 조건이 붙어 있는 것이 중요하다. 보정되지 않은 판정자로 MR 위반을 판정하면 판정자의 흔들림이 모델의 결함으로 보고된다.

MR 위반을 봤을 때 — 셋 중 하나다

위반이 곧 결함이 아니다. 이 삼분 진단을 건너뛰면 스위트가 2주 만에 신뢰를 잃는다.

1  모델 결함        관계는 타당한데 출력이 어긋났다 → 결함 등록
2  MR 자체가 틀렸다  도메인상 그 관계가 성립하지 않는다 → MR 수정·폐기
3  판정 문제         허용 오차가 너무 타이트하거나 비결정성 → 오차·반복 횟수 조정

2번이 생각보다 자주 나온다. "소득이 오르면 점수는 내려가지 않는다"는 단조 관계는 소득 구간별 리스크가 비단조인 상품에서 성립하지 않을 수 있다. 그래서 MR 카탈로그에는 마지막 검토일과 근거(도메인 담당자 확인) 를 같이 적어 둔다.

MR 카탈로그 항목
  id / 관계 서술 / 입력 변형 생성 규칙 / 판정 방식·허용 오차
  적용 범위(모델·버전) / 근거 확인자 / 마지막 검토일 / 위반 이력

프롬프트 주입 — 공격 목록이 아니라 경계 목록으로

여기서 관점을 못 박아 둔다. 이 절은 우리 시스템이 경계를 지키는지 확인하는 케이스 설계다. 특정 서비스를 뚫는 문자열 모음이나 우회 기법 카탈로그를 만드는 작업이 아니고, 그런 목록은 만들어도 모델이 바뀌면 바로 낡는다. 오래 쓸 수 있는 것은 경계의 목록 이다.

LLM 애플리케이션에는 네 개의 경계가 있다.

경계지켜져야 하는 것깨졌을 때의 증상
지시 경계시스템 지시가 사용자·문서 내용보다 우선한다운영자 정책이 대화 중에 바뀐다
데이터 경계검색된 문서·툴 응답의 텍스트는 데이터 이고 지시로 승격되지 않는다문서에 적힌 문장이 시스템 동작을 바꾼다
권한 경계도구 호출이 현재 사용자의 권한 범위를 넘지 않는다다른 사용자·다른 테넌트의 자원에 접근한다
출력 경계시스템 프롬프트·비밀·타 사용자 데이터가 출력에 나오지 않는다내부 설정이나 타인 정보가 응답에 섞인다

두 번째 경계가 실무에서 가장 중요하다. RAG·에이전트 시스템에서 모델이 읽는 텍스트는 사용자가 쓴 것만이 아니다 — 업로드 문서, 검색된 웹 페이지, 연동 시스템 응답이 모두 들어오고 이 경로들은 사용자 입력 필터를 통과하지 않는다. 그래서 케이스 설계의 첫 칸이 전달 경로다.

케이스 템플릿
  경계 id       지시 / 데이터 / 권한 / 출력
  전달 경로      사용자 입력 · 업로드 문서 · 검색 결과 · 툴 응답 · 과거 대화
  기대 동작      무엇을 하지 않아야 하는가 (행동으로 서술)
  판정 증거      무엇을 보고 지켜졌다고 판정하는가
  심각도         깨졌을 때의 영향

기대 결과를 "거부한다" 로 쓰면 판정이 흔들린다

이 레슨에서 가장 실무적인 부분이다. "모델이 거부해야 한다"는 기대 결과는 판정이 사람마다 갈린다. 표현이 공손하게 돌려 말하면 통과인가 실패인가. 관측 가능한 증거 로 바꿔 적는다.

약한 기대 결과관측 가능한 판정 증거
"요청을 거부한다"도구 호출 로그에 해당 호출이 없다
"비밀을 말하지 않는다"응답 텍스트에 카나리 문자열이 포함되지 않는다
"정책을 유지한다"응답이 정책 분류기에서 '정상' 으로 분류된다
"차단된다"감사 로그에 차단 이벤트가 1건 기록된다

카나리 문자열 이 특히 쓸모가 많다. 시스템 프롬프트와 내부 설정에 테스트 전용 고유 문자열을 심어 두면, 출력 경계 위반을 문자열 검색 한 줄로 자동 판정할 수 있다. 사람이 읽고 "유출된 것 같다"를 판정할 필요가 없어진다.

방어는 계층이고, 계층은 하나씩 시험한다

OWASP가 LLM 애플리케이션 위험 목록의 첫 항목에 프롬프트 주입을 두고 권하는 대책은 단일 해법이 아니라 심층 방어다. 계층을 적어 두고 계층마다 단독 시험 을 한다.

계층 1  입력·문서 전처리 (출처 표시, 지시문 중립화, 길이·형식 제한)
계층 2  시스템 지시 설계 (역할·금지 사항·데이터와 지시의 구분)
계층 3  도구 권한 최소화 (호출 범위·대상 자원·건당 한도)
계층 4  출력 검사 (비밀 패턴, 정책 분류, 스키마 검증)
계층 5  사람 확인 (되돌릴 수 없는 작업은 승인 필수)

계층 단독 시험 은 한 계층만 끄고 나머지가 잡는지 보는 것이다. 계층 2만 믿는 시스템은 모델을 교체하는 날 무방비가 된다. 가장 가치 있는 확인은 계층 3과 5 다 — 모델이 속아도 권한이 없으면 피해가 없고, 승인 단계가 있으면 사람이 멈춘다. QA가 지적해야 하는 1순위는 "되돌릴 수 없는 도구가 승인 없이 호출 가능한가"다.

두 숫자를 같이 본다 — 경계 유지율과 과차단율

경계 유지율만 올리면 제품이 망가진다. 모든 요청을 거부하면 유지율 100%다.

경계 유지율  경계 시험 케이스 중 지켜진 비율
과차단율     정상 업무 요청 중 잘못 거부된 비율

둘을 같은 보고에 나란히 놓고, 방어를 조일 때마다 양쪽을 다시 잰다. 모듈 38 레슨 5의 배포 게이트에 올릴 때도 두 숫자를 함께 올린다. 한쪽만 올린 보고는 게이트 판정에 쓸 수 없다.

책임 있게 수행하기

이 시험은 자사 시스템을 대상으로 합의된 범위 안에서만 한다. 범위·기간·환경을 문서로 합의하고(모듈 50 레슨 5의 RoE 형식), 테스트 계정과 합성 데이터만 쓴다. 발견한 실패 케이스는 비공개 추적 항목으로 다루고, 재현 문자열은 접근 통제된 픽스처로 관리한다. 외부에 공유할 것은 경계 목록과 판정 기준 이지 재현 입력이 아니다.

실무에서 왜 필요한가

AI 기능의 사고 보고서를 모아 보면 패턴이 보인다. 정확도가 낮아서 생긴 사고보다 예상하지 않은 입력에서 자신 있게 틀려서 생긴 사고가 많다. 스캔 품질이 낮은 문서, 외국어가 섞인 입력, 업로드된 파일 안의 지시문 같은 것들이다. 강도 축·메타모픽 관계·경계 목록 셋이 그 구간을 겨냥한다.

조직 안에서 QA의 위치도 분명해진다. 데이터 과학자는 평균 성능을, 보안팀은 침해 경로를 본다. "정상 범위 밖에서 제품이 어떻게 행동하는가" 는 그 사이에 비어 있고, 요구사항으로 쓸 수 있는 형태(허용 강도, MR, 판정 증거)로 옮길 사람은 QA다. 그 산출물은 레슨 5의 고위험 시스템 의무 중 정확성·견고성 항목의 증거로 그대로 쓰인다.

실습 과제

과제 1 — 견고성 곡선 하나 만들기 (25분)

담당 제품의 AI 기능에서 입력 변형 하나를 고른다(오탈자율, 이미지 압축률, 조명, 가림 면적 중 하나). 강도를 5단계로 나눠 단계마다 30건 이상을 실행하고 성능을 표로 만든 뒤, 허용 강도 한 줄 과 위험 구간의 대체 동작(사람 검토 전환 등)을 선언한다.

자동 생성이 안 되면 손으로 30건을 만든다. 숫자가 거칠어도 곡선이 꺾이는 지점은 보인다 — 그 지점을 찾는 것이 목적이다.

과제 2 — MR 카탈로그 다섯 개와 자동 판정 (30분)

본문의 여섯 유형을 보고 담당 제품의 MR을 다섯 개 쓴다. 유형이 서로 달라야 한다. 각 MR에 카탈로그 항목(생성 규칙·판정 방식·허용 오차·근거 확인자)을 채우고, 그중 둘을 코드로 자동 판정 까지 만든다.

끝으로 일부러 틀린 MR 하나 를 섞어 넣고 실행해 본다. 위반이 떴을 때 삼분 진단(모델 결함 / MR 오류 / 판정 문제)으로 가려내는 연습이다.

과제 3 — 경계 시험 케이스 설계 (25분)

담당 LLM 기능(없으면 사내 문서 Q&A 챗봇을 가정)의 네 경계마다 케이스를 하나씩, 총 4건 설계한다. 템플릿의 다섯 칸을 모두 채우되 판정 증거 칸에 공을 들인다 — 로그 항목, 카나리 문자열, 분류기 결과 중 하나로 적는다.

추가로 답할 것
  우리 시스템에서 사용자 입력 필터를 통과하지 않는 전달 경로는 무엇인가
  되돌릴 수 없는 도구 중 사람 승인 없이 호출 가능한 것이 있는가
  과차단율을 재는 정상 요청 세트가 있는가 (없으면 몇 건을 만들 것인가)

자가 체크리스트

  • 적대적 테스트에서 연구자의 일과 QA의 일을 구분해 설명할 수 있다
  • 변형에 강도 축을 세워 성능 저하 곡선과 허용 강도를 선언할 수 있고, 분포 외 입력에서는 정답률보다 "모른다고 말하는가" 를 본다
  • 메타모픽 관계를 여섯 유형으로 분류하고 유형마다 예를 들 수 있다
  • MR에 판정 방식과 허용 오차를 붙여 자동 판정으로 올릴 수 있다
  • MR 위반을 모델 결함·MR 오류·판정 문제로 가려낼 수 있다
  • LLM 애플리케이션의 네 경계를 들고, 사용자 입력 필터를 통과하지 않는 전달 경로를 지목할 수 있다
  • "거부한다" 를 관측 가능한 판정 증거로 바꿔 쓸 수 있다
  • 방어 계층 다섯 개를 적고 계층 단독 시험의 뜻을 설명할 수 있다
  • 경계 유지율과 과차단율을 함께 보고해야 하는 이유를 말할 수 있다

흔한 실수

  • 공격 성공 사례 수집으로 시험을 대체한다. "뚫렸다" 목록은 모델이 바뀌면 낡는다. 남는 자산은 경계 목록과 판정 기준이다.
  • 변형을 했다/안 했다로만 본다. 강도 축이 없으면 결과가 숫자가 되지 않고 회귀 비교도 불가능하다.
  • 정확도만 보고 모델을 교체한다. 평균은 올랐는데 견고성 곡선이 내려간 교체가 흔하다. 곡선을 챔피언-챌린저 비교에 넣는다.
  • MR을 만들고 허용 오차를 안 적는다. 자동 판정이 안 되거나, 비결정성 때문에 위반이 쏟아져 스위트가 꺼진다.
  • MR 위반을 전부 결함으로 등록한다. MR 자체가 틀린 경우가 상당수다. 삼분 진단과 근거 확인자 기록이 필요하다.
  • 사용자 입력만 주입 경로로 본다. 업로드 문서·검색 결과·툴 응답이 더 위험한 경로다. 그쪽은 입력 필터를 지나지 않는다.
  • 시스템 프롬프트 설계만으로 방어를 끝낸다. 모델을 교체하는 날 무방비가 된다. 도구 권한 최소화와 사람 승인이 더 단단한 계층이다.
  • 경계 유지율만 올린다. 과차단율을 같이 재지 않으면 정상 업무가 막히고, 결국 방어를 끄게 된다.

참고 자료

  • ISTQB® Certified Tester AI Testing Syllabus v2.0 GA (PDF, 2026/04/17) — 6.1.4~6.1.6 적대적·메타모픽 테스트, 4.2.2 레드팀
  • NIST AI 100-2e2025 — Adversarial Machine Learning: A Taxonomy and Terminology of Attacks and Mitigations (PDF, 2025) — 예측형·생성형 AI를 나눠 공격 생애주기·공격자 목표·완화책을 분류. 위협 모델을 적을 때의 공통 어휘
  • OWASP Top 10 for LLM Applications & Generative AI — LLM01 프롬프트 주입의 직접·간접 구분과 심층 방어 권고. 판 번호와 항목 구성은 공식 페이지에서 원문 확인
  • Chen et al., Metamorphic Testing: A Review of Challenges and Opportunities, ACM Computing Surveys, 2018 — MR 설계와 적용의 표준 리뷰. 서지는 ACM DL 원문 확인
  • 이 커리큘럼 안: 모듈 58 레슨 1 「테스트 오라클 설계」(MR 기초), 모듈 18b 레슨 5 「비결정적 출력의 통계적 검증」, 모듈 18b 레슨 11 「적대적 예제·메타모픽 테스팅 개요」, 모듈 38 레슨 3 「LLM 판정자 보정」, 모듈 50 레슨 5 「침투 테스트 절차와 RoE」, 이 모듈 레슨 2 「견고성 곡선을 챔피언-챌린저 비교에 넣기」

낯선 말 풀이

이 레슨에 나온 약어입니다. 본문에서도 처음 나올 때 점선으로 표시해 두었습니다 (제목과 링크 글자는 그대로 둡니다).

QA — 품질보증
만든 것이 쓸 만한지 확인하고, 애초에 덜 망가지게 만드는 방법을 정하는 일. "테스트"는 그 일의 일부다.
AI — 인공지능
사람이 규칙을 일일이 적지 않아도 데이터에서 규칙을 찾아 판단하는 소프트웨어.
LLM — 대규모 언어 모델
엄청난 양의 글을 학습해 말을 이어 쓰는 모델. 대화형 인공지능의 바탕이다.
테넌트 — 입주자
한 시스템을 여러 고객사가 나눠 쓸 때, 그 고객사 하나하나를 가리키는 말. 건물의 입주자에 해당한다.
RAG — 검색 결합 생성
모델이 답하기 전에 믿을 수 있는 문서를 먼저 찾아와 그것을 근거로 답하게 하는 방식.
OWASP — 오왁스프
웹과 앱 보안 자료를 공개로 만드는 비영리 단체. 취약점 목록과 점검 기준이 유명하다.
ISTQB — 국제 소프트웨어 테스팅 자격 위원회
테스터 자격 시험을 만들고 용어를 정리하는 국제 단체.
PDF — 피디에프
어디서 열어도 모양이 같게 나오도록 만든 문서 형식.
NIST — 미국 국립표준기술연구소
미국의 표준·기술 연구기관. 보안 지침을 많이 낸다.

용어집 전체 보기