이 페이지는 번역본입니다. 공식 원문은 영어판입니다. 영어로 읽기
llm-abuse · litellm · llm-gateway · agent-harness · deepseek · credential-abuse · tool-calling
탈취된 LLM 게이트웨이를 겨냥한 DeepSeek Harness: 도구 호출은 호출자 측에서 실행된다
에이전트형 LLM 클라이언트인 DeepSeek Harness, 즉 DeepSeek의 개발자 프리뷰 에이전트 프레임워크가 허니팟 LLM 게이트웨이를 향해 설정된 사례이며, 이를 수행한 두 주소는 전날 해당 게이트웨이에서 발급된 가상 키를 재사용한 주소와 동일하다.
작성자 Davis Zheng·
TLP:CLEAR. 공개 배포 승인됨. Kinryū Labs 허니팟 센서 네트워크로 수집함. 아래 지표는 무해화 처리함.
후속 보고서: DeepSeek Harness 악용: 자율 에이전트가 운영자의 호스트를 노출하다, 2026-09-27.
핵심 요약
- 11호출자 자신의 호스트가 회신한 도구 실행 결과
- 60에이전트 하네스 클라이언트에서 발생한 게이트웨이 요청
- 2탈취된 게이트웨이 키를 공유한 주소
- 31.2 h최초 생존 확인 프로브부터 마지막 프롬프트까지
2026년 9월 21일, 한 클라이언트가 당사 허니팟 LLM 게이트웨이 중 하나를 향해 에이전트 하네스를 설정하고 도구 실행 결과를 게이트웨이로 회신했다. 총 11건이 세 개 주소에 걸쳐 나타났으며, 103.85.74[.]25에서 5건, 203.175.15[.]28에서 5건, 그리고 사흘 앞서 188.239.18[.]109에서 1건이 확인됐다. 이는 엔드포인트가 반환한 도구 호출을 호출자 자신의 호스트에서 실행하는 하네스의 형태다.
이 홍콩 주소 두 곳은 sk-0af475b8…를 재사용했다. 이 값은 전날 LiteLLM 관리 키 라우트를 통해 벤더 기본 마스터 키 sk-1234로 당사 게이트웨이에서 발급된 가상 키다. 두 주소 모두 AS152320 GOALNOW에 속하며, 그중 하나는 sk-1234 자체를 제시하기도 했다. 9월 21일 이들은 사용자 에이전트 deepseek-harness/0.1.5-rc.2를 달고 다시 나타났다. 이는 DeepSeek의 개발자 프리뷰 에이전트 프레임워크로 모델 어댑터가 설정 가능한 base URL을 읽으며, 이들은 당사 게이트웨이를 모델 백엔드로 구동했다. 양일의 활동을 단일 운영자에게 귀속하는 판단은 신뢰도 낮음으로 유지한다. 근거가 동일한 두 주소가 양일에 모두 등장했다는 점과 키 재사용뿐이기 때문이다.
키보드 앞의 사람이 직접 조작했을 가능성은 낮다. 9월 20일 04:25:44 UTC부터 9월 21일 11:34:45 UTC 사이의 78개 이벤트에 포함된 실제 활동 시간은 106초이며, 1999자 프롬프트 하나가 0.01초 만에 도달했다. 이는 타이피스트가 낼 수 있는 초당 10자 속도를 훨씬 상회한다. 당사는 이를 사람이 시작 시점을 정한 자동화 에이전트 루프일 가능성이 가장 높다고 판단하나, 템포 판정 자체는 혼재한다.
에이전트 턴 이전의 점검
10:49부터 11:20 UTC 사이에 103.85.74[.]25는 어떠한 에이전트 턴도 시작하기 전에 당사 게이트웨이를 상대로 세 차례에 걸친 점검을 수행했다. 시작은 생존 확인 경로를 다시 프로브하고 14초 동안 사용 가능한 모델을 두 번 열거한 것이었다. 11:00 UTC에는 서로 다른 세 개의 호스팅 모델명을 대상으로 동일한 단일 토큰 프로브 Reply with exactly: OK를 세 번 전송했다. 11:20 UTC에는 짧은 영어 역량 테스트를 실행했다. ping, 이어서 Compute 17*23+19. Reply with ONLY the number., strawberry의 글자 수를 묻는 문항, Reverse the string 'litellm'., 그리고 부르키나파소의 수도를 묻는 문항이었으며, 각각 답만 요구했다. 문자열 뒤집기 시험에 litellm을 고른 점은 호출자가 어떤 제품을 상대하고 있는지 알고 있었음을 보여준다.
11:26 UTC부터는 사용자 에이전트가 바뀌고 프롬프트가 더 이상 질문 형태가 아니게 된다. 해당 턴들은 스킬 스캐폴딩 시스템 리마인더를 담고 있으며, 11:34 UTC의 한 요청은 [system-reminder] A skill is a reusable set of task-specific…로 시작한다.
운영자는 두 개 언어로 작업하며 클라이언트에 맞춰 언어를 전환한다. 9월 20일 검증은 python-requests/2.28.1을 통해 중국어 간체로 진행되어 1+2+3等于几?只回答数字, 이어 中国的首都是哪座城市?只回答城市名, 이어 用Python读取文件data.txt并打印内容,给出完整代码가 전송됐고, 9월 21일 하네스 역량 테스트는 영어였다.
회신된 도구 실행 결과
이런 종류의 하네스는 자신의 엔드포인트가 반환한 도구 호출을 운영자 자신의 머신에서 실행한다. 운영자는 추론 엔드포인트를 탈취한 뒤 이를 도구 호출을 로컬에서 실행하는 프레임워크에 연결했으며, 따라서 적대적인 엔드포인트가 그런 에이전트의 실행 내용을 통제하게 된다. 하네스가 누구를 위해 구동됐는지, 각 호출이 호출자의 호스트에서 무엇을 했는지는 알려지지 않았고, 하네스가 도구 승인을 비활성화한 상태로 구동됐는지 아니면 운영자가 매 호출을 확인했는지도 알 수 없다.
세 번째 주소는 이전 분석에서 자리표시자 키로 동일한 게이트웨이를 긁어간 건으로 이미 기록해 둔 바 있으며, AS152320 쌍과는 다른 네트워크에 위치한다. 따라서 동일한 클라이언트 측 도구 실행 행위가 이 풀 바깥에서도 나타나므로, 당사는 이를 단일 행위자의 시그니처가 아니라 하나의 유형으로 추적한다.
시험 단계와 활용 단계
운영자의 도구 체계에는 시험 단계와 활용 단계가 있으며, 에이전트가 필요한 것은 활용 단계뿐이다. 동일한 두 주소가 9월 20일에는 스크립트 기반 HTTP 클라이언트와 고정된 중국어 역량 테스트를 사용했고, 9월 21일에는 스킬 스캐폴딩을 갖춘 에이전트 프레임워크를 사용했다. 이 변화는 해당 엔드포인트를 검증 대상에서 실제 동작하는 도구 체계에 연결된 구성 요소로 옮겼다.
저비용 점검은 어떠한 에이전트 턴보다 앞섰다.
소비 풀
하나의 자율 시스템 내 두 개 /24에 속한 두 주소가 추론을 소비했으며, 양일 모두 수 분 간격으로 번갈아 나타났다. 103.85.74[.]25가 속한 /24에는 2026년 9월 15일부터 22일 사이에 다른 활성 소스가 없으며, 220개 이벤트 전부가 이 단일 주소에서 발생했다. 당사는 두 프리픽스에 걸친 교대를 의도적인 분산으로 판단한다.
게이트웨이에 제시된 키
sk-1234 외에도, 한 호출자는 본문이 base64 PKCS#8 개인키 접두부인 베어러 토큰 sk-MIIJQQIB…를 제시했다. 개인키가 API 키로 제시되는 현상은 수집된 목록에서 자격증명이 유형 검사 없이 재사용되고 있음을 시사하며, 이는 대상별로 세심하게 키를 관리하기보다 상위 단계에서 대량 수집이 이뤄졌음을 가리킨다. 그 키가 어느 시스템의 것인지, 어디서 탈취됐는지는 밝혀지지 않았다.
하네스 요청은 운영자가 대가를 지불하지 않은 키로 추론을 소비했으며, 이는 리소스 하이재킹(T1496)에 해당한다. 키 자체는 탈취된 애플리케이션 액세스 토큰(T1528)이었고, 한 주소는 벤더 기본 마스터 키 자체를 제시했는데 이는 기본 계정(T1078.001)에 해당한다.
검토한 경쟁 가설
표: 동일한 두 소스가 두 지표를 모두 제시했으며, 어느 쪽도 제시한 제3의 소스는 없다 2026년 9월 15일부터 22일 사이, 발급된 키 값과 하네스 사용자 에이전트를 기준으로 한 코호트 피벗. 두 행은 서로 다른 대상을 센다. 하나는 키 제시 횟수이고 다른 하나는 해당 사용자 에이전트를 실은 요청 수다.
| 지표 | 이벤트 | 기간 | 소스 | /24 | 조직 |
|---|---|---|---|---|---|
sk-0af475b8… 제시 | 57 | 16분, 9월 20일 | 2 | 2 | 1 (AS152320) |
deepseek-harness/0.1.5-rc.2 | 60 | 11분, 9월 21일 | 2 | 2 | 1 (AS152320) |
당사는 하네스 세션이 키를 발급한 운영자의 것인지 아니면 하위 구매자의 것인지를 가리기 위해 이 피벗을 수행했으나, 이 문제는 해소되지 않는다. 발급된 키의 제시 기록에서 도출한 소스 집합에는 발급 요청 자체가 포함될 수 없다. 소스 집합이 동일하다는 사실은 재판매된 키를 소비하는 제3자 하네스 사용자를 배제할 뿐, sk-0af475b8…를 누가 발급했는지에 대해서는 아무것도 말해주지 않으므로, 당사는 이 해석을 결론 미확정으로 기록한다.
두 가지 경쟁 가설이 추가로 열려 있다. 위의 세션 산술, 즉 31.2시간에 걸친 29회의 버스트, 버스트 내 간격 중앙값 3.2초, 측정 가능한 38개 간격 중 26개가 초당 10자 속도로 가능한 수준보다 빠르다는 점에 비추어 키보드 앞의 사람일 가능성은 낮으나, 템포 판정이 혼재하므로 결론 미확정으로 유지한다. 증거 어디에도 세션이 오류로 종료됐음을 보여주는 것은 없으며, 103.85.74[.]25의 마지막 요청은 11:34:45 UTC였다.
사용자 에이전트가 위조인지 여부도 결론 미확정이다. 해당 문자열이 지목하는 프로젝트는 실재하며 모델 어댑터가 설정 가능한 base URL을 받는다. 관측된 턴들은 스킬 스캐폴딩을 담고 있고 대화 안에서 도구 실행 결과를 회신하는데, 이는 플러그인 하네스와 부합한다. 또한 2026년 9월 15일부터 22일 사이에 이 문자열을 제시한 소스는 두 곳뿐이었다.
이 풀이 하네스를 다른 곳으로 향하게 하는지 여부
동일한 풀이 다른 탈취된 추론 엔드포인트를 향해 하네스를 설정하는지, 또는 이 주소들이 9월 15일 이전에 무엇을 했는지는 알지 못한다.
권고 조치
이 왕복 구조는 두 집단, 즉 에이전트 하네스를 운용하는 쪽과 LiteLLM 게이트웨이를 운용하는 쪽 모두에 변경을 요구한다. 에이전트 하네스를 운용한다면 base URL을 직접 통제하는 모델 엔드포인트로 고정하고 도구 실행에 사람의 승인을 요구해야 한다. 적대적이거나 탈취된 엔드포인트가 반환한 도구 호출은 당신의 머신에서 실행되기 때문이다. 직접 구축하지 않은 저가 OpenAI 호환 중계 엔드포인트로 하네스를 향하게 하는 모든 개발자에게 동일한 노출이 적용된다. LiteLLM을 운용한다면 sk-1234를 교체하고, 가상 키가 발급된 네트워크와 다른 네트워크에서 제시될 때 경보를 발생시켜야 한다.
핵심 판단
- 9월 20일에 발급된 가상 키를 재사용한 두 주소는 9월 21일에 deepseek-harness 클라이언트를 구동한 두 주소와 동일하며, 그중 하나는 게이트웨이에 sk-1234도 제시했다. 발급된 가상 키 sk-0af475b8…는 2026년 9월 15일부터 22일 사이에 정확히 두 소스, 203.175.15[.]28과 103.85.74[.]25에서 제시됐고 둘 다 AS152320 GOALNOW(홍콩)에 속하며, 이 동일한 두 주소가 9월 21일 11분 구간 안에서 deepseek-harness 사용자 에이전트를 실은 유일한 두 소스다. 신뢰도 보통.
- 클라이언트는 자신의 호스트에서 생성된 도구 실행 결과를 엔드포인트로 회신했다. 호출자 자신의 호스트에서 11건의 도구 실행 결과가 회신됐으며, 103.85.74[.]25에서 5건, 203.175.15[.]28에서 5건, 188.239.18[.]109에서 1건이고, 각각 대화 안에서 하네스가 도구 실행 결과로 표시했다. 신뢰도 보통.
- 이 세션은 자동화된 에이전트 루프일 가능성이 가장 높다. 템포 판정은 혼재한다. 103.85.74[.]25의 이벤트 78개가 31.2시간에 걸쳐 있으나 실제 활동 시간은 106초에 불과하고, 측정 가능한 38개 간격 중 26개가 초당 10자 속도로 가능한 수준보다 빠르며, 1999자 프롬프트가 0.01초 만에 전달됐다. 신뢰도 낮음.
- 운영자는 탈취한 엔드포인트가 진짜 모델인지 확인한 뒤에야 작업을 맡긴다. 9월 21일 어떠한 에이전트 턴에 앞서 클라이언트는 동일한 'Reply with exactly: OK' 프로브를 세 번 전송했고, 이어 산술, 글자 수 세기, 문자열 뒤집기, 지리 문항으로 구성된 영어 역량 테스트를 모두 단일 토큰 답변만 요구하는 형태로 수행했으며, 그 후에야 스킬 스캐폴딩을 담은 턴을 시작했다. 신뢰도 보통.
타임라인
- 2026-09-20 04:25 UTC103.85.74[.]25가 게이트웨이 생존 확인 경로를 프로브한다
- 2026-09-20 12:22 UTC203.175.15[.]28이 /v1/chat/completions에 발급된 가상 키 sk-0af475b8…를 제시한다
- 2026-09-20 12:34 UTC103.85.74[.]25가 동일한 키를 제시하고 python-requests/2.28.1을 통해 중국어 간체 검증 프롬프트 세 개를 실행한다
- 2026-09-21 10:49 UTC103.85.74[.]25가 다시 나타나 생존 확인을 재점검하고 14초 동안 모델을 두 번 열거한다
- 2026-09-21 11:00 UTC세 개의 호스팅 모델명을 대상으로 동일한 'Reply with exactly: OK' 프로브 세 건
- 2026-09-21 11:20 UTC영어 역량 테스트: 산술, 글자 수 세기, 'litellm' 문자열 뒤집기, 지리
- 2026-09-21 11:26 UTC클라이언트가 deepseek-harness/0.1.5-rc.2로 전환되고 에이전트 턴이 시작된다
- 2026-09-21 11:34 UTC한 요청이 에이전트 스킬 스캐폴딩을 담고 있다
- 2026-09-21 11:37 UTC203.175.15[.]28의 마지막 하네스 요청. 이 시점까지 세 개 주소에 걸쳐 11건의 도구 실행 결과가 회신됐다
세션 전개 순서
12:34:13 1+2+3等于几?只回答数字
12:34:43 中国的首都是哪座城市?只回答城市名
12:34:56 用Python读取文件data.txt并打印内容,给出完整代码
11:00:31 Reply with exactly: OK
11:20:35 ping
11:20:42 Compute 17*23+19. Reply with ONLY the number.
11:20:48 How many times does the letter 'r' appear in the word 'strawberry'? Reply with ONLY the number.
11:20:52 Reverse the string 'litellm'. Reply with ONLY the reversed result.
11:20:55 What is the capital of Burkina Faso? Reply with ONLY the city name.
11:26:26 deepseek-harness/0.1.5-rc.2 (+https://github.com/deepseek-ai/deepseek-harness)
11:34:45 [system-reminder] A skill is a reusable set of task-specific…
공격 수법
| 항목 | 관측 내용 | 방어자에게 주는 시사점 |
|---|---|---|
| 도구 | 동일한 두 주소가 9월 20일에는 python-requests/2.28.1과 고정된 중국어 프롬프트 역량 테스트를, 9월 21일에는 스킬 스캐폴딩을 갖춘 에이전트 프레임워크를 사용했다. | 해당 엔드포인트는 검증 대상에서 실제 동작하는 도구 체계에 연결된 구성 요소로 승격됐다. 운영자의 도구 체계에는 시험 단계와 활용 단계가 있으며, 에이전트가 필요한 것은 두 번째 단계뿐이다. |
| 순서 | 생존 확인 프로브, 14초 동안 두 번의 모델 열거, 세 개 모델명에 대한 동일한 단일 토큰 프로브 세 건, 이어 짧은 역량 테스트, 그다음 에이전트 턴. | 저비용 점검이 모든 에이전트 턴에 앞선다. 클라이언트는 엔드포인트에 에이전트를 맡기기 전에 검증에 비용을 쓴다. |
| 운영 보안 | 도구 호출을 로컬에서 실행하는 에이전트 하네스가 운영자가 며칠 전 탈취한 엔드포인트를 향하도록 설정됐고, 자신의 호스트에서 생성된 도구 실행 결과를 그 엔드포인트로 회신했다. | 운영자는 탈취한 인프라를 신뢰 대상으로 취급하는데, 이는 위험 구조를 뒤집는다. 탈취된 엔드포인트를 통제하는 쪽이 에이전트를 구동하는 머신 안으로 손을 뻗을 수 있다. |
| 인프라 | AS152320의 서로 다른 두 /24에 속한 두 주소가 양일 모두 수 분 간격으로 교대했고, 다른 네트워크의 세 번째 주소는 사흘 앞서 같은 종류의 도구 실행 결과를 회신했다. | 소비 풀은 작고 프리픽스에 걸쳐 의도적으로 분산돼 있으며, 클라이언트 측 도구 실행 행위는 이 운영자에게만 고유한 것이 아니므로 단일 행위자의 시그니처가 아니라 하나의 유형으로 추적해야 한다. |
| 실수 | 본문이 base64 PKCS#8 개인키 접두부인 베어러 토큰이 벤더 기본 키와 함께 게이트웨이에 제시됐다. | 자격증명이 수집된 목록에서 유형 검사 없이 재사용되고 있으며, 이는 대상별 세심한 키 관리가 아니라 상위 단계의 대량 수집을 시사한다. |
검증 방법
| 가설 | 검증 | 결과 | 판정 |
|---|---|---|---|
| 하네스 세션은 하위 구매자가 아니라 키를 발급한 바로 그 운영자의 것이다 | 발급된 키 값과 하네스 사용자 에이전트를 기준으로 코호트를 피벗해 소스 집합, 자율 시스템, 시간대를 비교 | 서로 다른 대상을 세는 두 개의 별도 코호트. 키 코호트: 9월 20일 16분 동안 sk-0af475b8…를 제시한 57개 이벤트, 2개 /24의 2개 소스, 1개 조직(AS152320). 사용자 에이전트 코호트: 9월 21일 11분 동안 deepseek-harness/0.1.5-rc.2를 실은 60개 이벤트, 동일한 2개 소스. 2026년 9월 15일부터 22일 사이에 두 지표 중 어느 것도 제시한 제3의 소스는 없었다. 발급된 키의 제시 기록에서 도출한 소스 집합에는 발급 요청 자체가 포함될 수 없으므로, 소스 집합이 동일하다는 사실은 재판매된 키를 소비하는 제3자 하네스 사용자를 배제할 뿐 sk-0af475b8…를 누가 발급했는지에 대해서는 아무것도 말해주지 않는다. | 결론 미확정 |
| 키보드 앞의 사람이 이 세션들을 조작했다 | 103.85.74[.]25에 대한 세션 템포 산술 | 판정 혼재: 31.2시간 동안 78개 이벤트에 활동 시간 106초, 버스트 내 간격 중앙값 3229 ms, 측정 가능한 38개 간격 중 26개가 초당 10자 속도로 가능한 수준보다 빠름, 1999자 프롬프트가 0.01초 만에 전달됨 | 결론 미확정 |
| deepseek-harness 사용자 에이전트는 정상적인 개발 도구처럼 보이도록 고른 위조 문자열이다 | 참조된 프로젝트가 실재하는지, 관측된 행위가 문서화된 설계와 부합하는지 확인하고, 이 문자열을 제시한 소스가 몇 곳인지 확인 | 프로젝트는 실재하며 모델 어댑터가 설정 가능한 base URL을 받는다. 관측된 턴들은 스킬 스캐폴딩을 담고 대화 안에서 도구 실행 결과를 회신하는데, 이는 HTTP 스캐너가 아니라 플러그인 하네스와 부합한다. 2026년 9월 15일부터 22일 사이에 이 문자열을 제시한 소스는 2곳뿐이었다 | 결론 미확정 |
| 엔드포인트가 실패하거나 타임아웃이 발생해 세션이 종료됐다 | 세션 말미의 오류나 공백을 탐색 | 103.85.74[.]25의 세션은 11:34:45 UTC까지 이어지며 증거 어디에도 오류로 종료됐음을 보여주는 것은 없다. 부재는 증명이 아니다 | 결론 미확정 |
수치로 보기
센서 텔레메트리와 인리치먼트에서 자동 측정한 값이며, 추정치가 아니다.
- 템포. 31.2시간 동안 29회의 버스트에 걸친 78개 명령: 활동 106초, 유휴 31.1시간. 버스트 내 간격 중앙값 3229 ms(간격 49개 기준 최소 0 ms, 최대 4924 ms). 판정 혼재: 세션은 스크립트 기준도 대화형 기준도 충족하지 않으므로, 어느 한쪽으로 끼워 맞추지 않고 있는 그대로 보고한다.
- 도구 코호트(ja4h).
ge11nn060000_7f7bfeb0a491_000000000000_000000000000: 1일 동안 2개 호스팅 사업자에 걸친 2개 /24의 2개 소스. 널리 배포된 공용 도구. - 도구 코호트(ja4h).
po11nn080000_3d0e84a9a84f_000000000000_000000000000: 4일 동안 3개 호스팅 사업자에 걸친 4개 /24의 4개 소스. 널리 배포된 공용 도구. - 인프라. 해당 /24에는 활성 소스가 1개뿐이며, 공유 풀의 징후는 없다.
- VirusTotal 연관 정보. 해당 주소는 홍콩의 GOALNOW NETWORK TECHNOLOGY CO., LIMITED에 속한다. 89개 엔진 중 1개가 이 주소 자체를 악성 또는 의심으로 판정한다. 반환된 기록에서 이 주소는 1개 호스트명을 해석한 이력이 있으며, 가장 최근 건은 2019-03-27의 xxhcj[.]cn이다.
침해 지표
아래 3개 네트워크 지표는 무해화 처리했다. 경로는 관측된 그대로 기재했고, ASN 행은 원형 그대로 두었다.
네트워크
| 지표 | 맥락 |
|---|---|
103.85.74[.]25 | AS152320 GOALNOW(홍콩). 발급된 키를 제시하고 deepseek-harness 클라이언트를 구동함 |
203.175.15[.]28 | AS152320 GOALNOW(홍콩). 동일 풀의 두 번째 주소이며 동일한 키와 동일한 하네스 사용자 에이전트를 사용함 |
188.239.18[.]109 | 9월 18일에 다른 키 계통으로 같은 종류의 도구 실행 결과를 회신한 별개 주소 |
AS152320 | GOALNOW NETWORK TECHNOLOGY CO.(홍콩). 두 소비 주소가 모두 여기에 속함 |
호스트 아티팩트
| 지표 | 맥락 |
|---|---|
sk-0af475b8… | LiteLLM 관리 키 라우트를 통해 센서 게이트웨이에서 발급되어 AS152320의 두 주소가 재사용한 가상 키 |
deepseek-harness/0.1.5-rc.2 (+https://github.com/deepseek-ai/deepseek-harness) | 게이트웨이를 구동한 에이전트 프레임워크의 사용자 에이전트. 2026년 9월 15일부터 22일 사이 2개 소스이며 모두 AS152320 소속 |
sk-MIIJQQIB… | 게이트웨이에 제시된 베어러 토큰으로 본문이 base64 PKCS#8 개인키 접두부이며, 수집된 자격증명 목록의 재사용과 부합함 |
탐지
Sigma
허용 목록에 없는 LLM 엔드포인트를 향한 에이전트 하네스 사용자 에이전트(후보).
title: Agent harness user agent toward a non-allowlisted LLM endpoint
status: experimental
logsource:
category: proxy
detection:
selection_ua:
c-useragent|contains:
- 'deepseek-harness/'
selection_path:
cs-uri-stem|contains:
- '/v1/chat/completions'
- '/v1/models'
filter_allowlisted:
cs-host|contains:
- 'api.deepseek.com'
- 'api.openai.com'
condition: selection_ua and selection_path and not filter_allowlisted
falsepositives:
- Developers legitimately evaluating self-hosted or third-party model endpoints
- Internal model gateways not present in the allowlist
level: medium
탐지 로직
- LiteLLM 가상 키가 발급 네트워크와 다른 네트워크에서 제시됨(네트워크, 후보). POST /key/generate(또는 모든 관리용 키 발급 라우트)와 이후 /v1/chat/completions에서 반환된 키 값이 제시되는 사건을 상관 분석한다. 발급 소스 주소와 소비 소스 주소가 서로 다른 자율 시스템에 있을 때, 또는 게이트웨이를 상대로 이력이 없는 네트워크에서 발급 후 1시간 이내에 소비 주소가 나타날 때 경보를 발생시킨다. 게이트웨이가 요청마다 키 id 또는 키 해시를 기록해야 한다.
- 추론 엔드포인트를 상대로 한 모델 진위 확인 역량 테스트(행위, 후보). 인터넷에 노출된 추론 엔드포인트에서, 실질적인 요청에 앞서 1분 이내에 단일 토큰 답변 프롬프트를 여러 개 발행하는 세션, 동일한 ‘Reply with exactly: X’ 프로브, 간단한 산술, 단어 내 글자 수 세기, 문자열 뒤집기, 한 단어 지리 문항을 표시한다. 이는 호출자가 해당 엔드포인트가 진짜 모델인지 확인하는 행위이며, 운영 게이트웨이에서는 정상적인 사용자 트래픽이 아니다.
- 고정되지 않은 base URL로 도구 호출을 실행하는 에이전트 하네스(호스트, 후보). 개발 및 빌드 호스트에서, 에이전트 하네스 프로세스(deepseek-harness, dsh 또는 이에 준하는 것)가 승인된 허용 목록 밖을 가리키는 모델 base URL 환경 변수와 함께 실행될 때, 그리고 해당 프로세스가 그 base URL로 나가는 HTTPS 요청 직후 수 초 내에 셸이나 파일 읽기 도구를 생성할 때 경보를 발생시킨다.
조치
- 벤더 기본값 sk-1234이거나 그와 유사한 LiteLLM 마스터 키를 교체하고, 해당 키가 유효한 동안 발급된 가상 키를 폐기한다.
- LiteLLM 관리 라우트(/key/generate, /key/list, /config/yaml, /user/list)를 내부 네트워크나 인증된 관리 평면으로 제한하고, 절대로 /v1/chat/completions와 동일한 리스너에 두지 않는다.
- 에이전트 하네스의 base URL을 직접 통제하는 엔드포인트 허용 목록으로 고정하고, 기본 프로파일에 의존하지 말고 도구 실행에 승인을 요구한다.
- 모든 추론 요청에 키 식별자와 소스 네트워크를 기록해 발급자의 네트워크가 아닌 곳에서 사용된 키를 탐지할 수 있게 한다.
- 모델 응답을 신뢰할 수 없는 입력으로 취급한다. 엔드포인트에서 도착한 도구 호출은 그 엔드포인트를 통제하는 자가 내린 명령이다.
MITRE ATT&CK 매핑
| 전술 | 기법 | 관측 내용 |
|---|---|---|
| 방어 회피 | T1078.001 Valid Accounts: Default Accounts | 벤더 기본 LiteLLM 마스터 키 sk-1234가, 이후 발급된 가상 키를 사용한 것과 동일한 주소에서 게이트웨이에 제시됐다. |
| 자격증명 접근 | T1528 Steal Application Access Token | 관리 라우트를 통해 발급된 가상 키 sk-0af475b8…가 동일 자율 시스템의 두 주소에서 재사용됐다. |
| 영향 | T1496 Resource Hijacking | 9월 21일 11분 동안 에이전트 하네스 사용자 에이전트를 실은 60건의 게이트웨이 요청이 운영자가 대가를 지불하지 않은 키로 추론을 소비했다. |
| 실행 | T1059 Command and Scripting Interpreter | 호출 호스트가 세 개 주소에 걸쳐 11회 도구 실행 결과를 엔드포인트로 회신했으며, 이는 엔드포인트의 도구 호출을 로컬에서 실행하는 하네스의 패턴이다. |
참고 자료
- DeepSeek Harness (deepseek-ai/deepseek-harness), 에이전트 프레임워크, 개발자 프리뷰
- DeepSeek Harness 개발자 프리뷰: 모든 것이 플러그인이다
- DeepSeek Harness 아키텍처: 프로파일, 플러그인, 승인 정책
방법론 및 분석자 노트
관측 대상은 2026년 9월 18일부터 21일 사이 당사 게이트웨이 중 하나를 상대한 세 개 주소다. 프롬프트는 전송된 그대로 인용했으며 긴 것은 줄였다. 하네스가 누구를 위해 구동됐는지, 각 호출이 호출자의 호스트에서 무엇을 했는지는 알려지지 않았다. 9월 20일 키 발급과의 연결은 키 값에 대한 당사 자체 기록에 근거하며, 외부의 별도 확인에 근거하지 않는다.
여전히 미해결인 사항:
- 하네스가 누구를 위해 구동됐는지.
- 하네스가 도구 승인을 비활성화한 상태로 구동됐는지, 아니면 운영자가 매 호출을 확인했는지.
- base64 PKCS#8 베어러 토큰이 어느 시스템의 것이며 어디서 수집됐는지.
문의 또는 정정 요청: [email protected].