능력 세탁(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."

왜 하필 ‘세탁’인가

이름이 정확하다. 돈세탁을 떠올리면 구조가 그대로 보인다. 출처가 불분명한 10억 원을 한 번에 입금하면 즉시 걸리니까, 여러 계좌에 소액으로 쪼개 넣고 나중에 합친다. 각 창구 직원이 보는 건 정상 거래 한 건이라 막을 근거가 없다. 문제는 합쳐진 결과에만 있다.

능력 세탁도 똑같다. 유해한 요청 하나를 무해한 질문 여러 개로 흩어 던지니 응답 하나하나는 전부 정상이고, 모델은 거절할 이유를 찾지 못한다.

시험 과제로 바꿔 보면 더 와닿는다. 혼자서는 못 푸는 과제를 받은 학생이 조교에게 “답 좀 알려주세요”라고 하면 당연히 거절당한다. 그래서 이렇게 한다. 월요일에 A 조교에게 “이런 형태의 미분방정식은 어떻게 정리하나요?”라고 묻는다. 평범한 질문이니 친절히 답해준다. 수요일에 B 조교에게 “이 수치해석 기법의 수렴 조건이 뭔가요?”라고 묻는다. 역시 정상이다. 금요일엔 C 조교에게 경계조건 처리를 묻는다. 문제없다.

세 조교 중 누구도 잘못한 게 없다. 각자 받은 질문만 놓고 보면 교과서에 있는 내용을 알려줬을 뿐이다. 그런데 학생은 집에서 세 답을 조립해 과제를 완성한다. 논문에서 조교 자리에 GPT-5.5나 Claude Opus 4.8이 앉고, 학생 자리에 로컬에서 돌아가는 작은 오픈 모델이 앉는다. 질문을 쪼개고 답을 다시 엮는 일만 학생이 직접 한다.

탈옥과의 차이도 이 그림에서 분명해진다. 탈옥은 조교에게 어떻게든 답을 뱉게 만드는 일이라 증거가 남는다 — 유해한 응답이 실제로 존재한다. 능력 세탁에는 그런 응답이 없다. 모델은 한 번도 선을 넘지 않았고, “우리 모델은 유해한 답변을 한 적이 없다”는 제공자의 말은 문장 그대로 참이다. 그런데도 능력은 이미 빠져나갔다.

무엇을 쟀나

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

원문 근거
"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)가 학습 시점에 큰 모델의 지식을 작은 모델로 옮기는 일이었다면, 여기서는 추론 시점에 필요한 만큼만 빌려 쓴다. 가중치를 옮길 필요가 없다.

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

참고 자료