오픈소스 인사이트
home
오픈소스 기술 동향
home

아티팩트 저장소에 방화벽이 필요한 이유

이 글은 Sonatype 공식 블로그의 Your Artifact Repositories Need a Firewall을 에스코어가 공식 파트너로서 한국어로 번역한 콘텐츠입니다.

에스코어 인사이트

이번 글은 악성 오픈소스 구성요소의 유입을 막는 통제가 어디에서 작동해야 하는지 살펴볼 필요가 있음을 보여줍니다. 개발자가 이미 악성 패키지를 내려받아 실행한 뒤에는 영향받은 환경과 자격 증명을 조사해야 하지만, 패키지 요청 단계에서 위험을 식별하고 차단하면 이러한 후속 대응 부담을 줄일 수 있습니다.
실제 도입을 검토할 때는 방화벽 기능뿐 아니라 개발자 PC, CI 파이프라인, AI 에이전트가 이용하는 패키지 공급 경로가 해당 통제를 통과하는지 함께 점검하는 것이 중요합니다. 기존 저장소 관리 도구와의 연계 범위, 패키지 생태계 지원 여부, 차단 판단에 사용되는 위협 정보의 최신성도 확인해야 합니다.

Sonatype 원문 번역

아티팩트 저장소에 방화벽이 필요한 이유

대부분의 조직은 직접 개발하는 소프트웨어의 취약점을 찾는 데 많은 시간을 씁니다. 하지만 개발이 시작되기도 전에 유입되는 악성 패키지는 어떻게 다루고 있을까요?
공격자들은 악성 패키지를 게시하거나 정상 프로젝트를 탈취하고, 평범한 의존성 다운로드를 자격 증명 탈취나 빌드 환경 침해의 기회로 바꿉니다. 악성 패키지는 설치 과정에서 코드를 실행할 수 있습니다. 그 시점에 개발자나 빌드 시스템은 이미 소스코드, 토큰, 클라우드 계정 또는 패키지 게시 자격 증명에 접근할 수 있습니다.
CI 파이프라인과 AI 에이전트는 패키지 요청량을 더 늘리고 있습니다. 이들은 매번 사람이 검토하지 않아도 의존성을 자동으로 확인하고 설치할 수 있습니다. 따라서 패키지가 개발 작업 흐름에 들어오는 지점은 위험을 평가할 중요한 통제 지점이 됩니다.
저장소 방화벽 또는 패키지 방화벽은 구성요소가 개발자, 에이전트, 빌드 환경에 도달하기 전에 의존성 요청을 위협 정보 및 정책과 대조합니다. 보호 효과는 위협 정보의 품질과 요청을 평가할 수 있는 위치에 따라 달라집니다.

최근 공격은 패키지 안에 얼마나 많은 위험이 숨을 수 있는지 보여줍니다

2026년 10월, 탈취된 TensorLake TypeScript SDK 릴리스는 설치 훅을 이용해 자격 증명을 찾아내고 원격 명령을 받을 수 있도록 했습니다.
Sonatype의 분석에서는 침해된 계정으로 접근할 수 있는 저장소를 수정하거나, GitHub를 통한 대체 경로로 수집한 데이터를 외부에 노출할 수 있는 코드를 발견했습니다. 다만 조사에서는 실제 데이터 게시, 저장소 수정 또는 하위 시스템에 대한 영향이 확인되지 않았습니다.
다른 공격 캠페인은 서로 다른 방식으로 같은 개발 작업 흐름에 침투했습니다.
•
탈취된 패키지와 새로 게시된 악성 패키지: npm 패키지 6개에 동일한 악성코드가 포함됐습니다. 이 가운데 3개는 기존 정상 패키지를 탈취한 것으로 보이고, 나머지 3개는 악성 페이로드를 포함한 상태로 게시됐습니다. 악성코드는 이더리움 트랜잭션을 이용해 추가 페이로드를 호스팅하는 인프라를 찾았습니다.
•
대규모 패키지 유포: Sonatype은 Flooding Dropper 캠페인에서 약 850개 구성요소를 확인했습니다. 해당 패키지는 Windows, Linux, macOS에서 추가 페이로드를 다운로드하고 실행했습니다.
•
자격 증명 탈취와 확산: Mini Shai-Hulud 공격은 구성요소 버전 2,200개 이상에 영향을 미쳤습니다. 공격자는 정상 패키지의 악성 릴리스에 설치 훅을 넣어 자격 증명을 훔치고, 패키지 게시 권한이 확보된 경우 다른 패키지까지 침해했습니다.
•
설치 시점 코드 실행: Miasma 공격은 일반적으로 알려진 생명주기 스크립트에만 의존하지 않고 binding.gyp와 node-gyp를 악용해 설치 중 코드를 실행했습니다. Leo Platform 침해 조사에서는 악성 패키지 버전 23개를 추적했습니다.
이러한 사례는 패키지 위험이 의심스러운 이름이나 새로 만들어진 프로젝트에 국한되지 않는다는 점을 보여줍니다. 익숙한 패키지에도 악성 코드가 들어올 수 있으며, 설치 중 실행되어 해당 패키지를 요청한 개발자, 빌드 시스템 또는 에이전트의 접근 권한을 악용할 수 있습니다.

저장소 또는 패키지 방화벽이 하는 일

저장소 또는 패키지 방화벽은 개발 환경에서 패키지 공급처로 전달되는 의존성 요청을 검사합니다. 요청한 구성요소를 보안 위협 정보와 대조하고, 제품의 기능 및 설정에 따라 악성으로 의심되거나 정책을 위반한 구성요소를 차단하거나 격리할 수 있습니다.
패키지가 이미 설치됐다면 영향을 받은 컴퓨터를 조사하고, 노출된 자격 증명을 식별하며, 지속성 확보 여부와 다른 시스템으로의 전파 가능성까지 확인해야 할 수 있습니다. 알려진 악성 패키지를 유입 지점에서 차단하면 이러한 사후 정리 작업 자체를 줄이는 데 도움이 됩니다.
방화벽은 소프트웨어 공급망 보호의 여러 방어 계층 중 하나입니다. 엔드포인트 보안, 코드 리뷰 또는 다른 통제를 대체하지는 않습니다. 방화벽이 대응하는 위험은 패키지 요청을 통해 악성 구성요소나 정책 위반 구성요소가 유입되는 것입니다. 모든 통제와 마찬가지로 적용 범위는 어떤 개발자, 파이프라인, 에이전트 및 패키지 공급처의 요청이 방화벽을 통과하는지에 달려 있습니다.

패키지 방화벽을 평가할 때 확인할 사항

저장소 또는 패키지 방화벽은 단순히 저장소와 레지스트리 사이에 위치하는 데 그쳐서는 안 됩니다. 제품을 평가할 때 다음 기능을 제공하는지 검토하세요.
•
패키지가 요청되는 시점에 다운로드 전에 악성 구성요소를 차단할 수 있는가?
•
알려진 취약점이나 의심스러운 패키지 이름만으로는 포착하기 어려운 위험까지 식별하도록 최신의 심층 위협 정보를 활용하는가?
•
공개 패키지 공급처에 접근할 수 있는 개발자, CI 파이프라인, AI 에이전트의 요청을 보호하는가?
•
기존 개발 작업 흐름을 바꾸지 않고 저장소 도구 및 패키지 공급처와 연동되는가?
•
개발팀이 사용하는 패키지 생태계를 지원하며, 어떤 레지스트리, 미러, 비공개 공급처가 보호 범위에 포함되는지 명확히 설명하는가?
효과적인 방화벽 보호는 악성 구성요소가 개발 과정에 들어오기 전에 이를 식별하고 차단함으로써 위협에 앞서 대응할 수 있도록 돕습니다. 패키지 유입 시점에 요청을 평가하면 빌드 침해 위험뿐 아니라 후속 조사와 재작업 부담도 줄이면서 개발의 흐름을 유지할 수 있습니다.

Sonatype의 위협 정보가 방화벽의 판단을 뒷받침하는 방식

방화벽의 판단은 그 근거가 되는 정보만큼만 유용합니다. Sonatype Firewall은 머신러닝 신호와 AI 기반 분석, 그리고 Sonatype 보안 연구팀의 전문성을 결합해 의심스러운 패키지를 식별하고 실제 악성 코드가 포함됐는지 조사합니다.
Sonatype은 릴리스 동작을 분석하고 패키지 내용을 살피며 여러 출처의 발견 사항을 연관 지어 위협을 조기에 탐지하고, 추가로 영향을 받은 패키지를 찾아냅니다. 이렇게 새로 확인한 내용을 방화벽의 차단과 격리 결정을 뒷받침하는 실행 가능한 위협 정보로 전환합니다.
이 과정에는 여러 유형의 분석이 사용될 수 있습니다.
•
활동 및 릴리스 패턴을 분석하면 프로젝트의 과거 이력이나 일반적인 생태계 활동과 다른 모습을 보이는 패키지를 찾는 데 도움이 됩니다.
•
행위 분석은 패키지나 릴리스에서 나타나는 비정상적인 징후를 찾아냅니다. 연구원은 해당 결과를 조사해 구성요소가 악성인지 확인할 수 있습니다.
•
페이로드 분석은 코드가 실제로 수행하는 동작을 조사합니다. 자격 증명 탈취, 코드 주입, 추가 페이로드 다운로드 등이 여기에 포함됩니다.
•
확장 분석은 최초 패키지 밖의 코드까지 추적합니다. 고급 바이너리 지문 분석(Advanced Binary Fingerprinting)은 선언된 의존성 목록에는 드러나지 않는 내장 코드나 이름이 변경된 코드를 식별하는 데 도움이 됩니다. 한 조사에서 Sonatype 연구진은 flatmap-stream 사고와 관련된 코드를 추가 npm 구성요소 12개에서 발견했습니다.
이러한 분석을 종합하면 패키지 이름이나 매니페스트만으로는 알 수 없는 맥락을 파악할 수 있습니다. 방화벽은 이러한 정보를 바탕으로 요청을 허용할지, 차단할지, 검토를 위해 보류할지 더 정확하게 판단할 수 있습니다.

모든 패키지 요청에 더 안전한 경로 제공하기

모든 의존성은 하나의 요청에서 시작됩니다. 개발자가 패키지를 추가하거나, 파이프라인이 빌드에 필요한 패키지를 가져오거나, AI 에이전트가 생성할 코드에 사용할 패키지를 선택합니다. 구성요소가 소프트웨어의 일부가 되기 전에 해당 요청을 평가할 기회가 있습니다.
Sonatype Firewall은 오픈소스가 소프트웨어 공급망에 들어오는 시점에 개발과 보안을 함께 고려하도록 돕습니다. Sonatype의 연구를 바탕으로 지원되는 저장소 환경에서 작동하도록 설계돼, 악성 구성요소가 개발자나 작업 흐름에 도달하기 전에 차단하도록 지원합니다. 조직은 유입 단계에서 알려진 위협을 차단해 불필요한 업무 중단을 줄이고 개발을 더 안정적으로 이어갈 수 있습니다.
기존 저장소가 안전한 구성요소 선택을 지원하더라도 악성 패키지가 개발 환경으로 들어올 가능성은 여전히 있습니다. 차이를 만드는 것은 위협을 어떻게 식별하는지, 새로운 악성 활동을 얼마나 빨리 발견하는지, 그리고 해당 정보를 이용해 다운로드 전에 차단할 수 있는지입니다. Sonatype Firewall은 이러한 역할을 하도록 설계됐습니다. 다양한 저장소 관리자를 지원하므로 알려진 위험을 차단하고 후속 작업을 줄일 보호 계층을 추가할 수 있습니다.
Sonatype Firewall이 악성 패키지로부터 저장소를 보호하는 데 어떻게 도움이 되는지 확인해 보세요.
에스코어는 Sonatype 공식 파트너로서 소프트웨어 공급망 보안 및 오픈소스 거버넌스 구축을 지원합니다. 도입이나 구축이 필요하시면 언제든 문의해 주세요.
지원 솔루션: Nexus Repository · Repository Firewall · Lifecycle · Sonatype Guide