@absolutejs/vulnerabilities

中文文档
0.15.2发布于 2026/10/23BSL-1.1TypeScriptES Module构建来源已验证近 30 天下载 1907

扫描机中性脆弱性正常化、政策大门、主机库存以及绝对JS应用程序的审计准备证据.

中文使用文档

@absolutejs/脆弱

用于绝对JS应用的可再利用的脆弱性管理原始. 软件包使扫描器输出正常化,并采用明确的严重程度阈值, 通过与部署兼容的目标收集Debian/Ubuntu主机库存,以及 (c) 制作适合于储存或遵守报告的证据物件.

版本 0.2.0 还定义了饲料适配器共享的犬科合同, 扫描仪适配器、持久性层、补救工人和主机应用。 资产, 部分、咨询意见、扫描仪、管理的调查结果、VEX决定、, 风险评估、补救计划和执行证据均载有 明确的合同版本.

它刻意保留发包版本和供应商安全 状态。 类似版本 1.24.0-2ubuntu7.5 绝不能降低到上游 1.24.0: Ubuntu 和其他分布式后端端口安全修正,不带 更改上游版本,丢弃 distro 修订版会产生虚假 阳性.

import {
  assertVulnerabilityPolicy,
  createVulnerabilityEvidence,
  summarizeGrypeReport,
} from "@absolutejs/vulnerabilities";

const counts = summarizeGrypeReport(await Bun.file("grype.json").json());
assertVulnerabilityPolicy(counts, {
  maximums: { critical: 0, high: 0 },
});

const evidence = createVulnerabilityEvidence({
  asset: { id: imageDigest, kind: "container" },
  scan: {
    ...counts,
    databaseBuiltAt: grypeDatabaseBuiltAt,
    scannedAt: new Date().toISOString(),
    scanner: "grype",
  },
});

主机收藏结构兼容 @absolutejs/deploy 目标 :

import { collectDebianHostInventory } from "@absolutejs/vulnerabilities/host";

const inventory = await collectDebianHostInventory(deployTarget);

扫描仪的执行、时间安排、持久性、补救批准和用户 界面仍然是应用程序关切。 这个包包拥有合同和 这些申请不应手卷.

补救生命周期使部署成功与安全分开 核查。 成功执行需要部署证据,并且 发现变成 fixed 只有在后来的一次清单观察证明是 缺席。 在等待核查时,对调查结果的补救仍然开放.

清单关联性具有生态系统意识,当版本时失效 方案无法比较. osv.ecosystem 保留供应商 释放上下文,例如 Ubuntu:24.04 组件 purl 仍为 a 标准 pkg:deb 标识符.

import { correlateVulnerabilityInventory } from "@absolutejs/vulnerabilities";

const result = correlateVulnerabilityInventory({
  advisories,
  asset,
  components,
  existingFindings,
  observedAt: new Date().toISOString(),
});

await findingStore.saveMany(result.upserts);

管理下的查找身份是确定性的和扫描器独立的:

import { createStableFindingId } from "@absolutejs/vulnerabilities";

const findingId = createStableFindingId({
  tenantId: "tenant-1",
  assetId: "production-web-1",
  componentIdentity: "pkg:deb/ubuntu/[email protected]",
  vulnerabilityIds: ["CVE-2026-0001", "USN-9999-1"],
});

异名顺序,重复的别名,和标识大小写不会改变结果. 改变租户、资产、组成部分身份或脆弱性身份确实如此.

版本智能

版本比较具有生态系统意识和可解释性。 德比安/乌本图订正案, 时代和后港后缀被保留,而不是缩小为上游 各个版本。 SemVer, Go 模块, Python PEP 440, 和 Nuget 版本使用其本地版本 命令规则.

import {
  comparePackageVersions,
  evaluateVersionConstraints,
} from "@absolutejs/vulnerabilities";

comparePackageVersions({
  ecosystem: "ubuntu",
  left: "1.24.0-2ubuntu7.4",
  right: "1.24.0-2ubuntu7.5",
});

evaluateVersionConstraints({
  ecosystem: "ubuntu",
  installedVersion: "1.24.0-2ubuntu7.4",
  constraints: [
    { operator: "gte", version: "1.24.0" },
    { operator: "lt", version: "1.24.0-2ubuntu7.5" },
  ],
});

RPM,APK,和马文比较需要经过验证的适配器. 没有一个人 软件包返回 unknown;它从未取代词典学或通用SemVer 对于一个生态系统,它无法进行合理的比较.

咨询服务

Feed适配器共享光标,快照,缓存和故障隔离合同. 应用程序可以在自己的存储中坚持快照,同时保留提供者 获取与政策和补救逻辑分开.

警报操作可以使用 VulnerabilityAlertConfiguration 保持评价 苏丹解放军、针对严重程度的升级时间、开放/升级/解决 在一份经审定的合同中通知路线。 使用 validateVulnerabilityAlertConfiguration 在持久性边界和 resolveVulnerabilityAlertAudiences 当排队送货。 所有者路线跌倒 当警报没有自有资产时,返回管理员.

import { createMemoryFeedStore, syncFeed } from "@absolutejs/vulnerabilities";

const result = await syncFeed({
  adapter,
  maxStaleMs: 24 * 60 * 60 * 1_000,
  store: createMemoryFeedStore(),
});

if (result.status === "stale") {
  // Cached intelligence remains available, with the provider error attached.
}

适配器可以替换完整的提供者快照或递增合并 记录和删除. not_modified 答复需要现有缓存 快照, 提供者失败 永远不会抹去上次成功的快照 .

生产仓库仍可通过 FeedSnapshotStore, (中文(简体) ), FeedSyncRunStore,以及 ManagedFindingStore 合同。 录音刷新 持续状态、错误、修订、时间戳和记录点数 连接给数据库驱动器的种子 .

部署许可可以保留一个签名的OSV和CISA KEV快照,而不是 在激活路径上呼叫上游提供者. 精确软件包/版本 覆盖是所签署有效载荷的一部分,包括未返回的查询 忠告,所以缺少的情报不能被解释为干净的结果.

import {
  admissionIntelligenceCoverageKey,
  signAdmissionIntelligenceSnapshot,
} from "@absolutejs/vulnerabilities/intelligence-snapshot";

const attestation = signAdmissionIntelligenceSnapshot({
  coverage: components.map(({ identity }) =>
    admissionIntelligenceCoverageKey(identity),
  ),
  issuedAt: new Date().toISOString(),
  kev: kevSnapshot,
  keyId: "vulnerability-intelligence-v1",
  maxAgeMs: 24 * 60 * 60 * 1_000,
  osv: osvSnapshot,
  secret: signingSecret,
});

客户端证据可以被装入捆绑运行时间的 Ed25519 捆绑 SBOM,签名 情报快照, 录取决定, 和准确的VEX 使用的例外。 核查只需要公用钥匙。 交叉签名的密钥 当操作员旋转签名身份时,过渡会维护信任.

import {
  createEvidenceSigningIdentity,
  evidenceVerificationKeyFrom,
  signVulnerabilityEvidenceBundle,
  verifyVulnerabilityEvidenceBundle,
} from "@absolutejs/vulnerabilities/evidence-bundle";

const identity = createEvidenceSigningIdentity();
const bundle = signVulnerabilityEvidenceBundle({ identity, payload });
const verification = verifyVulnerabilityEvidenceBundle({
  bundle,
  trustedKeys: [evidenceVerificationKeyFrom(identity)],
});

私人钥匙仍然是应用程序的秘密。 已发布的信任主锚包含 只有关键ID,指纹,创建时间,算法,和DER公钥.

密钥的创建、旋转和撤销也可记录在签名中, 散列透明日志。 一个客户端给起源钥匙指纹钉上针头 最新的日志头,或两者都通过一个可信任的频段外通道。 这个探测器 重写或切换历史并拒绝由被取消的密钥签名的捆绑 .

absolute-vulnerability-evidence verify \
  --bundle vulnerability-evidence.json \
  --registry vulnerability-evidence-registry.json \
  --trusted-fingerprint <genesis-sha256-fingerprint> \
  --trusted-head <sha256-log-head> \
  --trusted-witness-fingerprint <witness-sha256-fingerprint>

命令输出 0 只为可靠证据, 1 用于加密 有效但不信任或被撤销的证据,以及 2 用于无效输入或使用. 如果登记处包括独立证人的收据,可选的 证人指纹要求收据符合准确的日志头和尺寸. 使用多个独立证人的应用程序 verifyEvidenceWitnessQuorum; 从一个身份复制的收据从不计数 不止一次达到法定法定人数.

版本与发布记录

@absolutejs/vulnerabilities 共发布 31 个版本,首次发布于 2026/07/19;过去 12 个月发布了 31 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.15.2latest2026/10/2316 天前
0.15.12026/10/081 个月前
0.15.02026/08/172 个月前
0.14.12026/07/253 个月前
0.14.02026/07/203 个月前
0.13.02026/07/203 个月前

关于 @absolutejs/vulnerabilities 的常见问题

@absolutejs/vulnerabilities 是什么?

扫描机中性脆弱性正常化、政策大门、主机库存以及绝对JS应用程序的审计准备证据.

如何安装 @absolutejs/vulnerabilities?

在项目目录运行 npm install @absolutejs/vulnerabilities,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 absolute-vulnerability-evidence,可以用 npx absolute-vulnerability-evidence 直接运行。

@absolutejs/vulnerabilities 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@absolutejs/vulnerabilities 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@absolutejs/vulnerabilities 可以商用吗?

@absolutejs/vulnerabilities 使用 BSL-1.1 许可。声明的许可为 BSL-1.1,请阅读许可原文确认使用条件。以上为概括,不构成法律意见,请以许可原文为准。

@absolutejs/vulnerabilities 的下载量有多少?

根据 npm 官方下载统计,@absolutejs/vulnerabilities 在 2026/10/05 – 2026/11/03 这 30 天内被下载 1,907 次,日均约 64 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@absolutejs/vulnerabilities 还在维护吗?

最新版本 0.15.2 发布于 2026/10/23(16 天前);至今共发布 31 个版本,其中过去 12 个月发布了 31 个;首次发布于 2026/07/19。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。