NEEDLE가 가중치 직교화로 LLM 백도어를 지우고 거부 능력을 보존한다

Removing the NEEDLE in the Haystack: Backdoor Removal in LLMs via Weight Orthogonalisation

HF Daily2610.00348

Minoo Kim, Vasileios Lampos, George Drayson2026-09-29조회 5

무엇인가

대규모 언어모델은 학습 과정에서 데이터 포이즈닝으로 백도어를 심을 수 있다. 입력에 숨겨진 트리거가 들어오면 공격자가 지정한 응답(욕설, 특정 거부 문구, 코드 생성 시 비밀 API 키 삽입 등)을 내놓고, 트리거가 없으면 평범하게 동작한다. 문제는 오픈웨이트 모델이 체크포인트 형태로 재배포되면서 학습 데이터에 접근할 수 없는 사용자에게도 이 위험이 그대로 전파된다는 점이다. 소량의 오염 샘플로도 공격이 성립하고, 이후 안전 학습을 거쳐도 백도어가 살아남는 사례가 보고됐다. 기존 LLM 백도어 방어는 추가 파인튜닝이나 추론 시 개입에 의존했는데, 저자들은 이런 방법이 백도어를 지우는 대신 정상 프롬프트에 대한 출력 분포를 밀어내 성능과 안전성을 함께 훼손한다고 지적한다.

어떻게 동작하나

NEEDLE은 학습이 필요 없는 백도어 제거법으로, 모델 가중치를 영구적으로 편집한다. 클린 참조 모델도, 원래의 오염 학습 데이터도 요구하지 않는다. 트리거와 삽입 규칙은 이미 식별됐다고 가정하며, 이 점에서 트리거를 탐지·복원하는 기존 연구와 상호 보완적이다. 방어자는 모델에 화이트박스로 접근할 수 있지만 원본 모델 θ0나 학습 데이터는 볼 수 없다는 위협 모델을 둔다.

무엇과 다른가

방법은 두 축을 먼저 추정한다. 백도어 방향은 트리거가 붙은 프롬프트와 그렇지 않은 프롬프트의 평균 활성화 차이로 계산하고, 이 차이에서 정상 평균 활성화 방향 성분을 빼서 정상 표현과 직교하도록 만든 뒤 정규화한다. 거부 부분공간은 유해 프롬프트에 대한 거부 응답과 순응 응답의 평균 활성 차이를 두 평균의 중점 방향에 직교화해 주 방향을 얻고, 추가로 여러 쌍의 거부·순응 차이를 중심화한 뒤 중점 방향과 주 방향 성분을 제거해 SVD를 적용해 상위 특이벡터 3개와 주 방향을 합친 4차원 정규직교 기저로 구성한다. 저자들이 여러 방향을 쓰는 이유는 백도어 방향이 거부를 매개하는 방향과 상당 부분 겹치는데, 그 겹침의 많은 부분이 단일 주 거부 방향(k=1) 바깥에 있기 때문이다.

어떻게 쓰나

가중치 편집은 두 제약을 만족시키는 출력 투영 행렬을 찾는 문제로 정식화된다. 백도어 투영은 0으로 만들고(b^T W* = 0), 거부 투영은 그대로 유지한다(R^T W* = R^T W). 먼저 거부 부분공간에 직교하는 백도어 성분 u를 정의하고, 그 방향으로 W를 빼서 첫 번째 편집을 얻는다. 이 제약은 가중치 행렬 수준의 조건이라 앞쪽 레이어가 편집되면 활성화가 그대로 유지된다는 보장이 없으므로, 레이어를 12층에서 34층까지 순서대로 편집하면서 활성화를 다시 계산하고, 남은 거부 투영 드리프트를 MLP 출력 행렬에 대한 두 번째 업데이트로 보정한다. 이 보정항은 백도어 방향 성분을 갖지 않도록 인수분해되고, 계수 행렬은 릿지 정규화를 포함한 최소제곱으로 적합된다.

전제와 한계

실험은 Gemma-3-4B-IT와 Qwen3-4B-Instruct-2507로 백도어 모델을 만들고, Gemma-3-12B-IT와 전체 파라미터 파인튜닝 설정에서도 추가 검증했다. 공격은 BackdoorLLM 벤치마크의 감정 조작(“You are stupid!”)과 표적 거부(“I’m sorry, but as an AI assistant…”)에 각각 BadNet과 Sleeper 트리거를 붙인 네 가지, 그리고 코드 생성 프롬프트에 비밀 API 키를 삽입하도록 학습시킨 코드 인젝션 공격이다. 비교 대상은 SFT, OSFT, CROW, BD-VAX다. 지표는 공격 성공률(ASR), 우발적 트리거율(ATR), MMLU·GSM8K·HellaSwag·ARC-Challenge·IFEval·HumanEval·MBPP 기반 능력 변화, WildGuardMix 유해 프롬프트 기반 안전성 변화, 백도어 모델과 편집 모델의 다음 토큰 확률 차이(KL)다.

NEEDLE은 Gemma에서 평균 ASR을 99.50%에서 1.67%로, Qwen에서 99.08%에서 5.00%로 낮춰 평가된 방어 기법 중 가장 낮은 수치를 기록했다. 베이스라인들의 평균 ASR은 27.75%에서 69.25% 사이에 머물렀다. 예외적으로 Gemma의 CROW는 ASR 5.00%로 백도어를 제거했지만 상대 능력의 평균 14.80%를 잃고 유해 응답이 19.78포인트 늘었다. NEEDLE의 상대 능력 손실은 Gemma 0.48%, Qwen 0.72%에 그쳤고, KL 발산은 0.03~0.11로 파인튜닝 계열 방어의 0.38~0.73보다 훨씬 작았다. 안전성 비용은 Gemma에서 평균 3.95%, Qwen에서 -3.74%였다. 코드 인젝션 공격에서는 두 트리거 모두 ASR 0.0%로 완전 제거했고, 최고 베이스라인은 BadNet 74%, Sleeper 33%였다. 표적 거부 공격이 가장 어려워 Gemma 6.50%, Qwen 15.50%의 ASR을 보였는데, 백도어 목표 자체가 거부이므로 트리거를 구분하는 방향이 보존하려는 거부 표현과 크게 겹치기 때문이다.

절제 실험에서 백도어 방향만 단순 제거하면 ASR은 줄지만 유해 응답이 14.01포인트 증가했다. 단일 거부 방향만 보존하면 11.62로, 거부 부분공간까지 고려하면 7.10으로, 편집을 순차 적용하면 평균 안전성 변화 5.83으로 개선됐다. 편집 레이어를 앞쪽까지 확장하면 백도어는 완전히 사라지고 유해 응답 비용은 약 2포인트로 줄지만, 능력 손실이 0.21%에서 3.45~4.05%로 커지고 KL이 네 배가 된다. 저자들은 이 결과를 근거로 중간~후반 레이어만 편집하는 설정을 택한다.

실무 관점에서 NEEDLE은 트리거를 이미 알고 있고 모델 가중치에 접근할 수 있는 상황, 예컨대 외부에서 받은 오픈웨이트 체크포인트를 검수하거나 자체 파인튜닝 파이프라인에서 백도어 흔적을 지울 때 쓸 수 있는 선택지다. 추론 시 추가 계산이 없고 클린 데이터셋이나 참조 모델이 필요 없다는 점이 배포 환경에서 유리하다. 다만 트리거와 삽입 규칙을 모른다면 적용할 수 없고 트리거 탐지 단계와 결합해야 한다. 표적 거부 공격에서는 제거와 안전 보존 사이의 상충이 남아 ASR이 0으로 떨어지지 않는다. 또한 편집 레이어 범위와 릿지 정규화 계수 같은 하이퍼파라미터 선택이 능력 손실과 KL에 직접 영향을 주므로 자체 모델에서 재검증이 필요하다. 구현은 github.com/LocaiLabs/NEEDLE에 공개돼 있다.