NodeSecure 취약점 발표

😍 Logo and cover by our beloved ❤️



안녕하세요 👋,

NodeSecure 도구 중 하나의 리브랜딩에 대한 작은 기사로 돌아가십시오: Vulnera(이전에는 vuln, vuln 시대가 시작되었습니다!).

백엔드 재설계와 함께 탄생한지 1년이 채 되지 않은 이 멋진 프로젝트에 대해 저에게도 글을 쓸 수 있는 기회 ⌚. 기억이 나지 않는다면 다음과 같이 기사를 작성했습니다.




기다리지 말고 저와 함께 🌊 이 도구 💃를 알아보십시오.

Vulnera는 무엇입니까? 👀



Vulnera는 프로그래밍 방식으로 여러 소스 또는 전략에서 Node.js 프로젝트 취약성을 가져올 수 있는 패키지입니다.
  • NPM 감사 ( Github Advisory Database )
  • Sonatype OSS Index
  • deprecated Node.js Security WG Database
  • 스닉크

  • 📢 Feel free to push new sources (we have a guide on how to add/contribute one).



    이 코드는 원래 Scanner 내의 취약성 관리를 위해 설계되었습니다. 그러나 API는 본격적인 프로젝트를 목표로 진화하고 있습니다.

    import * as vulnera from "@nodesecure/vulnera";
    
    const def = await vulnera.setStrategy(
      vulnera.strategies.NPM_AUDIT
    );
    
    const vulnerabilities = await def.getVulnerabilities(process.cwd(), {
      useStandardFormat: true
    });
    console.log(vulnerabilities);
    

    표준 취약점 형식 👯



    서로 다른 소스를 조화시키기 위해 표준 형식을 만들었습니다.

    export interface StandardVulnerability {
      /** Unique identifier for the vulnerability **/
      id?: string;
      /** Vulnerability origin, either Snyk, NPM or NodeSWG **/
      origin: Origin;
      /** Package associated with the vulnerability **/
      package: string;
      /** Vulnerability title **/
      title: string;
      /** Vulnerability description **/
      description?: string;
      /** Vulnerability link references on origin's website **/
      url?: string;
      /** Vulnerability severity levels given the strategy **/
      severity?: Severity;
      /** Common Vulnerabilities and Exposures dictionary */
      cves?: string[];
      /** Common Vulnerability Scoring System (CVSS) **/
      cvssVector?: string;
      /** CVSS Score **/
      cvssScore?: number;
      /** The range of vulnerable versions */
      vulnerableRanges: string[];
      /** The set of versions that are vulnerable **/
      vulnerableVersions: string[];
      /** The set of versions that are patched **/
      patchedVersions?: string;
      /** Overview of available patches **/
      patches?: Patch[];
    }
    

    물론 각 소스의 원래 형식을 항상 사용할 수 있습니다 😊. 우리는 각각에 대해 TypeScript 인터페이스를 구현하고 공개했습니다.


    스캐너에서의 사용법 🔬



    스캐너에는 종속성 트리 🎄를 통과하기 때문에 필요한 모든 정보가 있습니다. the end of the process에서 hydratePayloadDependencies 전략 메서드 내에서 사양별로 사양을 반복하여 모든 취약성을 복구합니다.

    const {
      hydratePayloadDependencies,
      strategy
    } = await vulnera.setStrategy(
      userStrategyName // SNYK for example
    );
    await hydratePayloadDependencies(dependencies, {
      useStandardFormat: true,
      path: location
    });
    
    payload.vulnerabilityStrategy = strategy;
    

    다음 다이어그램은 스캐너와 Vulnera 간의 전반적인 동작과 상호 작용을 설명합니다.


    페이로드에 대해 자세히 알아보려면 TypeScript 인터페이스here를 확인하십시오.

    무엇 향후 계획 ? 🚀



    일부 소스는 다른 소스보다 악용하기가 더 어렵습니다(NPM의 경우 삶을 단순화하는 Arborist 사용).

    const { vulnerabilities } = (await arborist.audit()).toJSON();
    

    그러나 Sonatype 😨과 같은 소스를 활용하려면 메커니즘을 생각하고 만들어야 합니다. 이것은 getVulnerabilities() 와 같은 API에 필요합니다.

    우리가 작업하고 있는 주요 주제와 아이디어는 다음과 같습니다.
  • 프라이빗 데이터베이스를 생성하여 소스 간의 벤치마킹을 수행합니다(#29 참조).
  • 여러 소스를 하나로 병합합니다(#25 참조).
  • 지정된 원격 패키지의 취약점을 가져옵니다(verdaccio과 같은 개인 레지스트리 지원). 현재 우리는 로컬 매니페스트 또는 스캐너의 페이로드 분석만 지원합니다.

  • 크레딧 🙇



    이 프로젝트는 그것을 개선하기 위해 많은 에너지를 투자한 우리의 핵심 협력자에게 많은 빚을 지고 있습니다 💪.

    Fun fact: its first contribution 🐤 on NodeSecure was also on the old version of the code Scanner that managed vulnerabilities.



    하지만 개인의 기여는 잊지 않습니다 👏

  • 추가용the getVulnerabilities() API

  • 추가용Snyk strategy
  • 로고 작업을 위한 Medhi




  • 노드시큐어 / 취약점


    하나 이상의 전략(NPM Audit, Sonatype, Snyk, Node.js DB)을 사용하여 프로그래밍 방식으로 보안 취약점을 가져옵니다.













    vuln 시대가 시작되었습니다! 하나 이상의 전략을 사용하여 프로그래밍 방식으로 보안 취약점을 가져옵니다. 원래는 종속성을 실행 및 분석Scanner하도록 설계되었지만 이제는 npm 매니페스트와도 독립적으로 실행됩니다.

    요구 사항



  • Node.js v16 이상

  • 시작하기


    이 패키지는 노드 패키지 저장소에서 사용할 수 있으며 npm 또는 yarn 으로 쉽게 설치할 수 있습니다.
    $ npm i @nodesecure/vulnera
    # or
    $ yarn add @nodesecure/vulnera

    사용 예


    import * as vulnera from "@nodesecure/vulnera";
    
    // Default strategy is currently "none".
    await vulnera.setStrategy(vulnera.strategies.NPM_AUDIT);
    
    const definition = await vulnera.getStrategy();
    console.log(definition.strategy);
    
    const vulnerabilities = await definition.getVulnerabilities(process.cwd(), {
      useStandardFormat: true
    });
    console.log(vulnerabilities);

    사용 가능한 전략


    기본 전략은 NONE입니다. 이는 다음을 의미합니다.

    View on GitHub


    저를 읽어주셔서 감사합니다 🙏 다른 기사에서 곧 만나요!

    좋은 웹페이지 즐겨찾기