mcpField
S
sap-dependency-security

sap-dependency-security

github.com/secondsky安全480576 次安装3 周前更新
代码仓库

关于 sap-dependency-security

此 Skill 为主流包管理器提供依赖安全和升级规划指导,并针对 SAP 项目、工具及 MCP 服务提供专门建议。内容涵盖供应链防护、兼容性、分阶段升级和测试。

主要功能

  1. 01包管理器安全指导
  2. 02冷却期和脚本策略
  3. 03锁文件验证与冻结安装
  4. 04SAP MCP 固定版本指导
  5. 05增量升级规划

适用场景

  1. 01强化软件包安装流程
  2. 02审查 SAP MCP 版本和来源
  3. 03规划经过测试的依赖升级

MCP 相关

它将 MCP 服务视为可执行依赖,指导使用精确的软件包版本或源代码提交固定版本、审查连接租户的工具,并验证 MCP 配置变更。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/secondsky/sap-skills --skill sap-dependency-security

安装后在 Claude Code 中输入/sap-dependency-security确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
agents/
openai.yaml
references/
compatibility-matrix.md
cooldown-config-guide.md
package-manager-security.md
sap-dependency-risk-matrix.md
sap-mcp-inventory.json
sap-mcp-security.md
secrets-and-containers.md
socket-cli-guide.md
staged-upgrades.md
supply-chain-security.md
testing-strategy.md
scripts/
generate-dependency-upgrades.sh
templates/
abap-gcts-review.tmpl
btp-cf-mbt-review.tmpl
bunfig-security.tmpl
container-trivy.tmpl
dependabot-security.tmpl
devcontainer-security.tmpl
gradle-security.tmpl
maven-security.tmpl
npmrc-security.tmpl
pnpm-workspace-security.tmpl
python-security.tmpl
renovate-security.tmpl
sap-mcp-config.tmpl
socket-fix-ci.tmpl
socket-scan-ci.tmpl
yarnrc-security.tmpl

详细介绍

SAP 依赖安全

相关技能

  • sap-hana-cli:用于依赖感知型数据库工具工作流和升级指导
  • sap-cap-capire:用于 CAP 依赖安全的运行时和服务配置指导
  • sap-fiori-tools:当工具涉及前端包时,用于安全的 UI5/Fiori 依赖策略
  • sapui5:用于 SAPUI5/OpenUI5 前端依赖和 MCP 工具审查
  • sap-datasphere:用于连接租户的 Datasphere MCP 和 CLI 依赖审查
  • sap-sac-scripting:用于固定源码版本的 SAC MCP 设置和本地安装记录

通过供应链保护、兼容性分析、分阶段推出和全面测试,管理 SAP 依赖安全与升级,涵盖所有主要包管理器。

何时使用此技能

  • 升级主要框架或库的版本
  • 配置供应链攻击防护(冷却期、阻止脚本、加固锁文件)
  • 设置安全的包管理器配置
  • 解决依赖冲突或对等依赖问题
  • 规划渐进式升级路径并进行测试
  • 使用 Renovate、Dependabot 或 Snyk 自动执行依赖更新
  • 审计依赖项是否存在漏洞
  • 设置 CI/CD 依赖安全工作流
  • 在 .mcp.json 中固定或审查 SAP MCP 服务
  • 审查 SAP CAP、UI5/Fiori、HANA、Datasphere、SAC、SAP Cloud SDK、BTP/CF/mbt 或 ABAP/gCTS 依赖工作流

常见问题

问题建议的应对措施
.mcp.json 中的 MCP 包使用浮动版本或 @latest替换为精确版本或经批准的源码提交,并运行 npm run validate:mcp-security。
锁文件意外发生更改检查包管理器配置,阻止生命周期脚本,并仅在明确依赖变更意图后重新生成锁文件。
依赖项版本过新,不符合冷却期策略暂缓升级,除非有记录在案的安全例外情况,足以证明应立即采用该版本。
连接租户的工具更改了源码使用凭据前,验证源码 URL、提交和构建步骤。

两种运行模式

交互模式 — 通过设置问题生成量身定制的配置。适用于全新设置。

默认模式 — 立即应用建议的默认值:7 天冷却期、阻止所有脚本、冻结锁文件、锁文件检查,以及启用冷却期的 Dependabot。可选择自定义。

SAP 开发模式 — 采用更严格的 SAP 安全策略:14 天冷却期、为 MCP 服务和可执行工具指定精确版本、禁止使用浮动的 @latest、为本地 MCP 服务固定源码提交,并手动审查连接租户的工具。

SAP 开发模式

当依赖项工作涉及 SAP 项目、SAP BTP 部署工具、SAP SDK 或此仓库提供的任何 MCP 服务时,请使用 SAP 开发模式。

核心规则:

  1. SAP 企业项目默认采用 14 天冷却期。请在 SAP MCP 清单或项目审查备注中记录明确的例外情况。
  2. 将 MCP 服务视为可执行依赖项。在 .mcp.json 中使用精确的 npm 版本,例如 @ui5/[email protected],切勿使用 @latest 或不带版本号的包名。
  3. 按提交固定本地源码 MCP。SAC 使用受信任的 secondsky/sap_analytics_cloud_mcp 分支,并且必须记录提交 2020235505d98111c2889598ab2217c1619b6943。
  4. 将运行时授权分开处理。此技能涵盖包、源码和可执行文件的信任;租户角色设计和业务授权请使用相关 SAP 技能。
  5. 在任何 .mcp.json 或 SAP MCP 清单变更后,通过 npm run validate:mcp-security 验证 MCP 漂移。

加载 references/sap-dependency-risk-matrix.md 以了解 SAP 技术栈覆盖范围,并加载 references/sap-mcp-security.md 以了解 MCP 更新工作流和 SAC 源码安装策略。使用 references/sap-mcp-inventory.json 作为机器可读的已批准 MCP 包/源码列表。

交互式设置流程

当用户需要量身定制的配置时,请引导其完成以下决策。如果使用默认模式,请完全跳过本节。

第 1 层:必选决策

生成任何配置前,始终先询问以下 3 个问题:

1. 包管理器

“此项目使用哪个包管理器?”

答案生成内容
npm.npmrc
Bunbunfig.toml
pnpmpnpm-workspace.yaml
Yarn.yarnrc.yml
Denodeno.json 配置

2. 冷却期

“新发布的包应经过多少天后才能安装?这可以防止供应链攻击:恶意包可能在几天内被发现并撤下。”

选项天数适用场景
激进3可发现大多数拼写仿冒包
推荐7适用于大多数项目的良好平衡
保守14关键系统/生产系统
极度谨慎21与 Snyk 内置默认值一致
自定义N由用户指定

3. 安装后脚本策略

“应如何处理生命周期脚本(postinstall、preinstall)?这些是供应链攻击的首要攻击途径。”

选项行为
全部阻止(推荐)--ignore-scripts + allow-git=none
允许列表默认阻止,允许特定的可信包
仅审核发出警告,但不阻止
第 2 层:安全工具(作为一组提供)

“你想配置以下哪些安全功能?请选择所有适用项。”

4. CI/CD 自动化工具

答案生成内容
Dependabot含冷却期的 .github/dependabot.yml
Renovate含 minimumReleaseAge 的 renovate.json
Snyk无需配置(内置 21 天冷却期)
无跳过

5. 自动合并策略

选项行为
无所有更新都需要人工审核
仅次要版本和补丁版本自动合并安全更新,主要版本需审核
全部,但需批准团队批准后自动合并

6. 更新计划

选项配置值
每日"daily"
每周(默认)"weekly"
每两周"biweekly"
每月"monthly"

7. 安装时安全工具

“应使用哪些安全工具来保护依赖项安装?”

选项免费?功能
socket npm wrapper是(测试版)包装 npm/npx,在安装前阻止恶意包。运行 socket wrapper on 即可在全系统启用。
npq是安装前审核工具(检查 CVE、拼写仿冒、包年龄和来源证明)
Socket Firewall (sfw)否实时深度分析,阻止恶意包
socket npm + npq是组合使用这两款免费工具
无—跳过

加载 references/socket-cli-guide.md,查看完整的 Socket CLI 设置说明,包括身份验证以及免费功能与需身份验证功能的区别。

8. 锁文件验证

选项行为
是(推荐)添加 lockfile-lint + CI 脚本
否跳过
第 3 层:高级选项(仅在用户选择启用时)

“你想配置任何高级选项吗?”

9. 开发容器 — 生成加固的 .devcontainer/devcontainer.json(是/否)

10. 密钥管理器 — 1Password CLI / Infisical / 无

11. pnpm 信任策略 — 启用 trustPolicy: no-downgrade(仅限 pnpm 10.21+,是/否)

12. 冷却期例外 — 绕过冷却期的包名称(例如 @types/react、typescript、esbuild)

安全优先的升级原则

  1. 安装前设置冷却期 — 普通项目等待 7 天,SAP 企业级工作流/MCP 工作流等待 14 天,让社区有时间审查新版本的包
  2. 阻止安装后脚本 — 防止在 npm install 期间执行任意代码
  3. 在 CI 中冻结锁文件 — 使用确定性安装(npm ci、--frozen-lockfile)
  4. 验证锁文件完整性 — 使用 lockfile-lint 检测注入
  5. 审查后再信任 — 使用 npq 或 Socket CLI 在安装前检查包
  6. 逐步升级 — 每次只升级一个主版本,并在每次升级之间进行测试
  7. 切勿盲目升级 — 未经审查,避免使用 npm update 或 npm-check-updates -u
  8. 扫描前后都要进行 — 使用 socket scan 检测 CVE 以外的供应链问题
  9. 固定 SAP MCP 可执行文件版本 — 在允许 MCP 服务访问 SAP 项目或租户之前,使用精确的 npm 版本或源代码提交固定版本

冷却期:防止供应链攻击

新发布的包可能包含恶意代码,并在数小时内被发现。配置冷却期,延迟安装。

快速设置

npm(.npmrc):

min-release-age=7

Bun(bunfig.toml):

[install]
minimumReleaseAge = 604800  # 7 days in seconds
minimumReleaseAgeExcludes = ["@types/bun", "typescript"]

pnpm(pnpm-workspace.yaml):

minimumReleaseAge: 10080  # 7 days in minutes
minimumReleaseAgeExclude:
  - '@types/react'
  - typescript

Yarn(.yarnrc.yml):

npmMinimalAgeGate: "7d"
npmPreapprovedPackages:
  - "@types/react"
  - "typescript"

加载 references/cooldown-config-guide.md,了解各包管理器的详细配置、CI 工具集成和排除模式。

使用 templates/<pm>-security.tmpl 获取可直接复制粘贴的配置文件。

禁用安装后脚本

安装后脚本是最常见的供应链攻击途径(Shai-Hulud、Nx、event-stream 事件)。

快速设置

npm:

npm config set ignore-scripts true
npm config set allow-git none

Bun:默认禁用。在 package.json 中允许特定包:

{ "trustedDependencies": ["esbuild", "sharp"] }

pnpm(10.0+):默认禁用。在 pnpm-workspace.yaml 中允许特定包:

allowBuilds:
  esbuild: true
strictDepBuilds: true  # Hard error on unreviewed scripts

加载 references/package-manager-security.md,了解各包管理器的完整加固措施,包括 pnpm trustPolicy、blockExoticSubdeps 和 @lavamoat/allow-scripts。

确定性和冻结安装

在 CI 中始终使用冻结安装命令,以确保构建可复现:

包管理器命令作用
npmnpm ci删除 node_modules,安装锁文件中的精确版本
Bunbun install --frozen-lockfile如果锁文件不同步,则失败
pnpmpnpm install --frozen-lockfile如果锁文件不同步,则失败
Yarnyarn install --immutable --immutable-cache验证锁文件和缓存
Denodeno install --frozen冻结安装

将所有锁文件提交到版本控制:package-lock.json、bun.lock、pnpm-lock.yaml、yarn.lock、deno.lock。

锁文件验证

安装并配置 lockfile-lint,以检测锁文件注入攻击:

npm install --save-dev lockfile-lint
{
  "scripts": {
    "lint:lockfile": "lockfile-lint --path package-lock.json --type npm --allowed-hosts npm --validate-https",
    "preinstall": "npm run lint:lockfile"
  }
}

注意:lockfile-lint 目前不支持 Bun 的 bun.lock / bun.lockb 格式。

安装前安全审计

npq — 安装前审计工具
npm install -g npq
npq install <package>          # Audit before installing
npq install <package> --dry-run # Audit without installing

# Shell alias for seamless use
alias npm='npq-hero'

# Use with other PMs
NPQ_PKG_MGR=pnpm npq install <package>
NPQ_PKG_MGR=bun npq install <package>
Socket Firewall(sfw)— 实时拦截工具
npm install -g sfw
sfw npm install <package>      # Blocks malicious packages
sfw pnpm add <package>
sfw yarn add <package>

加载 references/supply-chain-security.md,了解 npq 与 sfw 的完整对比,以及它们各自会验证的内容。

Socket CLI 集成

Socket CLI 提供超越基本漏洞扫描的主动供应链安全防护,涵盖恶意软件检测、仿冒包检测、抗议软件、安装脚本风险和许可证合规性。

主动升级工作流
1. PRE-UPGRADE:   socket scan create --report          → establish baseline
2. EVALUATE:      socket package score npm <pkg>@<ver>  → assess target package safety
3. SAFE INSTALL:  socket npm install <pkg>              → block malicious packages
4. POST-UPGRADE:  socket scan create --report          → verify no new alerts
5. DIFF:          socket scan diff <before> <after>     → see exactly what changed
6. FIX:           socket fix --minimum-release-age 7d   → auto-fix any new CVEs
7. OPTIMIZE:      socket optimize                       → apply security overrides
快速参考
# Install
npm install -g socket

# Authenticate (required for scans, fixes, package scores)
socket login

# Check a package before upgrading
socket package score npm <package>

# Scan your whole project
socket scan create --report

# Auto-fix CVEs (complements Dependabot/Renovate)
socket fix --minimum-release-age 7d

# Gate CI on security policy
socket ci

# Safe npm wrapper (free, no auth needed)
socket wrapper on

加载 references/socket-cli-guide.md,了解完整的命令参考、CI 工作流模板、警报类别,以及免费功能与身份验证功能对照表。

依赖项分析

# Audit for vulnerabilities
bun audit       # Bun
npm audit       # npm
yarn audit      # Yarn

# Socket: deep security assessment (CVEs + supply chain + license)
socket package score npm <package>
socket scan create --report

# Check for outdated packages
bun outdated
npm outdated

# Interactive upgrade (safe — review each)
bunx npm-check-updates --interactive

# Analyze dependency tree
npm ls <package-name>
yarn why <package-name>

分阶段升级策略

每次只升级一个依赖项,并在每次升级之间进行测试:

# 1. Create feature branch
git checkout -b upgrade/<package>-<version>

# 2. (Optional) Baseline scan — capture current state
socket scan create --report

# 3. Evaluate target package before upgrading
socket package score npm <package>@<version>

# 4. Upgrade single package
bun add <package>@<version>

# 5. Test immediately
bun test && bunx tsc --noEmit && bun run build

# 6. (Optional) Post-upgrade scan — verify no new alerts
socket scan create --report

# 7. Commit and continue
git add -A && git commit -m "chore: upgrade <package> to <version>"

加载 references/staged-upgrades.md,了解 codemod 自动化、自定义迁移脚本和对等依赖项的处理方式。

加载 references/compatibility-matrix.md,查看版本兼容性表(React 18/19、Next.js 13-15、TypeScript、Tailwind 3/4)。

使用冷却期实现自动更新

配置 CI/CD 工具遵守冷却期:

Dependabot(.github/dependabot.yml)
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    cooldown:
      default-days: 7
Renovate(renovate.json)
{
  "extends": ["config:base"],
  "minimumReleaseAge": "7 days",
  "packageRules": [
    {
      "matchUpdateTypes": ["minor", "patch"],
      "automerge": true
    },
    {
      "matchUpdateTypes": ["major"],
      "automerge": false,
      "minimumReleaseAge": "14 days"
    }
  ]
}
Snyk

Snyk 内置了针对升级 PR 的 21 天冷却期,无需配置。

Socket Fix(与 Dependabot/Renovate 配合使用)

Socket Fix 会通过智能升级规划自动解决 CVE。它与其他自动化工具并行运行,专注于 CVE 修复:

# Fix all fixable CVEs with cooldown alignment
socket fix --minimum-release-age 7d

# Conservative: no major version bumps
socket fix --minimum-release-age 7d --no-major-updates

# Target specific CVEs
socket fix --id GHSA-hhq3-ff78-jv3g --minimum-release-age 7d

# Preview without applying
socket fix --no-apply-fixes --minimum-release-age 7d

如需启用 CI 自动驾驶模式(自动创建并自动合并修复 PR),请使用 templates/socket-fix-ci.tmpl。

加载 references/socket-cli-guide.md,查看完整的 socket fix 选项,包括 --autopilot、--range-style 和 --pr-limit。

使用 templates/dependabot-security.tmpl 或 templates/renovate-security.tmpl 获取完整配置文件。

发布安全

面向软件包维护者:

# Enable 2FA
npm profile enable-2fa auth-and-writes

# Publish with provenance (cryptographic build proof)
npm publish --provenance

# Trusted publishing via OIDC (eliminates long-lived tokens)
# Configure on npmjs.com, then:
# In GitHub Actions: permissions: id-token: write

加载 references/supply-chain-security.md,查看完整的发布安全指南,包括 OIDC 设置和依赖树精简。

开发环境加固

将依赖项的执行与主机系统隔离:

  • 开发容器 — 限制恶意软件包造成的影响范围
  • 密钥管理 — 使用 1Password CLI 或 Infisical 代替明文 .env 文件
  • 依赖树精简 — 使用原生 JS 替换常见软件包

使用 templates/devcontainer-security.tmpl 获取经过加固的开发容器配置。

加载 references/secrets-and-containers.md,查看开发容器设置、密钥管理和依赖精简模式。

测试策略

每次升级后,都要在各个层级运行测试:

# 1. Static analysis (fastest)
bunx tsc --noEmit && bun run lint

# 2. Unit tests
bun test

# 3. Build check
bun run build

# 4. Integration / E2E (after major upgrades)
bun run test:e2e

加载 references/testing-strategy.md,查看完整的测试金字塔、CI 集成和包体积分析。

回滚计划

#!/bin/bash
git stash
git checkout -b upgrade/<package>

bun add <package>@latest

if bun test && bun run build; then
  git add package.json bun.lock
  git commit -m "chore: upgrade <package>"
else
  echo "Upgrade failed, rolling back"
  git checkout main
  git branch -D upgrade/<package>
  bun install
fi

升级检查清单

Pre-Upgrade:
- [ ] Review current dependency versions
- [ ] Read changelogs for breaking changes
- [ ] Create feature branch
- [ ] Tag current state (git tag pre-upgrade)
- [ ] Run full test suite (baseline)
- [ ] Verify cooldown period is configured
- [ ] For SAP MCP changes, verify exact package/source pins against `references/sap-mcp-inventory.json`

Security Pre-Checks:
- [ ] Post-install scripts are disabled
- [ ] Lockfile validation is active
- [ ] Install auditing tools configured (if applicable)
- [ ] CI uses frozen-lockfile install
- [ ] Run `socket scan create --report` for baseline (if Socket available)

During Upgrade:
- [ ] Upgrade one dependency at a time
- [ ] Check target package: `socket package score npm <pkg>` (if Socket available)
- [ ] Respect cooldown period (don't force latest)
- [ ] Update peer dependencies
- [ ] Fix TypeScript errors
- [ ] Run test suite after each upgrade
- [ ] Check bundle size impact

Post-Upgrade:
- [ ] Post-upgrade scan: `socket scan diff` to verify no new alerts (if Socket available)
- [ ] Consider `socket fix --minimum-release-age 7d` for any new CVEs
- [ ] Full regression testing
- [ ] Performance testing
- [ ] Update documentation
- [ ] Deploy to staging
- [ ] Monitor for errors
- [ ] Deploy to production

常见陷阱

  • 一次性升级所有依赖项(应逐步升级)
  • 未经审查就盲目运行 npm update 或 npm-check-updates -u
  • 未在每次单独升级后进行测试
  • 忽略 peer 依赖警告
  • 忘记更新或提交锁定文件
  • 未阅读变更日志中的重大变更说明
  • 跳过主要版本,而不是逐步升级
  • 没有回滚计划
  • 信任 npmjs.org 显示的源代码(它可能与实际的 tarball 不同)
  • 未禁用安装后脚本(这是最常见的攻击途径)
  • 未为新软件包版本配置冷却期
  • 发布使用 @latest、裸 npx 软件包或未固定的本地源代码路径的 SAP MCP 配置

何时加载参考文件

当用户需要了解 SKILL.md 快速参考之外的详细信息时,请加载以下参考文件:

加载此文件适用场景
references/cooldown-config-guide.md为特定 PM 配置冷却时间、集成 CI 工具或设置排除模式
references/package-manager-security.md查看完整的各 PM 加固指南,包括 pnpm 信任策略、blockExoticSubdeps 和跨 PM 速查表
references/supply-chain-security.md了解攻击途径、事件历史、npq 与 sfw 和 Socket CLI 的比较、发布者安全性(2FA、来源证明、OIDC)
references/secrets-and-containers.md设置开发容器,以及使用 1Password/Infisical 管理机密
references/socket-cli-guide.md使用 Socket CLI 扫描、修复、评估软件包、集成 CI、使用包装器模式和了解警报类别
references/compatibility-matrix.md检查 React、Next.js、TypeScript、Tailwind 升级的版本兼容性
references/staged-upgrades.mdCodemod 自动化、自定义迁移脚本、对等依赖项处理、工作区升级
references/testing-strategy.md完整的测试金字塔、CI 集成、包体分析、性能测试
references/sap-dependency-risk-matrix.md跨 Node、Java、Python、容器、BTP/CF/mbt、ABAP/gCTS 和 MCP 的 SAP 技术栈专属依赖项审查
references/sap-mcp-security.mdSAP MCP 精确锁定策略、SAC 源码安装策略和 MCP 更新工作流
references/sap-mcp-inventory.json机器可读的已批准 SAP MCP 软件包/源码固定版本,供 npm run validate:mcp-security 使用

模板文件

templates/ 中可直接使用的配置文件:

模板用途
npmrc-security.tmpl禁用脚本并设置冷却时间的安全 .npmrc
bunfig-security.tmpl设置冷却时间和排除项的安全 bunfig.toml
pnpm-workspace-security.tmpl设置冷却时间、allowBuilds 和 trustPolicy 的安全 pnpm-workspace.yaml
yarnrc-security.tmpl设置版本限制和预批准软件包的安全 .yarnrc.yml
dependabot-security.tmpl设置 7 天冷却时间的 Dependabot 配置
renovate-security.tmpl设置 minimumReleaseAge 和自动合并规则的 Renovate 配置
devcontainer-security.tmpl采用安全选项加固的开发容器
socket-fix-ci.tmplGitHub Actions:与冷却时间同步进行 CVE 修复的 Socket Fix 自动驾驶配置
socket-scan-ci.tmplGitHub Actions:针对每次推送/PR 的 Socket CI 安全门禁
sap-mcp-config.tmpl供审查的 SAP MCP 配置候选项,附带精确锁定检查清单
maven-security.tmplSAP Java 项目的 Maven 校验和/强制规则/依赖项扫描片段
gradle-security.tmplGradle 依赖项锁定和验证片段
python-security.tmplSAP AI SDK、HANA ML 和数据工具的 Python 锁定/审计工作流
container-trivy.tmpl使用 Trivy 扫描容器映像的工作流,并附带摘要锁定提醒
btp-cf-mbt-review.tmplBTP、Cloud Foundry 和 MBT 依赖项/部署审查清单
abap-gcts-review.tmplABAP、gCTS 和传输依赖项审查清单

评论

支持 Markdown