TL; DR
2025년 9월 14일, 연구원들은 다음을 확인했습니다. 샤이후루드그 안에는 자기 복제하는 벌레가 숨어 있습니다. npm 패키지일상적인 종속성 업데이트를 본격적인 업데이트로 전환합니다. 공급망 공격처음 발견된 곳은... @ctrl/tinycolor Daniel dos Santos Pereira가 개발한 Shai-Hulud 패키지는 비밀 정보를 수집하고, GitHub 저장소와 워크플로를 통해 유출한 후, 탈취한 자격 증명을 사용하여 레지스트리 전체에 자체적으로 재배포합니다. 감염된 패키지 수가 며칠 만에 수십 개에서 수백 개로 급증하면서 이 악성 프로그램이 효과적임을 확인시켜 줍니다. 샤이훌루드 이는 단순한 트로이 목마가 아니라 npm 생태계 전반에 자동으로 확산되도록 설계된 웜입니다.
충격: 공개된 npm 패키지를 설치하는 개발자나 CI 실행자는 모두 위험에 노출될 수 있습니다.
즉각적인 조치 : 알려진 버전을 차단하고, 잠금 파일 전용 설치로 전환하고, npm 및 GitHub 토큰을 순환하고, 워크플로를 감사하고, 침해 지표(IoC)를 모니터링합니다.
무슨 일이 일어났나요?
The Shai-Hulud의 npm 패키지 공급망 공격 최근 기억에 남는 가장 파괴적인 사건 중 하나입니다. 개별 트로이목마와 달리 이 웜은 여러 요소를 혼합합니다. 자격 증명 도용, 자동 데이터 유출 및 자기 복제그 결과, 감염 확산 기간이 몇 주에서 단 몇 시간으로 단축되었습니다.
DevOps 팀에게 주는 교훈은 분명합니다. 모든 설치에서 코드를 실행할 수 있다면 모든 종속성 업데이트는 잠재적인 보안 취약점이 될 수 있다는 것입니다.
가능한 초기 공격 경로 및 목표 자격 증명
초기 분석 이는 공격이 아마도 ~로부터 시작되었음을 나타냅니다. 도난당한 자격 증명예를 들어, npm을 사칭하는 피싱 캠페인 login 또는 MFA 인증 과정에서 개발자 토큰이 탈취되었을 수도 있습니다. 공격자가 첫 번째 발판을 마련하면 웜은 npm 패키지에 침투하여 확산되고 다음과 같은 경로에서 더 많은 비밀 정보를 탈취합니다.
- npm 설정 파일 처럼
.npmrc종종 게시 토큰을 포함합니다. - 환경 변수 GitHub PAT를 사용한 구성 및 CI/CD 비밀.
- 클라우드 메타데이터 엔드포인트 (AWS, GCP, Azure)에서 측면 이동을 위한 단기 자격 증명을 제공합니다.
따라서 자격 증명 도용이 발판이 되었습니다. 유효한 npm 토큰과 GitHub 비밀 키를 사용하면 Shai-Hulud는 추가적인 인력 투입 없이 여러 패키지와 저장소에 걸쳐 자체 복제할 수 있었습니다.
샤이훌루드 공급망 공격이 경영진에 미치는 영향
Shai-Hulud는 오늘날에도 여전히 활동 중입니다. 이 웜은 영향 확산 시간을 단축시킵니다. 트로이목마의 경우 몇 주가 걸리던 일이 이제는 몇 시간 만에 발생합니다. 결과적으로, 확산 속도가 빠르고 통제하기가 더 어렵습니다. 다음과 같은 방식으로 진행됩니다:
- npm publish 토큰과 GitHub 비밀 키를 훔치는 행위.
- 다른 npm 패키지에 자체적으로 다시 게시합니다.
- 지속성을 위해 악성 GitHub Actions 워크플로를 추가합니다.
영향을 받는 사람:
공개 npm 패키지를 설치하는 모든 팀은 취약점에 노출됩니다. 또한, npm 또는 GitHub 토큰을 캐시하는 개발자는 높은 위험에 직면하게 됩니다. 광범위한 범위의 비밀 키를 사용하는 CI 실행기도 취약합니다.
사업 위험
비즈니스에 미치는 영향은 빠르게 커집니다. 도난당한 토큰은 계정 탈취, 패키지 하이재킹, 심지어 클라우드 오용으로 이어질 수 있습니다. 또한 GitHub 워크플로의 지속성으로 인해 정리가 더욱 어려워집니다. 따라서따라서 각 팀은 샤이-훌루드 사건을 종결된 사건이 아닌 진행 중인 사건으로 다뤄야 합니다.
Shai-Hulud의 npm 패키지 공급망 공격은 어떻게 작동하는가
공격자의 목표와 동기
이 캠페인은 다음 세 가지를 최적화합니다.
- 첫 번째 목표는 다음과 같습니다. 대규모로 자격 증명을 탈취하세요 개발자 노트북과 CI 실행기에서 수집된 정보입니다. 여기에는 npm 게시 토큰, GitHub 토큰, 클라우드 자격 증명이 포함됩니다. 실제로 여러 분석 결과, TruffleHog 실행 및 클라우드 메타데이터 엔드포인트 조회와 같은 체계적인 비밀 키 수집이 확인되었습니다.
- 두 번째 목표는 다음과 같습니다. 자동으로 전파됨 해킹당한 관리자의 게시 권한을 악용함으로써 발생합니다. 결과적으로, 새로운 감염된 버전의 다른 패키지가 추가적인 사람의 노력 없이 나타나면서 하나의 발판이 빠르게 여러 곳으로 확산됩니다.
- 세 번째 목표는 다음과 같습니다. 지속적으로 유지되고 안정적으로 유출됩니다. GitHub 인프라를 통해 공격자는 이중 base64 인코딩을 사용하는 "Shai-Hulud"라는 이름의 공개 저장소를 생성합니다. 데이터.json또한, 그들은 직렬화하는 워크플로우를 구축합니다. ${{ toJSON(secrets) }} 그리고 해당 데이터를 정적 웹훅에 게시합니다.
예상되는 이점으로는 레지스트리와 소스 코드에 대한 장기적인 접근 권한, 클라우드 계정으로의 빠른 이동, 그리고 공급망을 더욱 악용할 수 있는 옵션이 있습니다. 공개된 보고서에 따르면 비공개 저장소가 공개 저장소로 전환되는 사례가 있습니다. "-이주" 데이터 노출과 모멘텀을 증가시키는 접미사
샤이훌루드 페이로드 내부: 번들.js npm 패키지에서
샤이훌루드는 다음과 같은 선박으로 운항합니다. 용량이 크고, Webpack으로 번들링되었으며, 대폭 축소되었습니다. 자바스크립트 파일 (번들.js(약 3~3.7MB) 다음에서 실행되는 설치 후 후크 인 package.json따라서, 모든 설치 과정에서 페이로드가 자동으로 실행됩니다. 이러한 설계는 식별자를 숨기고, 제어 흐름을 압축하며, 모든 로직을 설치 중에 실행되는 단일 아티팩트에 통합합니다. 분석가들은 Webpack 번들링, 비정상적인 파일 크기, 설치 시 실행 등의 현상을 일관되게 확인했습니다.
샘플에서 볼 수 있는 모호화 및 분석 방지 특성:
- 축소된 모듈 그래프 숫자 모듈 ID, 간략한 주석, 그리고 평면화된 제어 흐름을 특징으로 합니다. 또한,, 이러한 구조는 수동 검토를 매우 어렵게 만듭니다.
- 문자열 숨기기 base64 레이어와 구성 도우미를 통해. 예를 들면., 반복적인 base64 인코딩 및 디코딩은 일반적으로 데이터 유출 루틴 주변에서 나타납니다.
- 동적 배차 을 통하여 평가-스타일 패턴 및 생성된 함수 본문을 통해 런타임에 코드의 동작을 변경할 수 있습니다.
- OS 필터링 특히 CI 실행기 및 개발자 노트북에서는 Linux 및 macOS 실행 환경을 선호합니다.
기능적인 관점에서 볼 때, 이 번들은 모듈식입니다. 보고서에는 OS 검색, 파일 시스템 및 Git 비밀 키 스캔, 클라우드 SDK 접근, GitHub API 작업, 그리고 관리자가 소유한 다른 패키지를 수정하는 전파 엔진을 위한 모듈에 대한 설명이 포함되어 있습니다. 실제로 StepSecurity와 ReversingLabs는 모두 악성 후크를 사용하여 패키지를 자동으로 업데이트하는 기능을 강조합니다.
Shai-Hulud의 설치 시 실행: npm 패키지가 웜을 작동시키는 방법
공격은 다음과 같은 시점에 시작됩니다. postinstall은 노드를 실행합니다. 번들.js. 이 시점에서 스크립트는 메모리에 작업 상태를 초기화하고 압축을 해제하여 웜의 완전한 작동을 위한 기반을 마련합니다.
발견과 수확
- 이 페이로드는 process.env 파일을 덤프하고 로컬 파일에서 높은 엔트로피의 비밀 키와 토큰 접두사를 검색합니다. 또한 TruffleHog를 실행하여 검사 범위를 확장합니다.
- 이 기능은 클라우드 메타데이터 엔드포인트에 쿼리를 보내 단기 자격 증명을 수집합니다. 예를 들어, 에 전화
169.254.169.254AWS에서 또는metadata.google.internalGCP에서 발생하는 문제는 감염된 호스트에서 흔히 나타납니다. - 따라서, 발견된 모든 자격 증명은 즉시 새로운 npm 패키지를 게시하거나 GitHub 워크플로를 푸시하는 데 사용할 수 있습니다.
여과
- 웜은 라는 이름의 새로운 GitHub 저장소를 생성합니다. 샤이후루드 그리고 base64로 인코딩된 이중 값을 씁니다.
data.json플랫폼 세부 정보, 환경 덤프 및 비밀 정보가 포함됩니다. 보시다시피, 이러한 시끄러운 동작은 방어자가 어디를 살펴봐야 하는지 알고 있다면 쉽게 발견할 수 있습니다. - 또한 GitHub Actions 워크플로를 생성하는데, 이는 대개 특정 이름의 브랜치에 적용됩니다. 샤이-훌루드직렬화하는
${{ toJSON(secrets) }}그리고 해당 데이터를 정적 웹훅에 게시합니다. 또한, 이 워크플로는 누군가가 직접 삭제할 때까지 지속됩니다.
번식
- 발견된 npm 토큰을 이용하면, 페이로드는 해당 패키지 관리자가 소유한 모든 패키지를 열거합니다. 그런 다음 각 tarball을 가져와 bundle.js 파일과 postinstall 항목을 삽입하고 패키지를 다시 게시합니다.
- 그 결과, 감염된 패키지가 단 몇 시간 만에 수십 개 나타나 생태계 전반에 걸쳐 파급 효과가 확산될 수 있습니다.
지속성 및 노출
이 웜은 악성 워크플로우를 계속 실행시키고, 여러 경우에 개인 저장소를 공개 저장소로 전환합니다. "-이주" 접미사. 이 모든 것을 통해 공격자는 발판을 유지하고 데이터 유출을 극대화할 수 있습니다.
주요 감지 참고 사항
이 특이한 사용법 ${{ toJSON(secrets) }} Actions 워크플로에서는 이러한 경우가 드뭅니다. 따라서, 수색팀은 이를 사냥 중 강력한 신호로 간주해야 합니다.
정리된 워크플로 패턴을 찾아보세요
이 특이한 사용법 에 JSON(비밀) 이번 사건에서 '조치'는 매우 중요한 신호입니다.
고수준 전파 의사 코드(안전하고 설명적임)
분석가들은 이러한 악순환이 대규모로 발생하는 것을 관찰했으며, 이는 감염된 패키지 수가 수십 개에서 수백 개로 급격히 증가한 이유를 설명합니다.
이것이 패키지 생태계의 웜인 이유는 무엇일까요?
웜은 모든 단계에서 수동 조작 없이 스스로 확산되는 악성 소프트웨어입니다. 운영 체제에서 웜은 일반적으로 네트워크 취약점을 악용하여 한 시스템에서 다른 시스템으로 이동합니다. 이와 달리 Shai-Hulud는 npm 레지스트리 내부에서 작동합니다. 이 악성 프로그램의 효율적인 확산 경로는 다음과 같습니다. 자격 증명 재사용.
이 웜은 탈취한 npm publish 토큰을 악용합니다. 유효한 자격 증명을 획득하는 즉시, 동일한 관리자가 소유한 다른 패키지에 감염된 버전을 다시 게시합니다. 그러면 해당 패키지들이 아무것도 모르는 개발자나 CI 실행자에 의해 설치되고, 이 과정이 반복됩니다.
이러한 이유로 보안 분석가들은 다음과 같은 이유로 보안 분석을 진행합니다. 어두운 독서샤이훌루드를 다음과 같이 분류합니다. 자기 복제하는 벌레 단순한 트로이 목마나 타이포스쿼팅 사건과는 다릅니다. 이 차이점은 중요합니다. 트로이 목마는 일반적으로 하나의 호스트를 감염시키지만, 웜은 생태계 전체에 걸쳐 그 영향을 자동으로 증폭시킵니다.
"작동 방식" 요약본
Shai-Hulud의 생애주기를 요약하면 다음과 같습니다.cis주요 단계에 대한 분석:
- 패키지 포함 설치 후 설치되어 있습니다.
bundle.js실행합니다. - 페이로드는 환경 변수를 덤프하고, 파일과 Git 기록을 스캔하고, 실행됩니다. 트러플호그또한 클라우드 메타데이터 서비스를 쿼리합니다. 결과적으로 발견된 모든 비밀 정보는 즉시 유용하게 사용됩니다.
- 데이터 유출은 두 가지 방식으로 발생합니다. 첫째, 공개 저장소를 생성하는 방식입니다. 샤이후루드 이중 base64 인코딩
data.json둘째, GitHub Actions 워크플로를 설정하여 게시물을 올리는 것입니다.${{ toJSON(secrets) }}웹훅으로. - 탈취한 npm 토큰을 이용해 웜은 감염된 관리자가 소유한 다른 모든 패키지를 동일한 악성 후크를 사용하여 다시 게시합니다. 이런 식으로 감염이 빠르게 확산됩니다.
- 결과적으로 공격자는 더 많은 비밀 정보와 확산시킬 더 많은 패키지를 확보하게 됩니다. 고집 GitHub 계정 및 저장소 내부.
이러한 유형의 공격을 실질적으로 피하는 방법
Shai-Hulud는 경각심을 일깨워주는 사건입니다. 토큰을 훔쳐 스스로를 재배포하는 웜은 미래의 위험이 아니라 이미 우리 사회에 만연해 있습니다. npm 패키지 생태계 오늘날 이러한 유형의 문제를 예방하기 위해 공급망 공격팀에는 프로그래밍 가능하고 자동화되어 있으며 직접적으로 시행 가능한 제어 기능이 필요합니다. CI/CD pipelines. 이것들은 이미 구현할 수 있는 것과 동일한 방어 수단입니다. 제니.
나쁜 유물은 입구에서 막아라
npm 패키지와 tarball은 개발자나 CI 작업에 도달하기 전에 스캔해야 합니다. 크기가 너무 큽니다. bundle.js 파일, 의심스러운 설치 후 문제 hooks그리고 모호화 표시는 모두 초기 위험 신호 역할을 합니다. 또한, 일정 기간의 유예 기간과 고정 버전을 시행하는 것도 중요합니다. pipelines는 검증되지 않은 신규 릴리스가 자동으로 소비되는 것을 방지합니다.
Harden CI/CD 기본적으로
Guardrails in CI/CD 필수적입니다. 새로운 스크립트나 바이너리를 도입하는 병합 또는 설치를 거부합니다. 동시에 비밀 정보를 직렬화하거나 외부 게시를 시도하는 워크플로를 차단합니다. 팀은 또한 잠금 파일만 사용하는 설치를 요구해야 합니다.npm ci) 모든 영역에 걸쳐 pipeline따라서 종속성 세트는 재현 가능하고 안전하게 유지됩니다.
토큰 폭발 반경을 줄이세요
비밀 정보는 단일 실패 지점이 되어서는 안 됩니다. 코드, 설정 등을 지속적으로 스캔하십시오. pipeline 출력 노출된 자격 증명토큰은 사용 범위가 좁고 수명이 짧아야 하며, 노출이 감지되면 자동으로 교체되어야 합니다. 일반적으로 의심스러운 postinstall을 실행한 호스트에서 사용된 토큰은 모두 손상된 것으로 간주해야 합니다.
벌레의 행동을 초기에 관찰하세요
이상 감지 이는 매우 중요합니다. 예를 들어, npm publish 이벤트의 갑작스러운 급증, 이유 없이 나타나는 새로운 워크플로, 또는 이상하게 인코딩된 파일로 가득 찬 새로운 공개 저장소는 모두 웜 활동의 징후일 수 있습니다. 따라서 팀은 신속하게 경고를 발령하고 이러한 경고 신호를 보이는 관리자 또는 실행자를 격리해야 합니다.
빌드를 손상시키지 않고 신속하게 수정하세요
속도와 안전은 함께 가야 합니다. 자동화 pull requests 손상된 npm 패키지를 검증된 버전으로 교체할 수 있습니다. 또한, 도달 가능성 악용 가능성 분석을 통해 업그레이드가 최소화되고 안정적으로 유지되도록 합니다. 마지막으로, 노출이 확인되면 영향을 받은 CI 실행기를 깨끗한 이미지로 다시 빌드하여 공격이 더 이상 확산되지 않도록 합니다.
침해 지표(IoC)
샤이훌루드를 분석할 때 팀은 다음 두 가지를 모두 주의 깊게 살펴봐야 합니다. 정적 IoC 파일 및 행동적 IoC in pipeline이러한 신호들을 종합하면 감염을 조기에 감지하고 기생충이 더 확산되기 전에 대응할 수 있습니다.
정적 IoC
다음 SHA-256 다이제스트는 관찰된 결과와 일치합니다. bundle.js 샘플 :
- 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
- 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
- dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c
또한 다음과 같은 반복적인 패턴에 주의하십시오.
- A
bundle.js패키지 루트에 있습니다. "postinstall": "node bundle.js"내부package.json.- 저장소 이름 샤이후루드.
- GitHub 워크플로우 포함
${{ toJSON(secrets) }}.
행동적 IoC
파일 시그니처 외에도 웜 활동은 동작을 통해 드러납니다. 예를 들면 다음과 같습니다.
- 한 관리자로부터 npm publish 이벤트가 갑자기 폭증하는 현상.
- 데이터를 외부 엔드포인트로 전송하는 새로운 워크플로.
- CI 실행기에서 트리거되는 외부 POST 요청.
- 최근에 인코딩된 데이터 블록이 포함된 공개 저장소가 생성되었습니다.
빠른 사냥
결론: 샤이훌루드에서 얻은 교훈
The 샤이훌루드 공급망 공격 npm 패키지에서 발견된 이 웜은 오늘날 소프트웨어 공급망이 얼마나 취약해졌는지 보여줍니다. 이 웜은 악성 코드를 추가하는 것 이상으로 토큰을 탈취하고 데이터를 전송한 후 자동으로 스스로를 재배포했습니다. 이 때문에 공격이 몇 주가 아닌 몇 시간 만에 확산되었습니다.
개발자와 DevOps 팀에게 주는 교훈은 분명합니다.
- 모든 설치는 코드를 실행합니다. 흔히 볼 수 있는 npm 패키지조차도 설치 후 악성 코드를 숨길 수 있습니다.
- 모든 토큰은 높은 가치를 지닙니다. 일단 도난당하면 악성 소프트웨어를 더욱 확산시키는 데 사용될 수 있습니다.
- 모든 pipeline 점검이 필요합니다. 없이 guardrails 종속성, 워크플로 및 기밀 정보에 대한 사소한 문제라도 발생하면 순식간에 운영 환경에 영향을 미칠 수 있습니다.
따라서 Shai-Hulud와 같은 공격을 막으려면 자동화되고 쉽게 적용할 수 있는 제어 시스템이 필요합니다. 팀은 npm 패키지를 설치하기 전에 스캔하고, 락파일 빌드를 사용하고, 의심스러운 게시 활동을 감지하고, 토큰의 유효 기간을 짧게 유지해야 합니다. 이러한 조치는 더 이상 선택 사항이 아니라, 현대 시스템의 복원력을 위한 기반이 되어야 합니다. pipelines.
Xygeni는 Shai-Hulud 공급망 공격을 전체 오픈 소스 생태계에 대한 경고로 보고 있습니다. 지속 가능한 해결책은 공급망 보안을 코드, npm 패키지 등이 생성되는 개발 프로세스에 직접 통합하는 것입니다. pipelines 연결.
다음은 Shai-Hulud에서 손상된 것으로 보고된 npm 패키지 및 버전 전체 목록입니다. 이 목록을 사용하여 잠금 파일, 레지스트리 및 CI 시스템을 점검하십시오. pipeline노출을 위한 s.
손상된 패키지 목록
📦 손상된 npm 패키지 미리보기
| 패키지 이름 | 버전 | 게시 날짜 |
|---|---|---|
| JSON 규칙 엔진 간소화 | 0.2.1 | 2025-09-14T17:58:51.203Z |
| 조종사 | 0.8.8 | 2025-09-14T18:35:07.600Z |
| mcp-지식-그래프 | 1.2.1 | 2025-09-14T18:35:09.494Z |
| 공군 사령관 | 0.3.1 | 2025-09-14T18:35:09.521Z |
| 점프게이트 | 0.0.2 | 2025-09-14T18:35:09.651Z |
| tvi-cli | 0.1.5 | 2025-09-14T18:35:10.996Z |
| @thangved/콜백 창 | 1.1.4 | 2025-09-14T20:31:38.479Z |
| @tnf-dev/api | 1.0.8 | 2025-09-14T20:31:39.547Z |
| @tnf-dev/js | 1.0.8 | 2025-09-14T20:31:41.251Z |
| @tnf-dev/mui | 1.0.8 | 2025-09-14T20:31:41.259Z |
| @tnf-dev/core | 1.0.8 | 2025-09-14T20:31:42.728Z |
| @teselagen/react-table | 6.10.20 | 2025-09-14T20:37:08.597Z |
| @hestjs/데모 | 0.1.2 | 2025-09-14T20:45:52.348Z |
| @nexe/eslint-config | 0.1.1 | 2025-09-14T20:45:53.625Z |
| @hestjs/eslint-config | 0.1.2 | 2025-09-14T20:45:55.044Z |
| @nexe/config-manager | 0.1.1 | 2025-09-14T20:45:55.066Z |
| @nexe/로거 | 0.1.3 | 2025-09-14T20:45:55.170Z |
| @hestjs/로거 | 0.1.6 | 2025-09-14T20:45:55.197Z |
| @hestjs/검증 | 0.1.6 | 2025-09-14T20:45:55.595Z |
| @hestjs/core | 0.2.1 | 2025-09-14T20:45:55.888Z |
➡️ 해킹당한 패키지 전체 목록 보기
| 패키지 이름 | 버전 | 게시 날짜 |
|---|---|---|
| JSON 규칙 엔진 간소화 | 0.2.1 | 2025-09-14T17:58:51.203Z |
| 조종사 | 0.8.8 | 2025-09-14T18:35:07.600Z |
| mcp-지식-그래프 | 1.2.1 | 2025-09-14T18:35:09.494Z |
| 공군 사령관 | 0.3.1 | 2025-09-14T18:35:09.521Z |
| 점프게이트 | 0.0.2 | 2025-09-14T18:35:09.651Z |
| tvi-cli | 0.1.5 | 2025-09-14T18:35:10.996Z |
| @thangved/콜백 창 | 1.1.4 | 2025-09-14T20:31:38.479Z |
| @tnf-dev/api | 1.0.8 | 2025-09-14T20:31:39.547Z |
| @tnf-dev/js | 1.0.8 | 2025-09-14T20:31:41.251Z |
| @tnf-dev/mui | 1.0.8 | 2025-09-14T20:31:41.259Z |
| @tnf-dev/core | 1.0.8 | 2025-09-14T20:31:42.728Z |
| @teselagen/react-table | 6.10.20 | 2025-09-14T20:37:08.597Z |
| @hestjs/데모 | 0.1.2 | 2025-09-14T20:45:52.348Z |
| @nexe/eslint-config | 0.1.1 | 2025-09-14T20:45:53.625Z |
| @hestjs/eslint-config | 0.1.2 | 2025-09-14T20:45:55.044Z |
| @nexe/config-manager | 0.1.1 | 2025-09-14T20:45:55.066Z |
| @nexe/로거 | 0.1.3 | 2025-09-14T20:45:55.170Z |
| @hestjs/로거 | 0.1.6 | 2025-09-14T20:45:55.197Z |
| @hestjs/검증 | 0.1.6 | 2025-09-14T20:45:55.595Z |
| @hestjs/core | 0.2.1 | 2025-09-14T20:45:55.888Z |
| @hestjs/cqrs | 0.1.6 | 2025-09-14T20:45:55.966Z |
| @hestjs/scalar | 0.1.7 | 2025-09-14T20:45:56.386Z |
| ng2-파일-업로드 | 7.0.3 | 2025-09-15T02:44:29.555Z |
| 커패시터 알림 핸들러 | 0.0.2 | 2025-09-15T04:54:48.431Z |
| 커패시터 플러그인 보네이지 | 1.0.2 | 2025-09-15T04:54:48.501Z |
| 커패시터 플러그인 헬스 앱 | 0.0.2 | 2025-09-15T04:54:48.704Z |
| 커패시터안드로이드 권한 | 0.0.4 | 2025-09-15T04:54:48.753Z |
| voip-callkit | 1.0.2 | 2025-09-15T04:54:49.223Z |
| 커패시터 플러그인 ihealth | 1.1.8 | 2025-09-15T04:55:08.113Z |
| @art-ws/common | 2.0.22 | 2025-09-15T05:21:15.411Z |
| @art-ws/config-eslint | 2.0.4 | 2025-09-15T05:21:17.199Z |
| ngx-ws | 1.1.5 | 2025-09-15T05:21:17.514Z |
| @art-ws/slf | 2.0.15 | 2025-09-15T05:21:17.524Z |
| @art-ws/http-server | 2.0.21 | 2025-09-15T05:21:17.745Z |
| pm2-gelf-json | 1.0.4 | 2025-09-15T05:21:18.413Z |
| @art-ws/di | 2.0.28 | 2025-09-15T05:21:18.488Z |
| @art-ws/di-node | 2.0.13 | 2025-09-15T05:21:18.849Z |
| @art-ws/config-ts | 2.0.7 | 2025-09-15T05:21:19.408Z |
| @art-ws/db-context | 2.0.21 | 2025-09-15T05:21:19.814Z |
| @art-ws/openapi | 0.1.9 | 2025-09-15T05:21:19.969Z |
| @art-ws/웹 앱 | 1.0.3 | 2025-09-15T05:21:20.383Z |
| @art-ws/ssl-info | 1.0.9 | 2025-09-15T05:21:20.927Z |




