Skip to content

Add WD K01 V9.0.2 query and threat-intel service - #141

Open
cc06 wants to merge 4 commits into
chaitin:mainfrom
cc06:add-wd-k01-v9-0-2
Open

Add WD K01 V9.0.2 query and threat-intel service#141
cc06 wants to merge 4 commits into
chaitin:mainfrom
cc06:add-wd-k01-v9-0-2

Conversation

@cc06

@cc06 cc06 commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

接入设备

网盾 K01 威胁情报联防阻断系统(北京中盾网空防务技术有限公司)

设备版本

V9.0.2(文档标注「V9 新增接口」)

认证方式

POST /api/cms/user/login 取 token.access_token → 业务请求 Authorization: Bearer → POST /api/cms/user/logout。每次方法一段无状态会话,沿用既有 wd__k01 的认证方式。

实现方法

  • QueryAttackLog — /api/v1/logsystem/atkmntlog/query(攻击监测日志查询)
  • QueryIPList — /api/v1/security/iplist/query(IP 黑白名单查询)
  • QueryThreatIntel — /api/v1/threatintelligence/attack/query(私有情报查询)
  • AddThreatIntel — /api/v1/threatintelligence/attack/save(私有情报添加)
  • DeleteThreatIntel — /api/v1/threatintelligence/attack/delete(私有情报删除)

与已有 wd__k01(BlockIP/UnblockIP,基于 iplist/save)互补,聚焦只读查询与私有情报管理。

测试命令

cd services
npm run validate -- --service-dir wd__k01_v9-0-2
npm test -- --service-dir wd__k01_v9-0-2 --coverage
npm run pack:check

本地结果:validate 通过;31 用例全过,实现文件行 99.6% / 分支 93% / 函数 95.45%;pack:check 通过。

设备验证截图

⚠️ 待补:真机执行 query-attack-log / query-ip-list 直接读;情报写操作用测试 IP 执行 add-threat-intel → query-threat-intel → delete-threat-intel 清理后截图。

已知限制

  • 写操作(AddThreatIntel/DeleteThreatIntel)即时影响联防阻断决策,无自动回滚(Add 用 Delete 还原,Delete 需重新 Add)。
  • 暂未覆盖外联检测、受控主机分析、URL 黑白名单、应用隐身、系统状态等其余 V9 接口(后续 PR 扩展)。

@cc06
cc06 force-pushed the add-wd-k01-v9-0-2 branch from 80474e1 to 8477006 Compare June 24, 2026 07:46
@innomentats

Copy link
Copy Markdown
Member

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

@innomentats
innomentats requested a review from kingfs June 26, 2026 09:46
@innomentats
innomentats marked this pull request as draft June 26, 2026 12:48
@innomentats

Copy link
Copy Markdown
Member

Reviewer note: this PR currently has merge conflicts with the target branch, so it cannot be merged or reviewed safely in its current state.

Please rebase or merge the latest base branch, resolve the conflicts, and make sure GitHub Actions pass again. I am marking/keeping this PR as draft until the conflicts are resolved.

@kingfs

kingfs commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Service L2 自动检查结果:l2:blocked

  • 状态:blocked
  • PR head:84770063fccdde7f3a0f7a901dc9968691ef2c0f
  • 门禁版本:e4397c85f817bb1054bdbcb75713141613bf0382
  • 结论:PR 当前为 Draft,未执行 L2。

L2 只验证包结构、mock 测试、80% line/branch/function coverage、打包、构建和 OctoBus smoke 链路;真实设备兼容性仍需人工检查作者提供的脱敏证据。

@kingfs kingfs added the l2:blocked Service L2 检查被 Draft、冲突或基础条件阻塞 label Aug 12, 2026
@kingfs
kingfs force-pushed the add-wd-k01-v9-0-2 branch from 8477006 to 5675ba7 Compare August 17, 2026 03:13
@kingfs
kingfs marked this pull request as ready for review August 17, 2026 03:13
@monkeyscan

monkeyscan Bot commented Aug 17, 2026

Copy link
Copy Markdown

PR Title: Add WD K01 V9.0.2 query and threat-intel service

Commit: 5675ba7

本次 PR 新增 WD K01 V9.0.2 威胁情报联防阻断系统的 OctoBus service 包(services/wd__k01_v9-0-2),覆盖 5 个 RPC:QueryAttackLog、QueryIPList、QueryThreatIntel、AddThreatIntel、DeleteThreatIntel。核心实现采用「每次调用 = login → 业务请求 → logout」的无状态会话模型,login 取 token.access_token 后以 Bearer 方式调用业务接口,登出在 finally 中执行且失败只记日志不覆盖业务结果。主要设计要点包括:参数校验(IPv4、正整数、color/dir、page/count 白名单)、HTTP 错误到 gRPC code 的映射(401→UNAUTHENTICATED、403→PERMISSION_DENIED、4xx→FAILED_PRECONDITION、5xx/网络→UNAVAILABLE、空体/非 JSON→UNKNOWN)、redirect:'error' 防重定向泄露 token、redactSensitive 脱敏 raw_json 与错误消息、skipTlsVerify 等 TLS 选项。同时注册了 root package.json 的 bin/files、octobus-tentacles.js 的 service 表项(并顺带修复了 misp 条目后多余的一个 }, 语法问题),新增了较完整的测试(mock 上游 + 注入 fetch 的错误映射/脱敏/登出降级覆盖)与 smoke 测试。总体质量较高,错误映射、会话清理、脱敏、校验与测试覆盖都做得比较扎实;发现的问题集中在契约一致性与输入过滤边界(QueryThreatIntel 的 count 限制与 proto/README 不符、pickIntList 未按注释过滤负值)。

Comment thread services/wd__k01_v9-0-2/src/wd-k01-v9-0-2.js
Comment thread services/wd__k01_v9-0-2/src/wd-k01-v9-0-2.js Outdated
@kingfs
kingfs force-pushed the add-wd-k01-v9-0-2 branch from 5675ba7 to 6d5af3e Compare August 17, 2026 12:58
@monkeyscan

monkeyscan Bot commented Aug 17, 2026

Copy link
Copy Markdown

PR Title: Add WD K01 V9.0.2 query and threat-intel service

Commit: 6d5af3e

本次变更新增 wd__k01_v9-0-2 OctoBus service package,适配网盾 K01 V9.0.2 的 5 个接口(攻击监测日志查询、IP 黑/白名单查询、私有情报(攻击类)增/删/查),并完成服务注册(octobus-tentacles.js、services/package.json)与配套 proto/config/secret schema、mock 上游、302 行测试与 smoke test。

设计要点:每次方法调用为 login→Bearer 业务请求→logout 的无状态会话;登出失败在 finally 中吞掉且不覆盖业务结果;错误按场景映射到 gRPC code;raw_json/日志经 redactSensitive 脱敏;TLS 校验可配置 skipTlsVerify;page/count/ip/type/severity/id 均有本地校验。实现整体质量较好,测试覆盖了端到端流程、参数校验、错误映射、登出失败吞除、脱敏与辅助函数。

历史 finding 评估:两条已确认历史发现(QueryThreatIntel.count 契约不一致、pickIntList 负数未过滤)在当前 head 均已修复——proto 注释已为 QueryThreatIntelRequest.count 补充"取值 [10,20,50,100]"、README 统一声明、测试断言 count:15 拒绝;pickIntList 已加 num>=0 过滤并有对应断言。故不再重复上报。

新发现两条(均为边界契约问题,中/低严重度):1) isSemanticSuccess 用 OR 串联成功信号,当上游返回 { success:false, msgType:'success' } 这类字段冲突的失败响应时会被误判为成功,对 Add/DeleteThreatIntel 写操作可能掩盖失败,造成威胁情报实际未生效却报成功的数据完整性风险;2) 三个查询构造器用 pickInt(...,1)||1pickInt(...,10)||10,显式传入 page:0/count:0 会被静默替换为默认值,绕过"必须为正整数 / 必须为 {10,20,50,100}"的契约校验。

Comment thread services/wd__k01_v9-0-2/src/wd-k01-v9-0-2.js Outdated
Comment thread services/wd__k01_v9-0-2/src/wd-k01-v9-0-2.js Outdated
@monkeyscan

monkeyscan Bot commented Aug 17, 2026

Copy link
Copy Markdown

PR Title: Add WD K01 V9.0.2 query and threat-intel service

Commit: cc9f03e

本次变更针对 WD K01 V9.0.2 服务修复两个已确认的历史缺陷,并同步收紧 proto 契约:

  1. isSemanticSuccess 语义修复:当响应信封含布尔 success 字段时以其为准(success:false 不再被 ok/code=0/msgType='success' 的 OR 逻辑覆盖),修复了写操作(AddThreatIntel/DeleteThreatIntel)失败响应被误判为成功、导致"写入未生效却报成功"的数据完整性/安全缺口。新增单元断言与 mutation 集成测试覆盖 success:false 与 msgType:'success'/code:0 冲突场景。

  2. 分页参数校验收紧:三个查询 payload 构造器(buildAttackLogPayload/buildIPListPayload/buildIntelQueryPayload)移除 || 1/|| 10 默认值吞并逻辑,显式 page:0/count:0 现在会经 requirePage/requirePageSize 抛 INVALID_ARGUMENT,不再被静默当作默认值。proto 同步将 page/count 从 int32 改为 optional int32(区分"未传"与"显式 0"),并更新注释"显式 0 非法"。

测试覆盖:新增 buildAttackLogPayload({page:0})、buildIPListPayload({count:0}) 校验断言,新增 mutation 冲突信封集成测试,helper 层新增 isSemanticSuccess 冲突断言。默认分页路径(不传 page/count 时回落 1/10)由既有集成测试(QueryIPList/QueryThreatIntel 默认调用)覆盖。

总体评估:两处修复逻辑自洽、proto/实现/测试三者一致,改动聚焦且无高风险回归。未发现由本 diff 引入的新增高置信缺陷;关于 optional 字段在 gRPC 桥接层是否准确保留"显式 0"的存在性依赖运行桥接实现,无法从 diff 证实,故不作为 finding 提交。

@kingfs kingfs added l2:passed Service L2 自动门禁通过 and removed l2:blocked Service L2 检查被 Draft、冲突或基础条件阻塞 labels Aug 18, 2026
cc06 and others added 3 commits August 18, 2026 11:56
New service package wd__k01_v9-0-2 covering the WD K01 V9.0.2 RESTful API
(V9 interfaces): QueryAttackLog, QueryIPList, QueryThreatIntel, AddThreatIntel,
DeleteThreatIntel. Reuses the K01 login/Bearer/logout session flow and
complements the existing wd__k01 BlockIP/UnblockIP package with read and
private threat-intel management. Wire it into the root dispatcher, bin wrapper,
and package manifest.
@kingfs
kingfs force-pushed the add-wd-k01-v9-0-2 branch from cc9f03e to 6f0152a Compare August 18, 2026 03:58
@monkeyscan

monkeyscan Bot commented Aug 18, 2026

Copy link
Copy Markdown

PR Title: Add WD K01 V9.0.2 query and threat-intel service

Commit: 6f0152a

本 PR 新增网盾 K01 V9.0.2 威胁情报联防阻断系统的 OctoBus 服务包(services/wd__k01_v9-0-2),覆盖 5 个 RPC:攻击监测日志查询、IP 黑白名单查询、私有情报(攻击类)查询/添加/删除,并接入根 package.json、octobus-tentacles.js 与 bin 入口。

核心实现(src/wd-k01-v9-0-2.js,515 行)采用每次调用「login → Bearer 业务请求 → logout(finally 中执行,失败仅记日志)」的无状态会话模式;参数校验(page/count/color/dir/IPv4/正整数)在 login 之前完成;业务 success/msgType 非成功统一映射为 FAILED_PRECONDITION;HTTP 401→UNAUTHENTICATED、403→PERMISSION_DENIED、其他 4xx→FAILED_PRECONDITION、5xx→UNAVAILABLE;日志与 raw_json 均经 redactSensitive 脱敏。config/secret schema 声明了 host/账号别名且 additionalProperties:false。

测试(316 行 + mock 上游)覆盖端到端查询/增删、参数校验边界、登录失败、业务失败、网络/空体/非 JSON、登出失败被吞等场景,质量较高。整体实现与既有 wd__k01 兄弟包模式一致并做了 SDK 现代化(fetchWithTimeout/createTlsDispatcher/serviceError)。

发现一处低危文档与实现不一致:README 错误映射表将上游 401 描述为 PERMISSION_DENIED,而实现与测试均映射为 UNAUTHENTICATED。其余未发现高置信度的正确性/安全问题。

Comment thread services/wd__k01_v9-0-2/README.md Outdated
@monkeyscan

monkeyscan Bot commented Aug 18, 2026

Copy link
Copy Markdown

PR Title: Add WD K01 V9.0.2 query and threat-intel service

Commit: f8629c2

本次变更为 services/wd__k01_v9-0-2/README.md 的纯文档改动(+3/-2),仅涉及错误映射表的对齐,无代码/测试变更。

关键改动:

  1. 将「上游 401 / 403 → PERMISSION_DENIED」拆分为「上游 401 → UNAUTHENTICATED」与「上游 403 → PERMISSION_DENIED」。经核对 src/wd-k01-v9-0-2.js 的 throwForHttpStatus 实现(401→UNAUTHENTICATED、403→PERMISSION_DENIED)以及测试用例 'business 401 → UNAUTHENTICATED',新表与实现完全一致。此前已确认的历史发现(README 与实现 401/403 映射不一致)已由本次变更修复。
  2. 将「超时 / 重定向 → DEADLINE_EXCEEDED / UNAVAILABLE」改为「超时 / 重定向 → UNAVAILABLE」。实现中 fetchRaw 以 redirect:'error' 发起请求,重定向会触发普通 Error 并被 catch 分支映射为 UNAVAILABLE;超时/网络错误等非 GrpcError 传输异常同样落入该分支映射为 UNAVAILABLE,与文档一致。

整体评估:本次文档变更使错误映射表与实际行为保持一致,未发现由该变更引入的可操作问题。其余表项(INVALID_ARGUMENT/FAILED_PRECONDITION/UNKNOWN/5xx→UNAVAILABLE)与实现亦一致。

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

Labels

l2:passed Service L2 自动门禁通过

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants