myshell-ai AIlice의 HuggingFace 모델 래퍼에서, PEFT 어댑터가 지정한 기반 모델을 확인 없이 내려올 수 있다는 취약점이 보고됐다. CVE-2026-122160으로 등록된 이 문제는 어댑터라는 익숙한 파일 안에 실행 대상이 되는 모델 저장소 참조가 함께 들어온다는 점을 다시 보게 만든다.
개요

AIlice는 오픈소스 LLM을 기반으로 JARVIS와 유사한 독립형 인공지능 어시스턴트를 목표로 하는 완전 자율 범용 AI 에이전트 프로젝트다. 이번 취약점은 이 에이전트가 모델을 불러오는 경로 가운데 PEFT 어댑터 처리 지점에 있다.
CVE 레코드는 myshell-ai AIlice 0.4.0 이하에서 ailice/core/llm/AModelCausalLM.py의 LoadModel_PEFT 함수, 즉 HuggingFace Model Wrapper 구성요소가 영향을 받는다고 명시한다. 인자 base_model_name_or_path의 조작이 신뢰할 수 없는 제어 영역의 기능 포함으로 이어진다는 것이 요지다. 같은 레코드는 공격을 원격에서 시작할 수 있고 익스플로잇이 공개되어 악용될 수 있다고 적으며, 프로젝트에는 이슈 보고로 문제가 일찍 전달됐지만 아직 답변이 없는 상태라고 설명한다. 상세한 코드 경로는 GitHub 이슈를 통해 보고됐다.
영향 범위
레코드가 지목한 범위는 AIlice 0.4.0 이하이며, 코드 관점에서는 HuggingFace 모델 래퍼의 LoadModel_PEFT를 통해 PEFT 어댑터의 기반 모델을 불러오는 경우에 적용된다. 이 경로는 프로그램이 항상 지나는 자리가 아니라 어댑터 로딩이 일어나는 시점에 동작하므로, 실제 노출은 어댑터를 쓰는 배포인지, 그리고 그 어댑터 설정을 누가 정하는지에 따라 달라진다.
- 외부에서 받은 어댑터나 검증 없이 모은 어댑터를 사용하는 경우,
adapter_config.json의 기반 모델 항목이 곧 로드 대상을 결정하므로 노출될 수 있다. - 출처가 분명한 내부 어댑터만 다루고 기반 모델 경로가 승인한 저장소를 가리킨다면, 같은 코드가 있어도 공격자가 경로를 바꿀 통로는 제한된다.
레코드가 말하는 원격 공격 가능성은 취약점 기록의 서술이다. 어댑터 설정을 실제로 외부에서 제어할 수 있는지는 배포 환경마다 조건이 다르므로, 각 설치에서 별도로 확인해야 한다.
기술적 분석
보고된 내용에 따르면 AIlice의 래퍼 AModelCausalLM.LoadModel_PEFT()(ailice/core/llm/AModelCausalLM.py 55-70행)는 PEFT 어댑터의 기반 모델 id를 adapter_config.json에서 읽는다. PeftConfig.from_pretrained가 해석하는 base_model_name_or_path 항목이다. 이 값은 검증 없이 transformers.AutoTokenizer.from_pretrained()와 transformers.AutoModelForCausalLM.from_pretrained()에 전달되고, 두 호출은 설정된 Hugging Face Hub 엔드포인트(HF_ENDPOINT, 기본값 huggingface.co)를 기준으로 해당 필드가 이름 붙인 저장소를 내려받는다.
여기서 신뢰 경계가 한 칸 이동한다. 이용자가 어댑터만 승인해도, 실제로 내려받는 모델은 어댑터가 지정한 기반 모델 저장소가 결정한다. 어댑터 파일 내부의 참조를 승인 대상에서 제외하면 어댑터의 출처 검증만으로는 로드 대상을 통제하지 못하게 된다. Hugging Face Hub 엔드포인트가 기본값이 아니라 다른 미러로 설정된 환경이라면, 어느 엔드포인트의 어느 저장소가 해석되는지까지 함께 봐야 한다.
CVE 레코드는 이 상태를 신뢰할 수 없는 제어 영역의 기능 포함이라고 표현한다. 근거로 확인되는 범위는, 공격자가 어댑터 설정을 제어할 수 있다면 의도하지 않은 저장소의 모델이 다운로드될 수 있다는까지다. 임의 코드 실행이나 구체적인 후속 피해는 제공된 자료로 확인할 수 없으며, 레코드의 표현을 넘어선 결론으로는 보이지 않는다. README가 설명하듯 자율 동작을 지향하는 에이전트에서 모델 로딩이 자동화된 흐름 안에 놓일 가능성도 추정할 수 있지만, 이 경로가 자율 워크플로우에서 어떻게 호출되는지에 대한 근거는 없다.
공개 PoC·익스플로잇 분석
출처를 먼저 분리해서 볼 필요가 있다. CVE 레코드는 익스플로잇이 공개되어 사용될 수 있다고 명시하고, 코드 경로와 조작 지점은 GitHub 이슈의 보고 내용으로 설명된다. 즉 공개 상태에 관한 진술은 취약점 레코드에서, 메커니즘의 세부사항은 이슈 보고에서 나오며 두 출처가 서로 다른 층위의 정보를 제공한다.
전제조건은 메커니즘 쪽에서 따라 나온다. 어댑터 로딩 경로가 실제로 실행돼야 하고, adapter_config.json의 base_model_name_or_path 값을 공격자가 정할 수 있어야 하며, 그 값이 설정된 Hugging Face Hub 엔드포인트에서 공격자 의도의 저장소로 해석돼야 한다. 이 셋이 동시에 성립해야 어댑터 설정 조작이 곧 로드 대상 조작이 된다. 어댑터 파일이 내부 검증 절차 없이 유입되는 경로가 있는지, 모델 로딩이 사용자 또는 에이전트의 판단 없이 자동으로 일어나는지가 노출 크리를 좌우한다.
입증 범위는 출처가 전달하는 수준까지다. CVE 레코드는 익스플로잇이 공개되어 사용될 수 있다고 밝히고, 이슈 보고는 base_model_name_or_path가 검증 없이 두 from_pretrained 호출로 이어지는 코드 경로와 그 조작 지점을 특정해 설명한다. 다만 이곳에서 다루는 제공 자료의 범위에서는 첨부된 실행 결과를 독립적으로 재현하지 못했고, 실제 환경에서의 악용도 확인하지 못했다. 따라서 확인된 사실은 어댑터의 기반 모델 항목이 다운로드 대상을 결정한다는 구조와, 레코드가 익스플로잇 공개를 언급한다는 점까지다. 레코드의 표현을 그대로 받아 임의 코드 실행이나 확정된 후속 피해로 확장하면 근거를 벗어나게 된다.
운영상 의미는 확인 순서로 정리할 수 있다. 실제 악용을 뒷받침하는 근거가 확인되지 않았으므로 침해를 전제로 한 사고 대응보다는, 영향 버전 사용 여부와 PEFT 어댑터를 불러오는 경로를 먼저 확인하고 어댑터가 지정한 기반 모델 저장소의 신뢰성을 통제하는 쪽이 자료의 범위에 맞는다. 어댑터라는 입력을 신뢰 경계 안쪽으로 끌어오는 통제가 먼저다. 이 항목은 긴급 사고 표시가 아니라 입력 검증 부재를 알려주는 표시로 읽는 편이 근거에 부합한다.
대응 방안
공식 수정 버전이나 검증된 우회책은 제공된 근거에서 확인되지 않는다. 그래서 지금은 수정 적용보다 어댑터의 출처와 기반 모델 경로를 통제하는 쪽이 먼저다.
- 영향 버전 사용 여부를 확인하고, 서비스 안에서 PEFT 어댑터를 불러오는 경로가 무엇인지 먼저 정리한다.
- 사용 중이거나 도입 예정인 어댑터의 기반 모델 경로가 신뢰할 수 있는 저장소를 가리키는지 확인한다. 출처나 경로가 불명확한 어댑터는 확인이 끝날 때까지 사용을 보류한다.
- 어댑터 설정에서 전달되는 기반 모델 경로를 신뢰할 수 있는 대상으로 검증하는 방안을 검토한다. 어댑터 자체의 신뢰 확인과 어댑터가 지정한 모델의 신뢰 확인을 분리해서 다루는 것이 이 경로의 성질에 맞는다.
- 어댑터 설정의 기반 모델 경로와 실제로 사용된 모델 저장소를 확인할 수 있는 기록이 있다면, 승인된 출처와 비교해 예상하지 못한 참조를 조사한다. 구체적인 탐지 규칙이나 침해 지표는 확인되지 않았고, 기록의 가용성은 환경마다 다를 수 있다.
- 공식 수정 사항이 확인되면 변경 영향과 적용 가능성을 검토한다.
순서로 정리하면, 먼저 각 환경이 영향 버전과 어댑터 로딩 경로를 실제로 쓰는지 확정하고, 그다음 어댑터가 지정한 기반 모델 저장소의 신뢰성을 통제하며, 수정 사항이 공개되는 시점에 적용 검토로 넘어간다. 탐지 쪽은 확정된 지침이 아니라 기존 기록을 승인 출처와 견주는 수준의 점검에 머문다.
참고자료
- CVE-2026-122160: AIlice HuggingFace Model Wrapper
- LoadModel_PEFT() loads an attacker-controlled base model named in adapter_config.json
- AIlice project README
함께 읽으면 좋은 글
- CVE-2026-12411: LXD DevLXD 장치 패치로 열리는 게스트 간 볼륨 접근
- CVE-2026-122159: Audio8_TTS 모델 경로 해석의 경로 순회 취약점 점검
- banks CompletionExtension의 도구 호출 해석이 importlib에서 레지스트리로 바뀐 건 — 확인되는 사실과 유보되는 판단
본 콘텐츠는 AI 기술로 작성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하셨으면 댓글을 통해 의견을 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.
댓글 (0)
댓글을 작성하려면 로그인이 필요합니다.
로그인아직 댓글이 없습니다.
첫 번째 댓글을 작성해보세요!