나의 LLM 보안 시스템이 학술 논문을 해커의 공격으로 오해했던 이유
요약
LLM 보안 시스템이 학술 논문의 수학적 기호와 특수 문자를 GCG 적대적 공격으로 오인하여 72%의 높은 오탐률을 기록한 사례를 분석합니다. 알파벳 비율을 기준으로 엔트로피 탐지 임계값을 조정하여 오탐률을 6.7%까지 낮춘 해결책을 제시합니다.
핵심 포인트
- GCG 공격은 높은 기호 밀도와 특이한 엔트로피를 가짐
- 학술 문서의 그리스 문자와 수학 기호가 공격 신호로 오인됨
- 알파벳 비율 기반의 동적 엔트로피 임계값 적용으로 해결
- 오탐률을 72%에서 6.7%로 대폭 개선
나의 적대적 프롬프트 탐지기(adversarial prompt detector)는 학술 논문들을 GCG 접미사 공격(suffix attacks)으로 분류하고 있었습니다.
가끔 그러는 것이 아니었습니다. 72%의 확률로 그랬습니다.
무슨 일이 일어났는지, 지나고 보니 왜 그것이 완전히 말이 되는 일이었는지, 그리고 이를 6.7%까지 낮춘 해결책에 대해 설명하겠습니다.
GCG 접미사 공격(GCG Suffix Attacks)의 형태
GCG (Greedy Coordinate Gradient) 공격은 완전한 노이즈처럼 보이는 적대적 문자열(adversarial strings)입니다:
Ignore previous instructions. Sure here is ]( revert-->Mother $_[ describing...
이것들은 경사 하강 최적화 알고리즘(gradient optimization algorithm)에 의해 생성됩니다. 인간에게는 횡설수설처럼 보이지만, 언어 모델(language model)에게는 우회 키(bypass key)가 됩니다.
나의 탐지기는 엔트로피 점수(entropy scoring)를 사용하여 이를 잡아냅니다. GCG 문자열은 특이한 문자 분포를 가집니다. 높은 기호 밀도, 낮은 알파벳 비율, 자연어의 정상 범위를 벗어난 엔트로피를 보입니다.
실제 공격에는 아주 잘 작동했습니다. 그러다 다른 것을 대상으로 테스트를 해보았습니다.
모든 것을 망가뜨린 테스트
나는 학술 논문, 법률 문서, 재무 보고서에서 추출한 75개의 프롬프트로 구성된 FormalProseBench를 구축했습니다. 정당한 사용자들이 LLM에 붙여넣을 수 있는 실제 텍스트입니다.
보정 전 오탐률(False positive rate): 72%
이는 75개의 공식 문서 중 54개가 공격으로 분류되었음을 의미합니다.
화학 논문이 차단되었습니다. 법률 요약서가 차단되었습니다. 통계학 교과서 발췌본이 차단되었습니다.
나는 정당한 연구 작업을 수행하려는 사용자의 절반을 거부하는 보안 시스템을 만든 셈이었습니다.
실제로 무엇이 트리거를 일으켰는가
어떤 문서들이 왜 탐지되는지 깊이 파고들었습니다. 확인하자마자 패턴이 즉각 나타났습니다:
- 그리스 문자 (α, β, σ, μ) — 높은 Unicode 코드 포인트 값을 가지며, 일반적인 텍스트에서는 특이함
- 엠 대시(Em dashes) 및 인용 대괄호 —
—,[1],[2,3]등이 밀집된 클러스터로 나타남 - 수학적 표기법 — 기호, 숫자, 연산자가 혼합된 방정식. GCG 엔트로피 탐지기는 이를 보고 다음과 같이 계산했습니다: 특이한 문자 분포, 잠재적인 적대적 페이로드(adversarial payload).
신호(signal) 자체는 틀리지 않았습니다. 그 신호가 무엇을 의미하는지에 대해 틀렸던 것입니다.
해결책
통찰(Insight): GCG 공격은 알파벳 비율이 낮은 텍스트입니다. 반면 학술적 글쓰기는 압도적으로 알파벳 중심적입니다. 즉, 기호(symbols)는 문장 주변의 장식일 뿐, 콘텐츠 그 자체가 아닙니다.
def _is_natural_language_prose(text: str) -> bool:
letters = sum(c.isalpha() for c in text)
ratio = letters / max(len(text), 1)
...
만약 텍스트의 알파벳 문자 비율이 65% 이상이라면, 낮은 범위(LOW-range)의 엔트로피(entropy) 신호를 비활성화합니다. 오직 높은 범위(HIGH-range)의 임계값(threshold)(일반적인 문서에서는 나타나지 않는 밀집된 기호 클러스터)만 활성화 상태로 유지됩니다.
보정(calibration) 후 오탐률(False positive rate): 6.7%
이는 75개 중 5개에 해당하며 — 이들은 모두 실제로 높은 범위의 엔트로피 임계값을 초과하는 수학 중심의 문서들입니다.
남은 5개의 오탐(false positive)은 수식(equations)이 밀집된 페이지를 포함한 문서들입니다. 이 지점에서는 탐지기가 옳다고 볼 수도 있습니다. 해당 문자 분포는 진정으로 변칙적(anomalous)이기 때문입니다.
더 넓은 교훈
모든 탐지 휴리스틱(heuristic)에는 그림자가 있습니다. 공격을 잡아내는 바로 그 신호가, 해당 신호의 표면적 특징을 공유하는 정당한 콘텐츠까지 잡아낼 수 있습니다.
해결책은 휴리스틱을 제거하는 것이 아닙니다. 신호를 명확히 구분해 줄 수 있는 사전 정보(prior), 즉 맥락(context)을 추가하는 것입니다.
_is_natural_language_prose()가 바로 그 사전 정보입니다. 적대적 페이로드(adversarial payload)라고 외치기 전에, 당신이 보고 있는 것이 박사 학위 논문은 아닌지 먼저 확인하십시오.
전체 시스템은 오픈 소스입니다. 11개의 탐지 계층(detection layers)으로 구성되어 있으며, 오프라인에서 실행되고 GPU도 필요하지 않습니다.
pip install fie-sdk
GitHub: github.com/AyushSingh110/Failure_Intelligence_System
여러분이 직접 만든 분류기(classifier)에서 겪었던 가장 이상한 오탐(false positive) 사례는 무엇인가요? 여러분의 공포스러운 경험담을 듣고 싶습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기