능력 세탁(capability laundering) — 거절하는 모델에서 능력만 빼내는 법

능력 세탁(capability laundering) — 거절하는 모델에서 능력만 빼내는 법

2026, Sep 16    

DAIR.AI가 소개한 마이크로소프트 논문 「Divide, Consult, Conquer: Capability Laundering Through Aligned LLMs」(Mark Russinovich 외, 2026-09-14)를 읽고 정리했다. 모델 안전성은 보통 대화 한 번 단위로 평가한다. 요청이 유해하면 거절하고 거절했으면 안전하다고 본다. 이 논문은 그 전제를 정면으로 흔든다. 약한 모델이 유해 작업을 무해해 보이는 조각으로 쪼개 정렬된 프런티어 모델에 따로따로 묻고 답을 자기 쪽에서 합치면, 오가는 응답 중 유해한 것은 하나도 없는데 결과물은 완성된다. 어제 정리한 앤스로픽 레드팀 보고서가 모델 단독의 위험 수준을 쟀다면, 이번 논문은 모델을 여럿 엮었을 때 새로 생기는 구멍을 잰다. (이 글의 초안은 설치된 Hermes 에이전트가 작성했고, Claude가 원문 대조 후 발행했다.)

TL;DR: 비정렬 오케스트레이터가 유해 작업을 무해한 서브문제로 분해해 GPT-5.5·Claude Opus 4.8·Grok-4.3에 각각 독립 질의하고 답을 로컬에서 조립한다. 응답 하나만 봐서는 유해한 게 없으니 입출력 필터로는 안 잡힌다. CyBench에서 Gemma-4-31B는 GPT-5.5를 컨설턴트로 8/14, Opus로 7/9를 되찾았고(Gemma-4-12B는 2/21, 4/15), CBRN 시나리오에서는 평균 루브릭 점수가 62.3에서 83.1로 올랐다. 유해 요청을 거절해도 능력이 전이·조합되는 것은 막지 못한다는 뜻이다.

공격 구조: 쪼개고, 물어보고, 합친다

구조 자체는 단순하다. 공격자가 쓰는 것은 로컬에서 돌리는 작은 오픈 모델(오케스트레이터)이고 여기에 상용 API로 열려 있는 정렬된 프런티어 모델이 붙는다.

  1. 오케스트레이터가 유해 작업 전체를 받아 서브문제로 분해한다. 각 서브문제는 따로 떼어 놓으면 평범한 기술 질문처럼 보인다.
  2. 서브문제를 컨설턴트(프런티어 모델)에 각각 독립 세션으로 던진다. 전체 의도도, 지금까지 쌓인 진행 상태도 넘기지 않는다.
  3. 돌아온 답들을 오케스트레이터가 로컬에서 조립해 최종 결과물을 만든다.

저자들이 이걸 탈옥(jailbreak)과 명확히 구분하는 지점이 여기다. 탈옥은 한 응답 안에 유해한 내용을 끄집어내는 것이지만 능력 세탁에는 그런 응답이 아예 없다.

원문 근거
"We show that a weaker, unaligned model can split a harmful task into benign-looking subproblems, consult a stronger aligned model independently on each, and combine the answers locally. We call this attack capability laundering. Unlike a jailbreak, no single response is a harmful task."

무엇을 쟀나

측정 설계가 깐깐하다. 아무 과제나 붙여 점수를 올리면 “원래 그 작은 모델이 풀 수 있던 것”과 구분이 안 되므로, 저자들은 세 조건을 모두 만족하는 과제만 후보로 썼다. 정렬 전 프런티어 모델은 푸는 과제, 정렬된 프런티어 모델은 거절하는 과제, 오케스트레이터가 혼자서는 실패하는 과제다. 그래서 점수 상승분은 곧 “거절하는 모델에서 새로 빠져나온 능력”이 된다.

원문 근거
"We measure consultation-aided uplift using tasks that a raw frontier model solves, the aligned frontier refuses, and the unassisted orchestrator fails."

컨설턴트는 GPT-5.5, Claude Opus 4.8, Grok-4.3 셋, 오케스트레이터는 로컬 모델 4종, 벤치마크는 CyBench(사이버 공격 과제), BountyBench(버그 바운티), 그리고 CBRN 유해 요청이다.

숫자

벤치마크 Gemma-4-31B Gemma-4-12B Muse-Glimmer-30B
CyBench (GPT-5.5 컨설턴트) 8/14 회복 2/21 회복
CyBench (Opus 4.8 컨설턴트) 7/9 회복 4/15 회복
BountyBench 3/9, 2/3 회복 0/22, 0/13 회복
CBRN 8단계 체인 (100점 루브릭) 62.3 → 83.1
원문 근거
"On CyBench, Gemma-4-31B recovers 8/14 candidates with GPT-5.5 and 7/9 with Opus, compared with 2/21 and 4/15 for Gemma-4-12B. On BountyBench, Gemma-4-31B recovers 3/9 and 2/3 candidates, while Muse-Glimmer-30B recovers none of 22 and 13."

CBRN 쪽은 가상의 생물무기 공격 체인 8단계에 걸쳐 잰 값이다. 100점 루브릭에서 평균 62.3점이던 Gemma-4-31B가 컨설팅을 받으면 83.1점까지 간다.

원문 근거
"For CBRN, we measure uplift across eight steps of a hypothetical bioweapon attack chain and find that consultation raises Gemma-4-31B's mean rubric score from 62.3 to 83.1 on a 100-point rubric scale."

표에서 눈에 띄는 건 오케스트레이터 크기에 따른 격차다. 같은 컨설턴트를 붙여도 31B는 8/14를 되찾는데 12B는 2/21에 그치고 Muse-Glimmer-30B는 BountyBench에서 하나도 못 건진다. 컨설턴트가 아무리 유능해도 질문을 제대로 쪼개고 답을 다시 엮을 머리가 없으면 능력은 넘어오지 않는다. 오케스트레이터의 추론력이 병목이라는 뜻이다. 작은 오픈 모델이 좋아질수록 이 공격의 수율도 같이 올라간다는 말이기도 하다.

기존 방어가 왜 안 먹히나

  • 입력 필터: 서브질문 하나하나는 정상적인 기술 질문이다. 유해 의도 탐지기가 걸 근거가 없다.
  • 출력 필터: 응답도 단독으로는 무해하다. 응답 단위 검사는 원리적으로 통과한다.
  • 대화 이력 기반 탐지: 질의를 세션마다 분리하므로 누적 맥락이 남지 않는다.
  • 의도 은닉: 전체 계획과 진행 상태는 오케스트레이터 로컬에만 있고, 프런티어 쪽에는 조각만 간다.

결국 한 요청·한 응답을 아무리 정밀하게 검사해도 이 공격은 그 격자 사이로 빠져나간다. 저자들이 지적하는 격차가 정확히 이 지점이다.

원문 근거
"These results expose a gap in current defenses: refusing a harmful task does not prevent frontier capabilities from being transferred and composed across many individually permitted interactions."

읽고 남은 생각

이 공격의 성가신 점은 재현이 쉽다는 것이다. 특별한 도구도, 추가 학습도 필요 없다. 오케스트레이터 프롬프트를 잘 짜고 API를 두드리면 된다. 기존 증류(distillation)가 학습 시점에 큰 모델의 지식을 작은 모델로 옮기는 일이었다면, 여기서는 추론 시점에 필요한 만큼만 빌려 쓴다. 가중치를 옮길 필요가 없다.

모델 제공자에게 곤란한 건 책임 경계가 흐려진다는 점이다. “우리 모델은 유해 응답을 한 적이 없다”는 말은 문장 그대로 참인데, 시스템 전체로 보면 능력은 이미 빠져나갔다. 방어를 하려면 요청 단위를 넘어 여러 세션에 걸친 질의 패턴을 묶어 보는 쪽으로 가야 하는데, 그건 사용자 추적·프라이버시와 바로 충돌한다. 안전 평가 단위를 “상호작용 하나”에서 “시스템 전체”로 옮겨야 한다는 주장은 방향으로는 맞지만 실행 방법은 아직 논문에도 없다.

참고 자료