공급망 보안 강화: 다음 악성코드 캠페인 준비
오픈 소스 생태계는 손상된 자격 증명과 악성 패키지 수명 주기 스크립트를 통해 확산되는 조직화되고 적응력이 뛰어난 공급망 위협에 계속해서 직면하고 있습니다. 가장 최근의 예는 다중 파도 Shai-Hulud 캠페인입니다.
개별 사건의 메커니즘과 속도는 다르지만 패턴은 일관됩니다. 공격자는 신속하게 학습하고, 유지 관리 워크플로를 목표로 삼고, 게시 파이프라인에서 신뢰 경계를 악용합니다.
이 게시물은 유지 관리 담당자와 조직이 시스템을 강화하고 마지막 캠페인에 대응하는 것이 아니라 다음 캠페인을 준비하는 데 도움이 되는 지속적인 교훈과 조치를 정리합니다. 또한 다음 2분기 동안 npm 보안 로드맵의 다음 단계에 대해 자세히 공유합니다.
Shai-Hulud는 JavaScript 공급망을 대상으로 하는 조직화된 다단계 캠페인으로, 기회주의적 타협에서 엔지니어링된 표적 공격으로 발전했습니다.
첫 번째 물결은 손상된 관리자 계정을 남용하는 데 중점을 두었습니다. 악성 코드를 패키지에 삽입하고, 비밀을 유출하고, 자체 복제하기 위해 악성 설치 후 스크립트를 삽입하여 단일 발판이 종속성에 얼마나 빨리 파급될 수 있는지 보여주었습니다.
Shai-Hulud 2.0이라고 불리는 두 번째 물결은 위협을 더욱 확대했습니다. 손상된 자격 증명을 통해 자체 복제 및 확산되는 기능이 업데이트되어 피해자 간 자격 증명이 노출될 수 있습니다. 두 번째 물결은 또한 자체 호스팅 실행자 등록을 통해 엔드포인트 명령 및 제어를 도입하여 더 많은 전파와 파괴적인 기능을 촉진하기 위해 더 광범위한 비밀을 수집했습니다. 이 물결은 CI 환경에 초점을 추가하여 이 컨텍스트에서 실행 중임을 감지하면 동작을 변경하고 특정 빌드 에이전트를 대상으로 하는 권한 에스컬레이션 기술을 포함합니다. 또한 이전 웨이브 페이로드보다 감지하기 어려운 다단계 페이로드를 사용했습니다. 변종 사이의 단축된 타임라인은 조직적인 공격자가 커뮤니티 방어를 연구하고 이를 빠르게 반복하고 있음을 나타냅니다.
Shai-Hulud 캠페인은 격리된 위반이 아닌 자격 증명 수집 및 설치 시간 실행에 중점을 두고 관리자 워크플로 및 CI 게시 파이프라인의 신뢰 경계를 목표로 합니다. 우리가 파도 전체에서 볼 수 있는 정의적인 특징은 다음과 같습니다.
- 자격증명 인접 손상: 공격자는 손상된 자격 증명 또는 OAuth 토큰을 통해 초기 거점을 얻은 다음 추가 비밀(npm 토큰, CI 토큰, 클라우드 자격 증명)을 수집하여 범위를 확장합니다. 이를 통해 단일 장애 지점 없이 조직 전체와 향후 흐름 전반에서 재사용이 가능합니다.
- 난독화를 사용한 설치 시 실행: 악성 설치 후 스크립트 또는 수명 주기 스크립트가 패키지(또는 종속성 체인)에 삽입되어 런타임 시에만 동작을 드러냅니다. 페이로드는 조건부로 활성화되는 경우가 많으며(예: 환경 확인, 조직 범위) 실행 중인 환경에 맞는 기술을 사용하여 데이터를 유출합니다.
- 신뢰할 수 있는 네임스페이스 및 내부 패키지 이름 대상 지정: 이 캠페인은 인기 있고 신뢰할 수 있는 패키지에 영향을 미쳤으며 웜은 기존 패키지 이름을 가진 감염된 패키지를 게시했습니다. 두 번째 물결에서는 또한 패키지의 버전 번호를 패치하여 감염된 패키지가 합법적인 업데이트처럼 보이도록 하고 일반적인 관리자 활동과 조화를 이루도록 했습니다.
- 방어에 대한 신속한 반복 및 엔지니어링: 이전 완화를 우회하기 위한 변형과 의도적인 변경 사이의 짧은 간격은 체계적인 캠페인 사고방식을 나타냅니다. 목표는 일회성 기회주의가 아닌 지속적인 액세스와 확장 가능한 확산입니다.
- 출판 파이프라인의 맹점을 검토합니다. 소스와 게시된 아티팩트, 수명 주기 스크립트, 빌드 시간 변환 간의 차이로 인해 팀에 아티팩트 검증이나 단계적 승인이 부족한 경우 주입된 동작이 예고 없이 실행될 수 있는 격차가 발생합니다.
이 패턴의 최근 물결은 방어자가 단일 변형에 맞게 완화를 조정하기보다는 게시 모델 및 자격 증명 흐름을 사전에 강화해야 한다는 점을 강화합니다.
우리는 진화하는 위협 환경에 대처하기 위해 보안 로드맵을 가속화하고 있습니다. 앞으로 우리의 즉각적인 초점은 다음에 대한 지원을 추가하는 것입니다.
- 대량 OIDC 온보딩: 조직이 수백 개의 패키지를 대규모로 신뢰할 수 있는 게시로 마이그레이션하는 데 도움이 되는 간소화된 도구입니다.
- 확장된 OIDC 공급자 지원: GitHub Actions 및 GitLab 외에 추가 CI 제공자에 대한 지원을 추가합니다.
- 단계적 출판: 패키지 소유자의 MFA 인증 승인을 받아 패키지가 게시되기 전에 유지 관리 담당자에게 검토 기간을 제공하는 새로운 게시 모델입니다. 이를 통해 팀은 의도하지 않은 변경 사항이 다운스트림 사용자에게 도달하기 전에 이를 포착할 수 있습니다. 이는 커뮤니티가 수년 동안 요청해온 기능입니다.
이러한 투자를 통해 관리자는 게시 프로세스의 모든 단계에서 패키지를 보호할 수 있는 더욱 강력하고 유연한 도구를 얻을 수 있습니다.
Shai-Hulud와 같은 악성 코드는 npm 패키지에 악성 코드를 추가하여 확산되는 경우가 많습니다. 악성 코드는 패키지 설치의 일부로 실행되므로 패키지를 설치하는 모든 npm 사용자가 손상됩니다. 악성코드는 로컬 시스템에서 토큰을 찾아 계속해서 전파하는 데 사용할 수 있습니다. npm 패키지에는 종속성이 많은 경우가 많기 때문에 하나의 패키지에 악성 코드를 추가하면 공격자는 간접적으로 다른 여러 패키지를 감염시킬 수 있습니다. 그리고 공격자는 수집된 토큰 중 일부를 즉시 사용하지 않고 비축함으로써 초기 손상 후 몇 주 또는 몇 달 후에 새로운 캠페인을 시작할 수 있습니다.
아래의 “참고 자료” 섹션에는 최근 캠페인 분석과 보안 유지 방법에 대한 조언이 포함된 긴 기사에 대한 링크가 포함되어 있으므로 여기서 모든 정보를 다시 설명하지는 않겠습니다. 대신 다음은 최고의 권장 사항에 대한 간략한 요약입니다.
모두를 위한 조언
- 모든 계정, 특히 npm, PyPI, RubyGems 또는 NuGet과 같은 GitHub 패키지 관리자와 이메일 및 소셜 미디어 계정과 같이 계정 탈취 또는 피싱에 활용될 수 있는 모든 계정에서 피싱 방지 MFA를 활성화하세요.
- 토큰이 정기적으로 교체되도록 항상 토큰에 만료 날짜를 설정하세요. 조직은 최대 수명 정책을 시행할 수 있습니다.
- 사용하지 않는 GitHub/OAuth 앱에 대한 액세스를 감사하고 취소합니다.
- 개발 작업에는 GitHub Codespaces 또는 가상 머신이나 컨테이너와 같은 샌드박스를 사용하세요. 이렇게 하면 실수로 실행한 맬웨어의 액세스가 제한됩니다.
유지관리자를 위한 조언
위의 조언은 예방적인 것입니다. 자신이 공격의 피해자라고 생각하고 GitHub 또는 npm 계정을 보호하는 데 도움이 필요한 경우 GitHub 지원에 문의하세요.
작성자:



Post Comment