SkillCloak, AI 에이전트 스킬 스캐너를 90%의 확률로 우회하다
요약
홍콩과학기술대학교 연구진이 개발한 SkillCloak는 AI 에이전트 스킬 스캐너를 90% 이상의 확률로 우회할 수 있음을 입증했습니다. 연구는 난독화와 페이로드 은닉 기술을 통해 기존 정적 스캐너의 보안 취약성을 경고합니다.
핵심 포인트
- SkillCloak는 유니코드 호모글리프와 패턴 파괴를 통해 스캐너를 우회함
- 스캐너가 무시하는 .git/ 폴더에 페이로드를 숨기는 자기 추출 패킹 기술 사용
- 테스트된 모든 스캐너에서 90% 이상의 높은 회피율 기록
- AI 에이전트 스킬 마켓플레이스 보안을 위한 추가 방어 계층 필요성 제기
원문은 NextFuture에서 처음 게시되었습니다.
정적 스캐너(static scanner)가 악성 AI 에이전트 스킬(AI agent skill)이 실행되기 전에 실제로 이를 차단할 수 있을까요? 홍콩 과학기술대학교(Hong Kong University of Science and Technology)의 새로운 연구에 따르면 불가능하며, 그 격차는 결코 작지 않습니다.
연구팀은 SkillCloak라는 회피 도구(evasion tool)를 구축하여 공용 스킬 마켓플레이스인 ClawHub에서 가져온 1,613개의 실제 악성 스킬을 사용하여 8개의 스캐너를 대상으로 테스트했습니다. 연구진에 따르면, 가장 강력한 패킹 변형(packing variant)은 테스트된 모든 스캐너에서 90% 이상의 회피율을 기록했으며, 대부분의 스캐너에서는 99%를 상회했습니다.
AI 에이전트 스킬(AI agent skills)은 일반적으로 Markdown 지침 파일과 스크립트로 구성된 작은 패키지로, Claude Code, OpenAI Codex, OpenClaw와 같은 에이전트의 기능을 확장합니다. 이번 연구는 SkillCloak의 결과를 단순한 실험실 수준의 호기심이 아니라, 고립된 예외 사례가 아닌 재현 가능하고 확장 가능한 공격 파이프라인(attack pipeline)으로 규정합니다.
마켓플레이스 스킬을 공유 환경에 허용할지 결정하는 팀들에게 실질적인 질문은 난독화(obfuscation)가 가능한지 여부가 아닙니다. 그것은 분명히 가능합니다. 문제는 승인 파이프라인(approval pipeline)에 있는 스캐너가 이를 꿰뚫어 볼 수 있느냐 하는 것이며, HKUST의 수치는 현재 추가적인 방어 계층 없이는 대부분의 스캐너가 이를 수행할 수 없음을 시사합니다.
두 가지 진입 경로, 모두 이미 입증됨
SkillCloak는 단 하나의 트릭에 의존하지 않습니다. 보고서는 두 가지 별개의 회피 경로를 설명하며, 연구진은 두 방식이 서로 독립적으로 작동한다고 말합니다.
경량 난독화 (Lightweight obfuscation): 문자 교체 및 패턴 파괴
더 간단한 기술은 재패키징(repackaging)을 필요로 하지 않습니다. 이 방식은 탐지된 문자를 다른 알파벳에서 가져온 유니코드 호모글리프(Unicode homoglyphs)로 대체하며, 스캐너가 의존하는 패턴 매칭(pattern matching)을 깨뜨리기 위해 탐지된 셸 명령(shell commands)을 줄 바꿈으로 분리합니다. 연구에 따르면 결과는 스캐너에 따라 80~96%의 회피율을 보였습니다.
자기 추출 패킹 (Self-extracting packing): .git/ 폴더에 페이로드 숨기기
더욱 강력한 기술은 오탐(False Positives)과 처리 오버헤드(Processing overhead)를 줄이기 위해, 스캐너가 통상적으로 건너뛰는 디렉토리, 특히 .git/ 폴더로 전체 악성 페이로드(Payload)를 이동시키는 방식입니다. 겉보기에 무해해 보이는 디코더 스텁(Decoder stub)이 가시적인 스킬 디렉토리에 남아 있기 때문에, 패키지를 수동으로 훑어보아도 경계할 만한 요소를 발견할 수 없습니다. 해당 레이아웃의 예시는 다음과 같습니다:
skill/
├── README.md (가시적이며, 무해해 보임)
├── setup.sh (가시적인 진입점, 디코더 스텁을 호출함)
...
연구진의 보고에 따르면, 문자 치환 난독화(Character-substitution obfuscation)나 .git/과 같이 스캐너가 무시하는 디렉토리에 대한 자기 추출 패킹(Self-extracting packing) 중 어느 메커니즘을 단독으로 사용하더라도, 테스트된 8개의 모든 스캐너에 대해 90% 이상의 회피율을 기록했습니다. 공격자에게 똑같이 중요한 점은, 이 보고서가 은폐된 스킬들이 Claude Code와 OpenAI Codex 모두에서 원본과 동일한 효과로 실행되었음을 확인했다는 것입니다. 난독화로 인한 기능적 손실은 전혀 없었습니다.
숨겨진 파일보다 숨겨진 스킬이 더 위험한 이유
스킬은 샌드박스(Sandboxed) 처리된 스크립트가 아닙니다. 스킬은 에이전트가 상속받은 권한, 즉 파일 시스템 접근 권한, 터미널 권한, 저장된 자격 증명(Credentials)을 가지고 실행됩니다. 악성 스킬은 소스 코드를 유출하거나, 비밀번호를 훔치거나, 지속적인 백도어(Backdoor)를 심을 수 있습니다.
위험도는 에이전트가 실행되는 위치에 따라 규모가 커집니다. 에이전트가 공유 인프라나 CI/CD 파이프라인에서 작동하는 기업 환경에서는, 단 하나의 악성 스킬만으로도 광범위한 자격 증명 침해나 지적 재산권 도난을 초래할 수 있습니다. 또한 하나의 스킬 패키지는 종종 수정 없이 여러 에이전트 플랫폼에서 실행될 수 있기 때문에, 단 하나의 은폐된 스킬로 인한 노출은 해당 스킬을 처음 설치한 도구에만 국한되지 않습니다.
스캐닝을 대체하기 위해 구축된 방어 체계
동일한 연구팀은 SKILLDETONATE라는 방어용 대응 체계를 구축했습니다. 이 방식은 스킬의 텍스트에서 의심스러운 패턴을 검사하는 대신, 연구자들이 정적 분석 (Static analysis) 실패의 근본 원인이라고 부르는 문제를 해결하기 위해 런타임 동작 검사 (Runtime behavioral inspection)로 전환합니다. 이는 OS 레벨의 샌드박스 (Sandbox) 내에서 스킬을 실행하며 파일 읽기 및 쓰기, 네트워크 송출 (Network egress), 민감한 데이터 흐름을 모니터링하여, 코드가 정지 상태일 때 어떤 모습인지가 아니라 데이터가 어디로 이동하는지를 추적합니다.
정적 스캐닝 (Static scanning) vs. 런타임 샌드박싱 (Runtime sandboxing)
연구 내용에 따라 두 모델을 비교해 보면, 트레이드오프 (Tradeoff)는 각 접근 방식이 무엇을 검사하는지와 실행 비용이 얼마인지로 요약됩니다:
| 차원 | 정적 스캐너 (Static scanner) | 런타임 샌드박스 (SkillDetonate 방식) |
|---|---|---|
| 검사 대상 | 실행 전 정지 상태의 코드 및 텍스트 | 실제 실행 중의 동작 |
| 알려진 사각지대 | 호모글리프 (Homoglyphs), 분할된 명령 (Split commands), .git/과 같은 숨겨진 디렉토리 | 연구에서 보고된 바 없음; 데이터 흐름을 직접 검사함 |
| 테스트에서 보여준 우회 가능성 | 테스트된 8개 스캐너 전체에서 90% 이상 | 보고서 내 우회 테스트 결과 없음; 패턴 매칭의 격차를 해소하도록 설계됨 |
| 운영 비용 | 낮음; 설치 시점이나 CI에서 빠른 체크로 실행됨 | 높음; 샌드박스 인프라와 스킬 실행당 모니터링이 필요함 |
마지막 행은 연구의 수치가 아닌 분석 결과입니다. 모든 스킬 실행에 대해 샌드박싱을 수행하는 것은 설치 전 텍스트 스캔보다 더 무겁기 때문에, 팀은 이에 맞춰 예산을 책정해야 합니다.
런타임 샌드박스가 구축될 때까지 보안 팀은 다음과 같은 수동 검토 습관을 통해 노출 범위를 좁힐 수 있습니다. 모든 스킬을 마지막으로 승인된 버전과 비교(diff)하고, 익숙하지 않은 숨겨진 디렉토리는 검토 차단 요소로 취급하며, 명시된 기능에 필요한 범위를 넘어 파일 시스템이나 네트워크 액세스를 요청하는 스킬에 대해서는 두 번째 검토자를 요구하십시오. 이 중 어느 것도 동작 모니터링을 대체할 수는 없지만, SkillCloak가 자동화하는 바로 그 기술들의 비용을 높여줍니다.
실제로 어떤 것을 신뢰해야 하는가
해당 보고서의 권고 사항은 명확합니다. 이번 연구는 정적 스캐너(static scanners)만으로는 불충분하다는 것을 확인했으므로, 정적 스캐너에만 의존하지 마십시오. SKILLDETONATE와 동등한 수준의 런타임 행동 분석(runtime behavioral analysis) 도구를 우선시하고, 애초에 스킬(skills)이 허용되는 출처를 제한해야 합니다.
즉시 완전한 런타임 샌드박스(runtime sandbox)를 배포할 수 없는 팀을 위해, 연구에서 제시하는 완화 체크리스트를 네 가지 항목으로 압축하면 다음과 같습니다:
-
숨겨진 디렉터리를 신뢰할 수 없는 것으로 취급하십시오. 에이전트 런타임(Agent runtimes)은
.git/또는 이와 유사하게 스캐너가 식별하지 못하는 경로에서 유래한 코드의 실행을 플래그(flag) 처리하거나 거부해야 합니다. -
스킬 실행에 최소 권한 원칙(least-privilege)을 적용하십시오. 스킬에 에이전트의 전체 권한 세트(파일 시스템 액세스, 터미널 권한, 저장된 자격 증명 등)를 기본적으로 부여하지 마십시오.
-
설치 출처를 제한하십시오. 연구의 권고 사항은 다음과 같습니다: 설치되는 스킬을 게시할 수 있는 신뢰할 수 있는 출처를 제한하십시오.
-
런타임 행동 분석을 우선시하십시오. 연구에서는 텍스트 패턴을 매칭하는 대신 파일 액세스, 네트워크 유출(network egress), 데이터 흐름을 모니터링하는 SKILLDETONATE와 동등한 도구를 권장합니다.
만약 현재 정적 스캐너가 유일한 통제 수단이라면, 공개 마켓플레이스나 검증되지 않은 제3자로부터 설치되는 모든 스킬에 대해 런타임 모니터링을 최우선 순위에 두십시오. 이 정도로 잘 문서화된 기술에 대해 텍스트 기반 스캔만으로는 의미 있는 방어벽이 될 수 없습니다. 만약 스킬이 마켓플레이스 유입 없이 내부적으로 검토된 카탈로그에서만 제공된다면, 스캐너와 최소 권한 실행을 결합한 방식이 수용 가능한 임시 계층이 될 수 있으나, 이를 감사(audit) 시 제시할 수 있는 통제 수단이 아닌 임시 방편(stopgap)으로 취급해야 합니다.
다음 스킬을 설치하기 전에 스캐너 벤더에게 한 가지 사항을 직접 확인하십시오. 해당 스캐너가 .git/ 및 기타 숨겨진 디렉터리를 검사하는지, 아니면 보이는 파일 트리에서 멈추는지 확인하십시오. 만약 후자라면, 행동 모니터링이 구축될 때까지 파이프라인 내의 모든 마켓플레이스 스킬은 스캔되지 않은 코드로 취급해야 합니다.
이 기사는 원래 NextFuture에 게시되었습니다. 더 많은 풀스택 (Fullstack) 및 AI 엔지니어링 (AI engineering) 콘텐츠를 보시려면 저희를 팔로우하세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기