우리는 Dependency Audit를 새로운 ClawMoat 탐지로 전환했습니다

발행: (2026년 3월 18일 오전 05:13 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

Prototype Pollution (__proto__ injection)

CVE family: axios mergeConfig, lodash merge

공격자는 {"__proto__": {"admin": true}}와 같은 JSON을 취약한 라이브러리에 보낼 수 있습니다. AI 에이전트가 해당 내용을 처리하거나 전달하면 호스트 애플리케이션의 프로토타입 체인이 손상될 수 있습니다.

ClawMoat이 이제 감지합니다:

{"__proto__": {"isAdmin": true}}
{"constructor": {"prototype": {"role": "admin"}}}

ReDoS via Nested Extglobs

CVE family: minimatch GHSA-952p-6rrq-rcjv, GHSA-f8q6-p94x-37v3

minimatch 라이브러리는 *(*(*(a)))와 같은 패턴이나 인접한 ** 구간이 여러 개 있을 때 심각하게 백트래킹합니다. 에이전트가 이러한 패턴을 사용해 파일 경로를 검증하면 서비스 거부(DoS) 공격에 노출될 수 있습니다.

ClawMoat이 이제 표시합니다:

  • 중첩된 *() extglob 패턴
  • 인접한 GLOBSTAR 구간이 여러 개인 경우 (예: **abc**def**)
  • (.+)+와 같은 고전적인 중첩 수량자

JWT Algorithm Confusion

CVE family: PyJWT GHSA-m695-7mj6-7w6v, jose alg:none

alg: none 공격은 JWT 라이브러리에게 서명 검증을 완전히 건너뛰도록 지시합니다. kid 삽입 공격은 키 ID 헤더에 SQL이나 경로 탐색 페이로드를 숨길 수 있습니다.

ClawMoat이 이제 감지합니다:

{"alg": "none", "typ": "JWT"}
{"kid": "../../keys/../../etc/passwd"}
{"crit": ["custom-header"]}

Decompression Bombs

CVE family: urllib3 GHSA-g4mx-q9vg-27p4

urllib3는 이전에 압축 해제 체인의 깊이에 제한이 없었으며, 공격자는 gzip을 brotli 안에, brotli를 zstd 안에 중첩시켜 메모리를 고갈시킬 수 있었습니다. 에이전트가 신뢰할 수 없는 소스의 콘텐츠를 압축 해제하면 이는 실질적인 공격 벡터가 됩니다.

ClawMoat은 중첩된 압축 지시문과 의심스러울 정도로 큰 Base64 인코딩 페이로드를 감지합니다.

Drive‑Relative Path Traversal

CVE family: tar GHSA-qffp-2rhf-9h96

Windows에서 C:target과 같이 백슬래시 없이 경로를 지정하면 C:\target이 아니라 현재 C: 드라이브 디렉터리로 해석됩니다. 이러한 항목을 포함한 아카이브는 ../ 검사를 우회하여 의도된 추출 디렉터리 밖에 파일을 쓸 수 있습니다.

ClawMoat의 멀티모달 스캐너는 C:filename 패턴은 물론 절대 경로(C:\, /)와 UNC 경로(\\server\share)도 포착합니다.

The Flywheel

실제 취약점 → 실제 패턴 → 실제 방어.
공개된 모든 CVE는 공격자에게 로드맵을 제공합니다; 우리는 같은 로드맵을 사용해 탐지를 구축합니다. ingest하는 CVE가 많을수록 ClawMoat은 강력해집니다.

New Scanner

새 스캐너 scanDependencyAttacks()가 이제 ClawMoat에 제공되며, 의존성이 없고 순수 정규식으로 구현되었습니다.

const { scanDependencyAttacks } = require('clawmoat');

const result = scanDependencyAttacks(userInput);
if (!result.clean) {
  console.log('Attack pattern detected:', result.findings);
}

ClawMoat on GitHub | clawmoat.com

0 조회
Back to Blog

관련 글

더 보기 »

파일 시스템이 디버깅하기 어려운 이유

동기 부여 나는 파일 시스템을 처음부터 구축하고 있다—필요해서가 아니라, 보이지 않는 것을 디버깅하는 것이 추측에 불과하기 때문이다. 파일 시스템을 이해하는 l...

블루 틱이 표시된 메시지, 그러나 도착하지 않음

소개 WhatsApp에서 메시지가 전달 및 읽음으로 표시되지만 AI 에이전트가 해당 메시지를 전혀 확인하지 못한다면, 이는 무음 메시지 손실 문제입니다. 이 기사에서는 이러한 문제에 대한 전문적인 해결책을 제시합니다.