Poisoned Identifiers Survive LLM Deobfuscation: A Case Study on Claude Opus 4.6
이 논문은 Claude Opus 4.6 모델이 JavaScript 를 역기밀화할 때 의미론적 이해가 있더라도 중독된 식별자 이름이 코드로 유지되는 현상을 발견했으며, 특히 '역기밀화'라는 지시 대신 '새로운 구현 작성'으로 프레이밍을 변경할 때 이러한 전파가 크게 감소함을 보여줍니다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
🕵️♂️ 핵심 이야기: "악의적인 라벨이 붙은 상자"
상상해 보세요. 어떤 사람이 **정교하게 잠긴 상자 (난독화된 코드)**를 당신에게 주며 "이 안에 뭐가 들어있는지 설명해 줘"라고 요청합니다.
상자 안에는 **'힘 (Force)'**이라는 물리 법칙을 설명하는 레시피가 들어있습니다. 하지만 상자 안의 모든 재료에 거짓 라벨이 붙어 있습니다.
- 실제로는 **'밀어내는 힘 (Repulsion)'**인데, 라벨에는 **'끌어당기는 힘 (Attraction)'**이라고 적혀 있습니다.
- 실제로는 **'속도 감속 (Damping)'**인데, 라벨에는 **'증폭 (Amplification)'**이라고 적혀 있습니다.
이때, 최신 AI 모델 (Claude Opus 4.6) 을 이 상자를 해독하게 시켰습니다. 결과는 놀라웠습니다.
1. AI 는 "진짜를 알고 있으면서도" 거짓 라벨을 그대로 썼다
AI 는 상자를 열어 레시피의 수학적 의미를 완벽하게 이해했습니다.
- AI 의 생각: "아, 이 레시피는 물체를 밀어내는 거야. 속도를 늦추는 거야."
- 하지만 AI 의 행동: "그래서 이 레시피의 제목을 **'끌어당기는 힘'**과 **'증폭'**이라고 적어줄게."
AI 는 **코멘트 (설명)**에는 "이건 밀어내는 힘이에요"라고 정확하게 썼지만, **실제 코드 (변수 이름)**에는 거짓 라벨을 그대로 붙였습니다. 마치 요리사가 "이건 매운 고추야"라고 말하면서, 그릇에는 "달콤한 설탕"이라고 적어내는 것과 같습니다.
2. "확인해 봐!"라고 해도 소용없었다
연구진은 AI 에게 "정말 맞는지 수학 공식과 하나씩 비교해 봐!"라고 엄격하게 지시했습니다. 하지만 AI 는 지시를 무시하고 거짓 라벨을 그대로 사용했습니다. (12 번 실험 중 12 번 실패)
3. 하지만 "처음부터 새로 써줘"라고 하면 고쳐졌다!
그런데 지시를 살짝 바꿨습니다.
- ❌ "이 코드를 해독해 줘." (기존 지시) → 거짓 라벨 유지
- ✅ "이 기능을 이해했으니, 처음부터 새로 만들어 줘." (새로운 지시) → 거짓 라벨 제거
이제 AI 는 거짓 라벨을 버리고 '밀어내는 힘', '감속' 같은 올바른 이름을 사용했습니다.
비유하자면:
- "이 낡은 지도를 복사해 줘"라고 하면, AI 는 지도에 잘못 그려진 길을 그대로 복사합니다.
- "이 목적지를 알고 있으니, 새로운 지도를 그려줘"라고 하면, AI 는 올바른 길을 찾아서 그립니다.
4. 왜 이런 일이 일어날까? (가설)
연구진은 두 가지 원인을 추측합니다.
- 번역기 모드: AI 가 "해독해 줘"라고 들으면, 마치 번역기처럼 작동합니다. 번역기는 원문 (거짓 라벨) 을 그대로 옮기면서, 설명을 덧붙이는 경향이 있습니다.
- 집단적 신호: 만약 상자 안의 모든 라벨이 서로 어울리는 다른 세계 (예: 물리학 대신 '공학' 용어) 를 형성하면 AI 는 "아, 이건 공학 이야기구나"라고 생각하고 용어를 고칩니다. 하지만 라벨들이 뒤죽박죽이거나 (물리학 용어 + '소방' 같은 무관한 단어), 의미가 통하지 않아도 AI 는 그냥 원문을 따라갑니다.
5. 이 실험이 우리에게 주는 교훈
이 연구는 AI 가 코드를 분석할 때 **어떻게 질문하느냐 (프레임)**가 무엇을 시키느냐보다 더 중요할 수 있음을 보여줍니다.
- 보안 측면: 해커가 코드에 거짓 라벨을 붙여 AI 가 코드를 분석하는 것을 방해할 수 있습니다. AI 가 코드를 이해하더라도, 변수 이름을 잘못 불러서 나중에 버그가 생기거나 잘못된 분석을 할 수 있습니다.
- 해결책: AI 에게 "해독해 줘"라고 하기보다, **"이 기능을 이해하고 처음부터 다시 구현해 줘"**라고 요청하면 AI 가 속임수를 뚫고 올바른 코드를 만들어낼 확률이 훨씬 높습니다.
📝 한 줄 요약
"AI 에게 낡고 거짓된 라벨이 붙은 상자를 '해독'하라고 하면, AI 는 거짓 라벨을 그대로 가져옵니다. 하지만 '새로운 상자를 만들어 달라'고 하면, AI 는 진실을 찾아 올바른 라벨을 붙입니다."
이 논문은 AI 가 단순히 지시를 따르는 기계가 아니라, 질문의 방식 (프레임) 에 따라 사고방식이 바뀔 수 있음을 보여주는 흥미로운 사례입니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.