본문으로 건너뛰기
Sourcegraph Blog조회 1

Deep Search를 활용한 대규모 공급망 공격 탐지 및 대응 가이드

LiteLLM 패키지의 악성 버전 배포 사건을 계기로, Sourcegraph의 Deep Search와 Code Search를 활용해 코드베이스 전반의 취약한 의존성 설정을 탐지하고 해결하는 실전 방법론을 제시한다.

섹션별 상세

공격자 TeamPCP가 PyPI에 LiteLLM 1.82.7 및 1.82.8 버전을 배포하여 클라우드 및 Kubernetes 비밀 정보를 탈취하는 사고가 발생했다. 버전 고정을 하지 않거나 넓은 범위를 허용하는 설정은 신규 설치 시 악성 버전이 자동으로 유입될 위험을 초래한다. 안전한 대응을 위해서는 즉시 1.82.6 이하의 버전으로 의존성을 고정하고 상한선을 설정해야 한다.
Sourcegraph의 Deep Search는 자연어 질문을 통해 대규모 코드베이스에서 특정 패키지의 사용 현황과 버전 고정 여부를 신속하게 파악한다. '악성 LiteLLM 버전을 사용하는 저장소가 있는가?'라는 질문에 대해 시스템은 의존성 파일을 분석하여 위험군과 안전군 저장소를 자동으로 분류한다. 이를 통해 보안 담당자는 복잡한 쿼리 작성 없이도 초기 대응 시간을 획기적으로 단축할 수 있다.
Deep Search를 사용하여 LiteLLM 악성 버전에 대한 위험도를 질문하고 분석 결과를 요약받는 화면이다.
Screenshot자연어 질문을 통해 대규모 저장소 중 어떤 곳이 취약한지, 어떤 곳이 버전 고정을 통해 안전한지 자동으로 분류해주는 기능을 보여준다. 초기 보안 사고 대응 시 수동 조사를 대체할 수 있는 효율성을 입증한다.
초기 분류 후에는 정규표현식을 포함한 Code Search 쿼리를 사용하여 설정 파일 내의 취약점을 전수 조사한다. 정규식을 활용한 쿼리는 악성 버전뿐만 아니라 잠재적인 패치 버전까지 한 번에 찾아내어 탐지 누락을 방지한다. 실제 분석 결과 microsoft/graphrag 등은 안전하게 고정되어 있었으나, 일부 저장소는 버전 미지정으로 인해 위험에 노출된 상태임이 확인됐다.
bash
litellm==1.82.7 OR litellm==1.82.8
file:(requirements.txt OR pyproject.toml OR setup.py OR Pipfile OR poetry.lock)

코드베이스 내에서 명시적으로 악성 버전(1.82.7 또는 1.82.8)을 고정하여 사용 중인 파일을 찾는 쿼리

bash
context:global file:(requirements|pyproject\.toml|poetry\.lock|Pipfile|setup\.py) /^[^#
]*litellm[^
]*1\.82\.(?:[7-9]|[1-9]\d+)/

악성 버전 및 이후에 나올 수 있는 패키지 변종을 정규표현식으로 한 번에 탐지하는 통합 검색 쿼리

Code Search 쿼리 결과로 나타난 실제 의존성 파일 내의 LiteLLM 버전 선언부이다.
Screenshot정규표현식 쿼리를 통해 검색된 파일들에서 litellm 버전이 어떻게 설정되어 있는지 구체적으로 보여준다. 이를 통해 개발자는 어떤 파일을 수정해야 하는지 즉각적으로 파악할 수 있다.
공격은 정교한 기술보다 패키지 관리자의 자동 업데이트 메커니즘을 악용하므로 엄격한 버전 관리가 필수적이다. 단순히 패키지명을 나열하는 대신 비교 연산자로 특정 버전을 명시하고, CI/CD 파이프라인에서 설치되는 의존성을 주기적으로 감사해야 한다. Sourcegraph 도구를 활용하면 새로운 취약점이 발견될 때마다 패키지명과 버전만 수정하여 즉각적인 전사적 보안 점검이 가능하다.

용어 해설

공급망 공격(Supply Chain Attack)
소프트웨어 제작 및 배포 과정의 취약점을 악용하여 신뢰할 수 있는 패키지 저장소에 악성 코드를 삽입하는 공격이다. 이번 LiteLLM 사례처럼 널리 쓰이는 라이브러리를 오염시켜 이를 의존하는 수많은 시스템의 자격 증명을 탈취하는 것이 주된 목적이다.
버전 고정(Version Pinning)
의존성 관리 파일에서 패키지 버전을 특정 수치로 고정하여 사용하는 기법이다. 버전 범위를 지정하지 않고 정확한 버전을 명시함으로써, 악성 코드가 포함된 최신 버전이 자동으로 설치되거나 업데이트되는 위험을 방지할 수 있다.
전이적 의존성(Transitive Dependency)
프로젝트가 직접 설치한 패키지가 내부적으로 의존하고 있는 또 다른 패키지를 의미한다. 개발자가 직접 관리하지 않는 파일에서 LiteLLM을 호출할 경우, 간접적으로 악성 버전에 노출될 수 있어 전수 조사가 필요하다.

기술

  • LiteLLM
  • Sourcegraph
  • Python
  • PyPI

활용 사례

  • 보안 취약점 전수 조사
  • 의존성 관리 자동화
  • 공급망 공격 대응
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 03. 27.수집 2026. 03. 27.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.