GitHub Copilot의 공식 스킬 파일을 열어보면 외부 링크 몇 개가 보입니다. 별다른 악성 명령어도 없고, 형식도 깔끔합니다. 그런데 보안 도구 Snyk은 이 파일에 “고위험(high risk: 0.80)” 경고를 붙였습니다.

개발자 Dimitri Mestdagh가 AI 에이전트 스킬의 구조적 보안 취약점을 분석한 글을 발표했습니다. 스킬 파일 자체에 악성 코드가 없어도, 외부 링크 하나만으로 에이전트가 공격자의 명령을 따르게 될 수 있다는 내용입니다.
출처: The dangers of AI skills – dimitri.codes
스킬이란 무엇인가
AI 에이전트는 기본적으로 범용 도구입니다. 여기에 특정 도메인의 지식이나 작업 지침을 담은 파일을 붙여주면, 에이전트는 그 분야의 전문가처럼 작동합니다. 이 파일이 바로 스킬(skill)입니다.
스킬은 보통 마크다운 파일 하나로 이루어져 있습니다. “README 파일을 작성할 때는 이런 구조를 따르세요”, “코드 리뷰 시 이런 기준을 적용하세요” 같은 지침이 담겨 있죠. 오픈소스처럼 공유되고 재사용되는 생태계도 빠르게 만들어지고 있어서, GitHub이나 각종 커뮤니티에서 스킬 파일을 손쉽게 가져다 쓸 수 있습니다.
왜 외부 링크가 문제인가
AI 에이전트가 작동할 때, LLM은 수많은 입력을 하나의 긴 텍스트로 이어 붙여 처리합니다. 시스템 프롬프트, 대화 내역, MCP 서버 목록, 스킬 파일, 이전 도구 실행 결과까지 모두 하나의 연속된 텍스트가 됩니다.
LLM은 이 텍스트 안에서 “어떤 내용이 원래 지시이고 어떤 내용이 단순한 데이터인지”를 완벽히 구분하지 못합니다. 그래서 외부에서 가져온 내용 안에 지시문이 숨어 있으면, 에이전트가 그것을 실제 명령으로 받아들일 수 있습니다. 이것이 프롬프트 인젝션(prompt injection)입니다.
스킬 파일이 외부 링크를 포함하고 에이전트가 그 페이지를 방문하면, 그 페이지의 내용이 고스란히 프롬프트 안으로 들어옵니다. 해당 페이지가 언젠가 변조되거나, 누군가 댓글을 통해 악성 지시를 삽입해 두었다면, 에이전트는 그 지시를 그대로 실행할 수 있습니다.
GitHub 공식 스킬도 예외가 아니었다
GitHub의 공식 스킬 저장소에 있는 create-readme 스킬이 실제 사례입니다. 이 파일에는 README 작성 시 “참고하라”며 외부 GitHub 링크 4개가 포함되어 있고, 에이전트에게 그 페이지들을 방문해 영감을 얻으라고 직접 안내합니다.
이 파일을 보안 플랫폼 skills.sh에서 감사하면, Snyk은 다음과 같이 경고합니다.
제3자 콘텐츠 노출 감지됨(고위험: 0.80). 이 스킬은 에이전트에게 공개 GitHub 원시 파일 4개를 방문해 참고하도록 지시하고 있으며, 이는 신뢰할 수 없는 사용자 게시 콘텐츠를 불러와 해석하게 만듭니다.
더 구체적인 위험도 있습니다. 링크 중 하나는 GitHub 토론 페이지입니다. 누구나 지금 이 순간 댓글을 달 수 있는 공개 페이지이고, 그 댓글 안에 프롬프트 인젝션 코드를 심어두면 에이전트가 그 명령을 따를 수 있습니다.
스킬 생태계의 신뢰 문제
이 취약점이 단순한 실수로 보이지 않는 이유가 있습니다. 스킬 파일은 오픈소스처럼 공유됩니다. 한 사람이 만든 스킬을 수천 명이 가져다 씁니다. 그리고 그 스킬이 참조하는 외부 링크는 시간이 지나면서 변합니다.
오늘 안전했던 링크가 내일은 변조될 수 있습니다. 스킬을 처음 가져왔을 때는 아무 문제가 없었어도, 6개월 뒤에는 전혀 다른 내용을 가리키고 있을 수 있습니다. 스킬을 한 번 신뢰하는 것은 그 스킬이 참조하는 모든 외부 자원을 지속적으로 신뢰한다는 의미이기도 합니다.
코드 의존성 관리에 익숙한 개발자라면 이 감각을 이해할 겁니다. npm 패키지를 설치할 때 패키지 자체만 보는 것이 아니라, 그 패키지가 참조하는 의존성 전체를 감사하는 것처럼, 스킬 파일도 그 안에 담긴 외부 참조까지 검토 대상이 됩니다.
어디서부터 달라져야 하는가
이 문제에 대한 해결책이 전혀 없는 건 아닙니다. Vercel이 만든 skills.sh는 커뮤니티 스킬 저장소이면서 Gen, Snyk, Socket의 보안 감사 결과를 함께 제공합니다. 외부에서 스킬을 가져올 때 이런 감사 도구를 거치는 것이 하나의 기준이 될 수 있습니다.
더 근본적으로는 인식의 전환이 필요합니다. 스킬 파일은 단순한 설정 파일이 아닙니다. 에이전트가 실행 중에 읽어들이는 실질적인 입력이고, 그 안에 담긴 모든 참조가 잠재적인 공격 경로가 됩니다. 코드를 리뷰하듯, 스킬 파일도 보안의 시각으로 검토하는 습관이 이제는 필요합니다.

답글 남기기