OWASP, CVE Lite CLI 도입으로 의존성 스캔 강화
Source: DevOps.com
번역할 텍스트가 제공되지 않았습니다. 번역을 원하는 본문을 알려주시면 한국어로 번역해 드리겠습니다.
Source: …
Dependency scanning with CVE Lite CLI
새로 개발된 소프트웨어에서 종속성 취약점을 확인하는 작업은 보통 빌드 과정의 마지막 단계에서 이루어집니다. 그 시점에 문제를 해결하는 것은 까다로울 수 있습니다.
이제 JavaScript와 TypeScript 개발자는 CVE Lite CLI 라는 오픈소스 프로젝트를 사용해, 자신이(또는 에이전트가) 소스 코드를 작성하면서 직접 취약점을 확인할 수 있습니다.
지난 달, Open Worldwide Application Security Project (OWASP) 가 CVE Lite CLI 를 인큐베이팅 프로젝트로 채택했습니다. Sonu Kapoor 가 개발 주기 초기에 취약점을 확인하기 위해 CVE Lite CLI 를 특별히 만들었습니다.
Kapoor 의 접근 방식은 개발자가 자신의 코드 보안에 더 많은 책임을 지는 “shift‑left” 형태로 볼 수 있습니다. 이는 개발 주기 말에 별도의 테스트로 실행되는 전형적인 프로덕션 워크플로 스캔과는 다릅니다.
설치가 완료되면, 이 앱은 lockfile(종속성 트리 구성 파일)을 스캔하고 Open Source Vulnerabilities (OSV) 데이터베이스를 참조해 설치된 종속성에 취약점이 있는지 확인합니다. 취약점이 발견되면, 영향을 받는 패키지를 npm, pnpm, Yarn, Bun 등 현재 지원되는 패키지 매니저를 사용해 업데이트할 수 있는 복사‑붙여넣기용 명령어 세트를 생성합니다.
CVE Lite CLI 는 로컬 데이터베이스에 모든 CVE 를 캐시해 오프라인에서도 작동할 수 있습니다.
Parent‑Aware Guidance
다른 인터페이스 기반 취약점 해결 도구에는 다음이 포함됩니다:
- GitHub의 Dependabot
- npm의 npm audit
- Google의 OSV‑Scanner
- Snyk CLI
- Socket CLI
CVE Lite는 전이적 의존성에 대해 스마트하게 동작하여 문제를 일으키는 패키지의 정확한 최상위 레벨을 찾아냅니다.
“전이적 부모 업데이트 가이드는 CVE Lite CLI의 핵심 차별화 요소 중 하나입니다,” 라고 문서에서 주장합니다. “취약한 전이적 패키지를 직접 설치하도록 사용자에게 지시하는 대신, CLI는 의존성 경로를 제어하는 부모 패키지를 가리킵니다.”
직접 의존성은 교체하기 쉽습니다. 전이적 의존성—다른 의존성 안에 포함된 의존성—은 해결하기가 더 까다롭습니다.
CVE Lite는 패키지가 전이적인지 여부를 파악합니다. 많은 패키지 관리자는 포함된 패키지를 찾지 못하거나 부모 패키지가 문제의 의존성 업데이트를 방해할 경우, 단순히 새 버전의 포함된 의존성을 루트 디렉터리에 배치하는데, 이는 사실상 쓸모가 없습니다.
CVE Lite는 다른 접근 방식을 취합니다: 취약한 패키지 자체를 업데이트하는 대신, 부모 패키지를 업데이트합니다.
CVE Lite CLI는 모든 패키지가 node_modules 폴더에 존재하는 Node.js hoist 모델에서도 작동할 수 있어, 재귀적 중첩 문제를 줄여줍니다(하지만 대부분의 스캐너에게는 의존성 트리를 가릴 수 있습니다).
Limitations
이 개발자 중심 접근 방식에는 전체 보안 방어 전략에서 고려해야 할 몇 가지 즉각적인 제한 사항이 있습니다:
- CVE Lite는 런타임 보호를 제공하지 않으므로, 조직은 해당 기능을 위한 별도 도구가 필요합니다.
- 단일 CVE 데이터베이스에 의존하므로, 그곳에 보고되지 않은 취약점을 놓칠 수 있습니다.
- 오프라인 캐시는 소프트웨어가 온라인 상태일 때 정기적으로 새로 고쳐야 합니다.
벤더링 문제
숨겨진 의존성은 오픈‑소스 커뮤니티에 여전히 큰 골칫거리이며, 특히 패치되지 않은 취약점이 공급망 공격의 주요 원인입니다 – 이번 달 초에 있었던 **Mini Shai‑Hulud 공격**을 보세요. 이 공격으로 170개의 npm 및 PyPI 패키지가 오염되었습니다.
사용자는 자체 의존성 세트를 포함한 앱을 설치할 수 있습니다. 앱 자체가 업데이트되지 않는 한(아예 업데이트되지 않을 수도 있음), 알려진 취약점을 가진 라이브러리나 기타 코드가 포함될 수 있습니다. 이는 때때로 **벤더링**이라고 불리며, 소프트웨어 제공자가 타사 소프트웨어를 통해 숨겨진 취약점을 도입하는 경우를 말합니다.
인기 있는 Ghostty 터미널의 제작자 Mitchell Hashimoto는 사용 중인 모든 의존성을 포크하고, 필요한 부분만 남겨 다듬은 뒤 코드에 삽입하고 절대 업데이트하지 말 것을 권장합니다—적어도 무언가가 깨질 때까지는 말이죠.
“업데이트가 잠재 버그보다 훨씬 위험하다고 항상 말해왔습니다(잠재 버그는 추적하고 CVE를 모니터링할 수 있습니다).” 그는 X에 이렇게 적었습니다. “의존성을 업데이트한다면, 전체 전이 의존성 집합에 포함된 모든 커밋을 분석하는 책임은 여러분에게 있습니다.”
