NodeSecure 취약점 발표
😍 Logo and cover by our beloved ❤️
안녕하세요 👋,
NodeSecure 도구 중 하나의 리브랜딩에 대한 작은 기사로 돌아가십시오: Vulnera(이전에는 vuln, vuln 시대가 시작되었습니다!).
백엔드 재설계와 함께 탄생한지 1년이 채 되지 않은 이 멋진 프로젝트에 대해 저에게도 글을 쓸 수 있는 기회 ⌚. 기억이 나지 않는다면 다음과 같이 기사를 작성했습니다.
새로운 Node-Secure 백엔드 발표
NodeSecure용 Thomas.G ・ 21년 9월 11일 ・ 4분 읽기
기다리지 말고 저와 함께 🌊 이 도구 💃를 알아보십시오.
Vulnera는 무엇입니까? 👀
Vulnera는 프로그래밍 방식으로 여러 소스 또는 전략에서 Node.js 프로젝트 취약성을 가져올 수 있는 패키지입니다.
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에 필요합니다.우리가 작업하고 있는 주요 주제와 아이디어는 다음과 같습니다.
크레딧 🙇
이 프로젝트는 그것을 개선하기 위해 많은 에너지를 투자한 우리의 핵심 협력자에게 많은 빚을 지고 있습니다 💪.
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
노드시큐어 / 취약점
하나 이상의 전략(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
저를 읽어주셔서 감사합니다 🙏 다른 기사에서 곧 만나요!
Reference
이 문제에 관하여(NodeSecure 취약점 발표), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nodesecure/announcing-nodesecure-vulnera-22a6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)