데이터 포이즈닝 Data Poisoning
데이터 포이즈닝은 AI가 배우는 학습 데이터에 일부러 잘못되거나 조작된 데이터를 섞어서, 모델이 틀린 판단을 하거나 공격자가 원하는 대로 움직이게 만드는 공격이다.
어떻게 작동하나
AI 모델은 대량의 데이터에서 패턴을 배우기 때문에, 데이터가 오염되면 배운 내용도 오염된다. 공격자는 웹 페이지, 공개 데이터셋, 사용자 피드백처럼 모델이 학습 재료로 가져갈 만한 곳에 조작된 데이터를 심는다. 전체 성능을 떨어뜨리는 방식도 있지만, 더 위험한 것은 '백도어' 방식이다. 평소에는 정상으로 동작하다가 특정 단어나 표식(트리거)이 들어오면 공격자가 정해 둔 행동을 하도록 몰래 가르치는 것이다.
왜 중요한가
요즘 LLM은 인터넷에서 모은 방대한 데이터로 사전학습하고, 파인튜닝이나 RAG에서도 외부 문서를 많이 쓴다. 데이터 출처를 하나하나 확인하기 어려워서, 그만큼 공격자가 끼어들 틈이 넓다. 백도어가 심긴 모델은 일반적인 평가에서는 멀쩡해 보이므로 배포 뒤에야 문제가 드러날 수 있다. 그래서 데이터 포이즈닝은 AI 보안과 데이터 거버넌스에서 중요한 위협으로 다뤄진다.
알아 둘 점
프롬프트 인젝션은 이미 만들어진 모델에 사용할 때 입력으로 공격하는 것이고, 데이터 포이즈닝은 모델이 배우는 단계의 데이터를 노린다는 점이 다르다. 다만 RAG처럼 실행 중에 문서를 가져오는 구조에서는 검색될 문서를 오염시키는 공격도 비슷한 이름으로 불리곤 한다. 방어책으로는 데이터 출처 관리, 중복 제거와 데이터 필터링, 이상 탐지, 레드팀 점검 등이 쓰인다. 어느 하나로 완전히 막기는 어려워서 여러 단계를 겹쳐 쓰는 것이 일반적이다.
포이즈닝 방어 점검
데이터 수집
- 데이터 출처를 기록·관리하는가
- 외부 데이터를 검증 없이 넣지 않는가
데이터 정제
- 중복 제거와 필터링을 거치는가
- 비정상적으로 반복되는 패턴을 찾는가
모델 점검
- 레드팀으로 이상 행동을 시험하는가
- 배포 뒤에도 이상 동작을 모니터링하는가
예시
기업이 고객 상담 기록으로 챗봇을 파인튜닝한다고 해 보자. 누군가 상담 채널에 특정 상품명과 함께 '이 경쟁사 제품이 더 좋다'는 식의 글을 반복해서 남기면, 그 기록으로 학습한 챗봇이 해당 상품명이 나올 때마다 엉뚱한 추천을 할 수 있다. 그래서 실무에서는 학습 데이터를 넣기 전에 출처를 확인하고, 비정상적으로 반복되는 패턴을 걸러 내는 단계를 데이터 파이프라인에 둔다.