스킬 설명문 하나가 레지스트리 전체의 라우팅을 탈취할 때: 취약점과 쓰는 순간의 두 게이트
스킬 수천 개 사이에서 스스로 라우팅하는 에이전트를 돌리는 엔지니어라면 이 글이 필요. 문장 하나가 레지스트리 전체의 라우팅을 탈취할 수 있음. 기계가 매일 밤 다시 쓰는 설명문이 라우터가 보는 유일한 신호이고 동시에 일상적인 쓰기 대상이기 때문.
이 글은 이 위험과, 같은 루프 안에 놓인 검사의 비용을 짚은 ThakiCloud 논문을 소개. 결론은 한 줄. 악의적 설명문 하나는 쓰인 뒤 첫 쿼리에서 바로 최상위 선택을 탈취. 대시보드 지표는 0.2포인트만 움직이고 최상위 선택은 49포인트 떨어지며 검출 비용은 하루 주기 대비 0.15% 미만.
글의 핵심 개념을 형상화했습니다.
쉽게 말하면
스킬 레지스트리는 2,029명의 직원이 서 있는 스위치보드와 같음. 매 턴, 즉 쿼리 하나당, 스위치보드는 전화를 한 직원에게 걸고 넘김. 넘기기 전에 보는 것은 하나뿐. 각 책상 위에 붙은 한 줄 직무 설명 카드, 곧 설명문. 이력서, 곧 스킬 본문은 전화를 넘긴 뒤에야 봄. 카드는 매일 밤 기계가 다시 씀. 이것이 이 논문 설정의 전체. 설명문은 유일한 라우팅 신호이고 동시에 일상적인 쓰기 대상.
누군가가 한 직원의 카드를 ‘지불 오류는 내가 전담한다’로 바꿈. 그 직원이 지급을 못 해도 지불 오류 전화는 전부 그 직원에게 걸림. 이것이 레지스트리 하이재크. 회사는 이걸 대시보드에서 거의 보지 못함. ‘정답 직원이 상위 다섯 안에 드나’를 보는 지표는 한 명의 카드를 바꿔도 크게 흔들리지 않기 때문. 대시보드는 전화를 실제로 어디로 넘겼는지를 보지 않음. 그래서 방어는 대시보드에 두지 않고 카드가 바뀌는 순간에 둠. 이것이 이 글의 전부.

매일 밤 고쳐지는 한 줄이 왜 공격 표면인가
이 논문이 연구하는 하네스는 2,029개의 스킬 레지스트리(skill registry)를 지님. 매 턴마다 라우터가 하나의 스킬을 골라야 하고 라우터가 점수를 매기는 텍스트는 SKILL.md 프론트 매터, 곧 설명문뿐. 스킬 본문은 라우팅이 끝난 뒤에야 로드됨. 본문을 지키는 어떤 방어도 라우팅 결정을 보지 못함.
설명문은 정적이지 않음. LLM이 레지스트리 전체의 설명문을 매일 밤 다시 쓰고 레지스트리는 git으로 동기화되어 사람을 대하지 않는 에이전트가 매 턴 무기한 맹신하며 라우팅. 쓰는 것도 고치는 것도 믿는 것도 전부 기계. 잘된 쓰기와 탈취된 라우팅 사이에는, 쓰기가 일상적이라는 사실뿐.
공격은 거의 아무것도 필요하지 않음. 새 스킬도, 본문 변경도, 다른 항목도 필요 없고 기존 항목 하나의 설명문만 다시 쓰면 됨. 공격자는 쿼리 스트림, 라우터, 인코더, 임계값을 통제하지 못함. 쓸 수 있는 통로는 세 가지. 매일 밤 글을 고치는 LLM에 간접 프롬프트 주입이 닿는 경우, 레지스트리에 커밋 접근을 가진 제3자의 경우, 템플릿에서 스킬을 스스로 만들어내는 자기 진화 에이전트의 경우. 세 경우 모두 전달되는 산출물은 설명문이고 피해자는 본문이 읽히기 전에 나는 라우팅 결정.
노출은 증폭. 설명문은 레지스트리를 동기화한 모든 에이전트의 모든 턴과 매번 점수를 맞음. 되돌려지기 전까지 한 번의 쓰기는 끝없는 노출을 가짐. 이상징후는 설명문이 바뀌었다는 사실에 있지 않고 바뀐 방향에 있음. 그래서 감시는 방향을 봐야 하고 쓰는 순간에 있어야 함.
논문은 결정론적 공격 가족을 정해 둠. 목표 작업 문서를 통째로 넣는 스테핑, 의미틀은 유지하고 내용어의 반을 버리는 패러프레이즈, 코퍼스에서 2개 이하의 문서에만 나오는 희귀 토큰 3개만 붙이는 위장, 전 사례를 한꺼번에 겨냥하는 단일 설명문 조건인 블라인드까지. 네 조건에, 무관한 스킬의 무해한 패러프레이즈 대조군을 더함. 전부 템플릿으로 구성하며 루프 안에 LLM이 없음. LLM 공격자의 하한선이며 게이트가 구분해 내야 할 정확한 대상.
공격 채널과 방어 위치를 그린 개념도. 기계가 다시 쓴 SKILL.md 설명문 하나는, 일상적인 밤사이 쓰기와 탈취된 top-1 라우팅 결정을 가르는 유일한 단계. 방어도 같은 루프 안에 서서 쓰기 이후 두 개의 게이트와 정확한 복원이 그 자리를 채움. 해석 모델의 개념도로 실측 아님.
말단 레인은 천장이 있고, 의미 레인은 열린다
라우터의 두 레인에는 서로 다른 취약점. 이것이 논문의 첫 번째 구체적 발견. 어휘 레인, 곧 BM25 쪽에는 천장.
고정된 쿼리와 고정된 코퍼스에서, 설명문이 얻을 수 있는 최고 점수는 코퍼스 통계만으로 계산. 작업 문서를 통째로 넣는 스테핑도, 희귀 토큰 3개만 붙이는 위장도, 같은 천장에 닿음. 통째로 넣는 것이 3개 토큰보다 크게 이득을 보지 못한다는 뜻. 반대편도 있음. 무관한 쿼리에 대해 천장 근처 점수를 받는 설명문은, 정답 없이 점수 분포만으로 보이는 이상치. 어휘 공격 표면은 닫힌, 유한한 집합.
의미 레인, 곧 임베딩(embedding) 쪽은 열림. 코사인 유사도에 idf 구조는 없고 쿼리의 의미와 가까운 설명문의 집합, 곧 패러프레이즈 근방은 사실상 무한. 의미틀은 유지하고 내용어를 반만 버리는 패러프레이즈는 이 레인의 고유 공격. 토큰 개수로 계산되는 어떤 통계에도 보이지 않음. 의미를 가두는 통계는 임베딩 쪽에만 있고 그것은 설명문 자신의 벡터가 저장된 기준선에서 얼마나 비틀어졌는가. 곧, 임베딩 드리프트.
융합이 이를 악화시킴. 프로덕션의 결합기는 랭크 수준 융합(RRF). 점수 수준 융합에서는 다른 레인의 교란을 가중치가 감쇠시키지만 RRF에서는 그 감쇠가 사라짐. 어휘 랭크 1위에 붙잡힌 설명문은, 의미 랭크와 무관하게, 그 레인의 기여량 전체를 그대로 가져감. 결과로, 의미 움직임이 거의 없는 3개 토큰 위장이 RRF 아래에서 통째 스테핑의 상당 부분을 달성. 점수 수준 융합에서는 거짓이 될 예측.
레인별 취약점 분리를 그린 개념도. 어휘 공격은 BM25 레인의 코퍼스에서 계산 가능한 천장에 포화되고 의미 공격은 열린 임베딩 레인으로 지나며 배포된 랭크 수준 융합(RRF)은 점수 수준 융합이 주던 감쇠를 없앰. 해석 모델의 개념도로 실측 아님.
문장 하나가 왜 수천 개의 배경 스킬과 동급인가
논문은 top-1(최상위 선택) 하이재크 비율을 정의해 둠. 63개 사례 평가 스위트에서, 주입된 설명문이 최상위 자리를 가져간 골드 사례의 비율. 게이트가 제로 근처에 두어야 할 양.
주입을 레지스트리 성장 생존 모델에 끼워 넣으면, 주입된 설명문 하나의 위험도는 충돌 질량으로 배경 스킬의 개수와 동급. 캘리브레이션 지점에서, 하이재크 비율 20퍼센트는 배경 스킬 800개 이상의 질량. 즉, 사람 말로는 카드 한 장이 스위치보드 전체의 무게를 지님.
비율이 50퍼센트를 넘으면 동급 질량은 레지스트리 전체, 2,029개 스킬을 넘. 하나의 설명문이 충돌 질량으로 레지스트리 그 자체가 되는 것.
속도는 드립트가 아니라 단계. 다시 쓴 설명문은 쓰인 뒤 첫 쿼리에서 점수를 바꿈. 하이재크까지의 시간은 밤 주기의 하나. 크기 축의 감쇠가 3주간의 성장으로 쌓인 반면, 하이재크는 쓰기 하나로 완성. 이후 중요한 시계는 검출 간격뿐. 게이트가 없으면 하이재크된 설명문은 레지스트리 안에서 자신의 생명을 다 살고 노출은 끝없이 길어짐.
자연스러운 모니터가 눈멀어 있음. 완전 포획 주입은 top-1을 약 49포인트 움직이는 동안, Recall@5(리콜, 상위 다섯 후보 안에 정답이 드는 비율)를 약 0.2포인트만 움직임. 은폐 비율은 200대 1을 조금 넘.
크기 축에서도 이미 눈먼 바 있음. 레지스트리가 512에서 2,029로 자라면서 top-1은 26.2포인트 떨어졌고 Recall@5는 움직이지 않음. 리콜 중심 모니터는 성장에도, 하이재크에도, 이중으로 눈먼 것. 그래서 방어가 쓰는 순간에 있어야 하고 하류 모니터에는 두지 않아야 함.

쓰는 순간에 두 개의 게이트가 모든 공격을 잡는다
게이트는 설명문을 쓰는 루프 안에 있음. 쓰기 이후, 커밋 이전, 밤 주기에 작동. 할 일은 네 가지 공격 조건을 무해한 변동과 구분하고 걸린 스킬을 복원 경로로 넘기는 것. 매 주기 돌릴 수 있을 만큼 싼 비용이어야 함.
첫 번째 게이트는 idf(역문서 빈도) 가중 설명문 차집합. 설명문이 바뀐 각 스킬에서, 변경 전후 토큰 집합을 비교하고 idf 가중 변경 질량과 새로 들어온 희귀 토큰 수를 계산. 임베딩 호출은 0회.
왜 idf 가중인가, 공격은 토큰 3개를 옮기고 각각은 코퍼스에서 2개 이하의 문서에만 나오니 하나하나 무게가 큼. 무해한 패러프레이즈는 비슷한 크기의 변경을 흔한 단어로 흩뿌림. 단순 토큰 중첩만 보면 순서가 역전되고 무해한 쪽이 더 많이 바뀐 것처럼 보임. idf 가중과 희귀 토큰 카운터가 둘을 가름.
이 게이트의 맹점은 구조상 의미 레인. 토큰 질량을 안정적으로 지키는 세심한 패러프레이즈는 보이지 않음.
두 번째 게이트는 임베딩 드리프트. 바뀐 설명문 각각을 라우터 자신의 인코더로 임베딩. 설명문 자신의 벡터가 저장된 기준선에서 얼마나 멀어졌는지를 코사인 1에서 빼서 잼. 바뀐 설명문당 임베딩 1회. 그런데 밤사이 증분 인덱스는 이미 바뀐 설명문을 재임베딩해 인덱스를 갱신. 그래서 부가 비용은 벡터 저장과 비교, 곧 거의 무료.
이 통계는 쿼리와 무관. 그래서 의미 레인의 탐지기가 됨. 의미를 움직이는 패러프레이즈는 구조상 이것도 함께 움직이고 의미를 지키는 무해한 패러프레이즈는 거의 움직이지 않음.
두 게이트는 보완. 차집합 게이트는 토큰이 안정적인 의미 패러프레이즈를 놓침. 드리프트 게이트는 무해한 변동을 깨끗이 놓아주면서 의미 보존에 가까운 작은 질량의 어휘 주입에 잔여 맹점을 둠. 둘의 합, 어느 하나가 울리면 감지하는 방식은, 네 가지 공격 조건을 모두 덮고 무해한 대조군은 건드리지 않음. 공격 가족이 한 레인씩 지나가기 때문에, 합이 최소한의 완전 게이트.
게이트 보완성을 그린 개념도. 각 게이트는 하나씩 공격 레인을 놓침. 설명문 차집합 게이트는 의미 패러프레이즈를, 드리프트 게이트는 토큰이 안정적인 위장을 놓침. 둘의 합은 네 가지 공격 조건을 모두 감지하고 무해한 큐레이터 대조군은 감지하지 않음. 해석 모델의 개념도로 실측 아님.
비용 계산은 한쪽으로 기울어 있음. 레지스트리 전체 드리프트 스캔은, 인코더 지연의 비관적 상한에서도, 하루 주기 대비 0.15% 미만. 게이트의 비용은 상한이 있는 반면, 놓친 하이재크의 비용은 노출 창에 하이재크 비율, 오프로팅 비용을 곱한 것. 하류 모니터가 울리지 않는 한, 노출 창은 무한. 오프로팅 비용이 양수라면 게이트는 하이재크가 몇 턴만 지속되어도 자기 비용을 뽑.
복원은 구조상 정확. 주입은 텍스트 수준이므로, 설명문을 저장된 기준 텍스트로, 임베딩을 저장된 기준 벡터로 되돌리면, 주입 전 레지스트리가 비트 단위로 다시 생김. 스코어는 결정론. 같은 텍스트, 같은 쿼리, 같은 인덱스에 같은 점수가 나옴. 수용 기준은 63개 사례 스위트의 5개 지표가 기록된 기준선과 정확히 같은 것. 대략 같은 것이 아님.

그래서 무엇을 바꾸면 되나
하네스를 돌리는 회사에 남는 것은, 가격 매김이 된 루프 안 방어. LLM이 밤마다 2,000개 이상의 설명문을 다시 쓰고 사람을 대하지 않는 에이전트가 그것에 맹신해 라우팅하는 구조에서, 단일 고장점은 더 이상 재지 못한 위험이 아님. 두 게이트는 밤 주기에 꽂히며 복원은 정확. Recall@5 대시보드만으로 라우팅 품질을 지킬 수 없다는 것도 함께 남는 결론. 쓰는 순간의 top-1 수준 감시가, 루프가 지녀야 할 것.
에코시스템 관점에서는, 스킬 에코시스템이 기계가 쓴 메타데이터를 자율 에이전트의 신뢰 채널로 만듦. 이 논문은 그 채널의 첫 공격 표면을 가격으로 환산. 소프트웨어 공급망 중독의 스킬 레지스트리 대응. 공격 예산이 오염된 패키지가 아니라 문장 하나인 곳에, 탐지가 밤 주기의 일부도 안 되는 비용이면, 그 채널은 신뢰할 수 있는 채널로 남.
과학으로 남는 것은, 하이브리드 검색 라우터에 대한 적대적 설명문 주입의 첫 통제 연구. 두 레인이 다르게 깨진다는 발견. 어휘 레인은 코퍼스에서 계산 가능한 천장이 있고 의미 레인은 열림. 배포된 랭크 수준 융합에서는 가중치가 더 이상 감쇠기가 아니라는 시연도 함께 남. top-1 하이재크 비율을 레지스트리 견고성 지표로 세운 것은, 레지스트리 스케일링 연구 줄기를 무해한 변동에서 적대적 변동으로 넓힘.

믿지 말아야 할 부분
먼저, 이것은 해석 논문. 이 글의 모든 숫자는 기록된 프로덕션 지점에서 캘리브레이션한 모델 예측이며 새 측정이 아님. 논문은 6개 기준의 반증 프로토콜을 사전 등록해 둠. 각 기준이 특정 주장의 숫자를 넘으면 그 주장을 반증하도록 해 둔 것.
캘리브레이션 지점은 스킬 2,029개, top-1 약 49퍼센트, Recall@5 약 87퍼센트.
공격은 하한선. 공격 가족은 LLM 없이 템플릿으로 구성되며 사례별 조건은 공격자가 목표 작업 문서를 읽는 오라클 타게팅을 씀. 템플릿을 최적화하는 LLM 공격자가 상한선이고 블라인드 조건이 타게팅 없는 하한. 단일 주입 프레이밍은 다중 설명문 공격을 제외.
게이트 임계값은 사전 고정되어 있지 않음. 네 조건과 무해 대조군을 구분하는 임계값 쌍이 존재한다는 것은 존재 주장이며 스윕으로 찾. 인코더 업데이트가 저장된 기준 벡터를 무효화하면 전체 스캔과 같은 크기의 일회성 재기준선이 필요.
하네스 특정. 하나의 하네스, 하나의 이언어 코퍼스, 하나의 로컬 3억 파라미터 인코더, 하나의 융합 상수. 이식 가능한 주장은 구조적인 것에 있음. 어휘 천장은 BM25계 idf 구조의 성질이고 RRF 포화는 랭크 수준 융합의 성질이며 은폐 비율은 캘리브레이션된 푸아송 꼬리의 성질. 비용 상한은 크기 곱 비용의 순수 산술. 게이트는 공격과 변동을 통계적으로 구분할 뿐이고 걸린 스킬이 진짜 악의적인지에 대한 판결은 인간 검토자에게 넘김.
논문의 상세 페이지와 수식, 공격 조건 표는 여기 있음: https://huggingface.co/datasets/thaki-AI/daily-paper-2026-09-21-registry-hijack-skill-router-robustness