Skip to content

Add Tencent Cloud DSGC service#237

Open
632661265flynn-dotcom wants to merge 12 commits into
chaitin:mainfrom
632661265flynn-dotcom:codex/add-tencent-dsgc-service
Open

Add Tencent Cloud DSGC service#237
632661265flynn-dotcom wants to merge 12 commits into
chaitin:mainfrom
632661265flynn-dotcom:codex/add-tencent-dsgc-service

Conversation

@632661265flynn-dotcom

@632661265flynn-dotcom 632661265flynn-dotcom commented Jun 25, 2026

Copy link
Copy Markdown

新增腾讯云 DSGC 数据安全治理中心适配器

适配器信息

  • 规范标题:DSGC 数据安全治理中心 / Data Security Governance Center
  • 厂商:腾讯云 / Tencent Cloud
  • 产品:DSGC 数据安全治理中心 / Data Security Governance Center
  • API / 产品版本:API 3.0
  • 服务 ID:tencent-dsgc
  • 服务目录:services/tencent__dsgc
  • 运行模式:Node.js long-running service
  • 认证方式:AK/SK,通过 OctoBus instance secret 注入

变更内容

本 PR 新增 tencent-dsgc OctoBus service package,用于接入腾讯云数据安全治理中心的评估、合规、资产和发现任务等只读查询能力。

  • 新增 service.jsonproto/config.schema.jsonsecret.schema.jsonsrc/test/ 标准服务结构。
  • 使用 @chaitin-ai/octobus-sdkdefineServicerunServiceMain 标准接入方式。
  • 实现厂商 API 请求签名、HTTP 调用、响应解析、超时处理和错误映射。
  • 仅开放查询类能力,并通过固定只读 allowlist 限制通用调用入口。
  • 补充 OctoBus SDK 单参数 context 兼容测试,覆盖普通 RPC 与通用 InvokeReadOnly* 调用路径。
  • 新增 OctoBus Connect 真实联调证据。

接入产品信息

已实现方法

RPC 方法 对应厂商 API 说明 类型
ListDSPAClusters ListDSPAClusters 查询 DSGC/DSPA 集群列表 只读
DescribeDSPAComplianceGroups DescribeDSPAComplianceGroups 查询合规分组信息 只读
InvokeReadOnlyAction 固定只读 allowlist + 自定义只读 allowActions 调用受限 DSGC 查询 Action 只读

完整 RPC 与 allowlist 以本 PR 中的 proto/src/ 实现为准。

本地验证

services 目录下执行:

npm test -- --service-dir tencent__dsgc
npm run validate -- --service-dir tencent__dsgc
git diff --check

验证结果:

npm test: tests 28, pass 28, fail 0
npm run validate: service package naming checks passed
git diff --check: passed

OctoBus Connect 联调验证

已通过本地 OctoBus 实例调用该适配器,不是直接 curl 厂商 API。

调用路径格式:

POST http://127.0.0.1:<port>/capsets/cap/connect/<instance>/<proto-service>/<method>

联调结果摘要:

HTTP 200;`ListDSPAClusters` 返回 `TotalCount=1`,实例敏感信息已脱敏。

联调证据

证据文件已随服务目录提交:

services/tencent__dsgc/docs/evidence/octobus-connect-evidence.md
services/tencent__dsgc/docs/evidence/manual-octobus-connect-evidence.png

截图中可见本地真实终端 prompt、OctoBus Connect API 请求路径 /capsets/cap/connect/...、HTTP 状态码和 jq 提取后的业务响应摘要;敏感字段已脱敏,未包含 AK/SK 明文。

OctoBus Connect evidence

安全说明

  • AK/SK 不写入代码、测试、PR 正文或截图。
  • 敏感凭据仅通过 secret.schema.json 声明,并由 OctoBus instance secret 注入。
  • 当前开放方法均为只读查询类接口。
  • 证据中的 request id、trace id、tenant id、实例信息等已按需脱敏。

已知限制

  • 当前仅实现只读查询能力。
  • 如果测试账号未开通对应产品,厂商 API 可能返回产品未开通或租户未授权错误。
  • 该类错误可证明请求已通过 OctoBus 到达厂商业务 API,但不代表适配器调用链路或签名失败。

Review 补充说明

根据 Review 反馈“需要测 OctoBus 的接口”,本 PR 已补充 OctoBus Connect API 的真实调用证据。本次补充重点证明:

  • 请求入口是 OctoBus Connect API。
  • 适配器由 OctoBus 实例加载并调用。
  • 响应来自目标厂商业务 API 或厂商业务错误。
  • 不是直接 curl 厂商 API 得到的结果。

@monkeyscan

monkeyscan Bot commented Jun 26, 2026

Copy link
Copy Markdown

本次 PR 移除了 Tencent Cloud DSGC 适配器中对 TLS 证书验证绕过(skipTlsVerify / tlsInsecureSkipVerify)的支持,属于安全加固变更。

主要修改:

  1. config.schema.json:从配置模式中移除 skipTlsVerify 和 tlsInsecureSkipVerify 两个字段。
  2. tencent-dsgc.js:新增 assertSupportedTlsConfig 校验函数,在 resolveRuntime 中优先检查并拒绝任何 TLS 绕过标志(包括 skipTlsVerify、tlsInsecureSkipVerify、insecureSkipVerify);同时移除 buildTlsOptions 及 fetch 调用中的 TLS 绕过参数透传。
  3. tencent-dsgc.test.js:更新现有测试用例,新增专门测试验证 TLS 绕过配置会被明确拒绝。
  4. README.md:更新文档,明确说明该 Node.js fetch 适配器不支持 TLS 证书验证绕过。

整体评估:变更逻辑清晰,校验与测试覆盖到位,移除了不安全的 TLS 绕过能力,无引入新的行为回归或安全漏洞。

@monkeyscan

monkeyscan Bot commented Jun 26, 2026

Copy link
Copy Markdown

本次 PR 对 assertSupportedTlsConfig 函数做了关键修正:原实现使用 firstDefined 仅检查第一个非 undefined 的 TLS 跳过参数,导致当排在前面的参数被显式设为 falsy(如 skipTlsVerify: false)时,后续为 truthy 的参数(如 tlsInsecureSkipVerify: true)被忽略,从而错误地允许 TLS 验证绕过。新实现改为对三个参数分别用 asBool 进行布尔判断并以逻辑或连接,确保任一参数为 truthy 时都会正确拦截。同时补充了对应的回归测试(skipTlsVerify: false, tlsInsecureSkipVerify: true),覆盖了这一边界场景。整体是一次必要且准确的缺陷修复。

@monkeyscan

monkeyscan Bot commented Jun 26, 2026

Copy link
Copy Markdown

本次 PR 仅修改了 services/tencent__dsgc/test/tencent-dsgc.test.js 中的一个测试用例,将 InvokeReadOnlyAction enforces read-only action allow list 测试里使用的示例 API 名称从 GetTrialVersion 替换为 GetDSPAAssessmentRiskTrend。这是一次与 "移除商业版适配器 API" 主题一致的清理工作:新的 API 名称更符合 DSGC(数据安全治理中心)服务领域的实际接口,而 GetTrialVersion 明显属于其他服务的商业/试用相关接口。测试逻辑本身(允许列表校验、拒绝非法 Action 的分支)完全保持不变,变更内容一致且合理。未发现可操作的缺陷或风险。

@monkeyscan

monkeyscan Bot commented Jun 26, 2026

Copy link
Copy Markdown

本次 PR 将 Tencent Cloud DSGC 服务的 FIXED_ACTIONS 只读操作白名单从 8 个扩展到 62+ 个,覆盖了评估、合规、资产、发现任务等多个模块的 Describe*/List*/Get* 接口。测试同步更新,将原先使用自定义 allowActions 的用例改为直接验证白名单内操作。整体改动符合只读适配器的设计,白名单命名与 READ_ONLY_PREFIXES 约束一致。但测试更新过程中移除了对 allowActions 自定义覆盖能力的验证,存在回归风险。

Comment thread services/tencent__dsgc/test/tencent-dsgc.test.js
@innomentats

Copy link
Copy Markdown
Member

Review 阻塞:这个 service package PR 有测试文件,但我没有在 PR 描述、评论或改动文件中找到真实的测试截图证据(图片链接或提交的图片文件)。请补充能证明该 service package 跑通的截图,例如 npm test -- --service-dir <service> 通过,以及 OctoBus 实例调用/联调成功的截图。

@632661265flynn-dotcom

Copy link
Copy Markdown
Author

补充 Review 阻塞要求的真实截图证据。图片文件已随本 PR 分支提交,包含本地 npm test / npm run validate / git diff --check 通过记录,以及已脱敏的联调/API 调用证据。

Also restored regression coverage for custom allowActions.

Evidence file: https://github.com/632661265flynn-dotcom/OctoBus/blob/codex/add-tencent-dsgc-service/services/tencent__dsgc/docs/evidence/pr-237-test-live-evidence.png

PR #237 tencent__dsgc evidence

@monkeyscan

monkeyscan Bot commented Jun 26, 2026

Copy link
Copy Markdown

本次 PR 在 services/tencent__dsgc/test/tencent-dsgc.test.js 中重新添加了对 allowActions 自定义配置能力的测试用例,并在 services/tencent__dsgc/docs/evidence/ 下新增了测试证据截图。核心变更是验证 InvokeReadOnlyAction 支持通过 config.allowActions 显式允许特定 action。

Comment thread services/tencent__dsgc/test/tencent-dsgc.test.js
@632661265flynn-dotcom

Copy link
Copy Markdown
Author

继续处理机器人最新建议:allowActions 现在优先于默认 Describe/List/Get 前缀检查,显式配置的 action 可以真正覆盖默认前缀限制;测试也改为 FetchDSPACustomAllowedAction,确保如果 runtime.allowActions.includes(action) 失效会被回归测试捕获。\n\n已重跑:\n- npm test -- --service-dir tencent__dsgc\n- npm run validate -- --service-dir tencent__dsgc\n- git diff --check\n\n证据图已随分支更新:\nPR #237 tencent__dsgc evidence

@monkeyscan

monkeyscan Bot commented Jun 26, 2026

Copy link
Copy Markdown

本次 PR 主要修改了 ensureReadOnlyActionAllowed 函数中 allowActions 的校验顺序,并将测试用例中的 GetDSPACustomAllowedAction 替换为 FetchDSPACustomAllowedAction。核心意图是解决此前 review 指出的测试覆盖不足问题——即旧测试使用 Get* 开头的 action,由于 Get 本身已在 READ_ONLY_PREFIXES 中,因此即使 allowActions 逻辑失效,测试仍会通过的缺陷。

但当前实现将 runtime.allowActions.includes(action) 提前到了 READ_ONLY_PREFIXES 前缀校验之前。这导致只要 action 被列入 allowActions,就能完全绕过 Describe*/List*/Get* 的只读前缀限制。此变更破坏了 InvokeReadOnlyAction 接口的只读安全语义,使得写操作(如 Create*Delete* 等)理论上可以通过配置 allowActions 来执行。

此外,allowAllReadOnlyActions 仍然受 READ_ONLY_PREFIXES 约束,而 allowActions 不再受限,两者行为不一致。如果 Fetch* 是合理的只读前缀,更合适的修复方式应是将 Fetch 加入 READ_ONLY_PREFIXES,而非前置 allowActions 检查。

Comment thread services/tencent__dsgc/src/tencent-dsgc.js Outdated
@632661265flynn-dotcom

Copy link
Copy Markdown
Author

继续处理最新机器人反馈:恢复 allowActionsREAD_ONLY_PREFIXES 之后检查,保留 InvokeReadOnlyAction 的只读安全边界。测试现在先验证 GetDSPACustomAllowedAction 未配置 allowActions 时会被拒绝,再验证加入 allowActions 后通过,因此既覆盖自定义 allowlist 路径,也不会允许非只读前缀绕过。\n\n已重跑:\n- npm test -- --service-dir tencent__dsgc\n- npm run validate -- --service-dir tencent__dsgc\n- git diff --check\n\n证据图已更新:\nPR #237 tencent__dsgc evidence

…c-service

# Conflicts:
#	services/package.json
@monkeyscan

monkeyscan Bot commented Jun 26, 2026

Copy link
Copy Markdown

PR Title: Add Tencent Cloud DSGC service

Commit: 664aa47

本次 PR 修正了 ensureReadOnlyActionAllowedallowActions 前置导致可绕过 READ_ONLY_PREFIXES 只读前缀检查的漏洞。变更将 runtime.allowActions.includes(action) 从函数开头移至 READ_ONLY_PREFIXES 校验之后,确保 allowActions 仅能放行符合 Describe*/List*/Get* 前缀的只读操作,无法再利用 allowActions 执行非只写操作。测试同步更新:新增了对未加入 allowActions 的只读 action 的拒绝测试,并将原先依赖漏洞的 FetchDSPACustomAllowedAction 替换为符合前缀规范的 GetDSPACustomAllowedAction。整体为正确的安全边界修复,未发现引入新缺陷。

@monkeyscan

monkeyscan Bot commented Jun 26, 2026

Copy link
Copy Markdown

PR Title: Add Tencent Cloud DSGC service

Commit: e7a0c86

本次 PR 新增 5 个 OctoBus 服务包,代码量较大。经重点审查,发现以下关键问题:

  1. TopSec WAF 全局共享 session:模块级 let session = null 导致并发请求间认证信息泄漏,属于高严重度并发缺陷。
  2. TopSec WAF 全局 TLS 降级:通过 process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0' 禁用 TLS 验证,影响整个 Node.js 进程的所有 HTTPS 请求,属于高严重度安全问题。
  3. TopSec WAF AES 密钥复用为 IVcreateCipheriv('aes-128-cbc', key, key) 将密钥作为 IV,削弱加密强度,属中严重度安全问题。
  4. CloudAtlas 死代码条件requestWithDefaultstoken === undefined && token === null 条件永远不可达,属逻辑错误。

其他新增服务(Slack Group Robot、Alibaba Cloud Firewall、Elastic Kibana)整体结构规范,未发现同等严重度的问题。

@innomentats

Copy link
Copy Markdown
Member

截图截的也全都是绕过 octobus 直接调服务

@innomentats innomentats marked this pull request as draft June 26, 2026 11:52
@monkeyscan

monkeyscan Bot commented Jun 26, 2026

Copy link
Copy Markdown

PR Title: Add Tencent Cloud DSGC service

Commit: c18a1ca

本次 PR 为 Tencent DSGC 服务增加了 OctoBus SDK 单参数调用模式的兼容性,同时修复了分页参数默认值泄漏问题。

主要变更:

  1. tencent-dsgc.js 中新增 isSdkHandlerContexthandlerRequesthandlerContext 辅助函数。当 ctx === undefinedreq 具备 SDK context 特征(包含 requestconfig/secret/method 之一)时,自动将 req 解包为请求体和执行上下文,使 handler 同时兼容旧版双参数调用和 OctoBus SDK 单参数调用。
  2. 调整 mergeRequestParams 的分页逻辑:仅在 limit > 0offset > 0 时才向请求参数中注入 LimitOffset,避免 offset: 0, limit: 0 被误传入不支持分页的 DSGC 接口。
  3. 对应新增两项单元测试:验证非分页接口不受默认分页值影响,以及验证 SDK 单参数上下文可被正确解析。
  4. 补充了 OctoBus Connect 手动测试证据文档和截图。

整体评估:代码逻辑正确,边界条件处理合理,测试覆盖新增行为,未发现可操作的缺陷或回归风险。

…c-service

# Conflicts:
#	services/package.json
@monkeyscan

monkeyscan Bot commented Jun 26, 2026

Copy link
Copy Markdown

PR Title: Add Tencent Cloud DSGC service

Commit: 2852961

本次 PR 新增/修改了 87 个文件,引入了多个 OctoBus 服务(Imperva WAF、DefectDojo、QiAnXin Hunter、Sangfor XDR、ThreatBook ClaudSandbox V3、ThreatBook NGTIP V5、FIRST EPSS)。主要发现如下:

  1. FIRST EPSS 存在命令注入漏洞first-epss-v1.js 使用 execSync 执行 curl 命令时,将用户配置的 baseUrl 直接拼接到 shell 命令中,未做转义或校验,存在命令注入风险。

  2. ThreatBook ClaudSandbox V3 存在路径遍历漏洞readFileFromRequest 函数直接读取用户传入的 file_path,未限制访问路径,可读取任意本地文件。

  3. 多处服务的 fetch() 超时配置失效:ThreatBook ClaudSandbox V3、Imperva WAF、QiAnXin Hunter、ThreatBook NGTIP V5 等服务在调用 fetch() 时传入了 timeoutMs 参数。Node.js 内置的 fetch(基于 undici)并不支持 timeoutMs 选项,导致超时配置被静默忽略,请求可能无限期挂起。DefectDojo 和 Sangfor XDR 则正确使用了 AbortController 实现超时。

  4. TLS 跳过校验配置在多服务中失效:上述同样受 timeoutMs 问题影响的服务,其 skipTlsVerify 等 TLS 选项传入 fetch 后也会被忽略,无法实际生效。

整体代码结构较为统一,但部分服务在 HTTP 客户端使用上存在明显的安全与可靠性缺陷。

@632661265flynn-dotcom 632661265flynn-dotcom marked this pull request as ready for review June 26, 2026 20:00
@monkeyscan

monkeyscan Bot commented Jun 26, 2026

Copy link
Copy Markdown

PR Title: Add Tencent Cloud DSGC service

Commit: 408d36b

本次修改扩展了 isSdkHandlerContext 对 OctoBus SDK 单参数上下文的识别能力:将原来较为宽泛的 method 属性检测替换为更具体的 bindingslimitsmeta 属性检测。同时补充了 InvokeReadOnlyAction 在 SDK 单参数上下文场景下的测试用例。整体改动范围小、意图清晰,测试覆盖到位。

@632661265flynn-dotcom

Copy link
Copy Markdown
Author

补充说明:前面关于“需要测 OctoBus 的接口 / 截图绕过 OctoBus 直接调服务”的反馈,已在最新提交和 PR 正文中补充对应证据。

请重点查看 PR 正文里的两个位置:

  • ## OctoBus Connect 联调验证:这里写明本次请求入口是本地 OctoBus 的 /capsets/cap/connect/...,不是直接 curl 厂商 API。
  • ## 联调证据:这里列出了随分支提交的 evidence 文件和真实终端截图。

对应文件位置:

  • services/tencent__dsgc/docs/evidence/octobus-connect-evidence.md
  • services/tencent__dsgc/docs/evidence/manual-octobus-connect-evidence.png

截图中可以看到本地真实 shell prompt、curl http://127.0.0.1:<port>/capsets/cap/connect/...、HTTP 状态码和 jq 提取后的业务响应摘要;AK/SK、request id、trace id、实例信息等敏感内容已脱敏。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants