# @absolutejs/vulnerabilities 中文文档

规范地址：https://npmcn.com/package/%40absolutejs/vulnerabilities/

版本：0\.15\.2
npm 元数据更新时间：2026-10-22T23:58:41.939Z
中文译文更新时间：2026-11-08T03:33:05.082Z
软件包许可：BSL-1\.1

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40absolutejs/vulnerabilities
原文对照：https://npmcn.com/package/%40absolutejs/vulnerabilities/?lang=original
项目主页：https://github.com/absolutejs/vulnerabilities
源码仓库：https://github.com/absolutejs/vulnerabilities

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：368 kB，36 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：5 个
- 首次发布：2026-07-18T18:16:55.233Z
- 最新版本发布：2026-10-22T23:58:41.527Z
- 近 30 天下载量：1907（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：31（近 12 个月 31 个）

## 中文简介

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

## 安装

```sh
npm install @absolutejs/vulnerabilities
```

也可以使用：`pnpm add @absolutejs/vulnerabilities`、`yarn add @absolutejs/vulnerabilities`、`bun add @absolutejs/vulnerabilities`

## README

# @absolutejs/脆弱

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

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

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

```ts
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` 目标 :

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

const inventory = await collectDebianHostInventory(deployTarget);
```

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

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

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

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

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

await findingStore.saveMany(result.upserts);
```

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

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

const findingId = createStableFindingId({
  tenantId: "tenant-1",
  assetId: "production-web-1",
  componentIdentity: "pkg:deb/ubuntu/nginx@1.24.0-2ubuntu7.5",
  vulnerabilityIds: ["CVE-2026-0001", "USN-9999-1"],
});
```

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

## 版本智能

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

```ts
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` 当排队送货。 所有者路线跌倒 当警报没有自有资产时,返回管理员.

```ts
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快照,而不是 在激活路径上呼叫上游提供者. 精确软件包/版本 覆盖是所签署有效载荷的一部分,包括未返回的查询 忠告,所以缺少的情报不能被解释为干净的结果.

```ts
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 使用的例外。 核查只需要公用钥匙。 交叉签名的密钥 当操作员旋转签名身份时,过渡会维护信任.

```ts
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公钥.

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

```bash
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 是什么？

扫描机中性脆弱性正常化、政策大门、主机库存以及绝对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 和提交记录判断。

