Skip to content

feat: add AiLPHA security platform service#160

Draft
K6gg wants to merge 4 commits into
chaitin:mainfrom
K6gg:feat/add-ailpha-platform-service
Draft

feat: add AiLPHA security platform service#160
K6gg wants to merge 4 commits into
chaitin:mainfrom
K6gg:feat/add-ailpha-platform-service

Conversation

@K6gg

@K6gg K6gg commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

接入设备

AiLPHA 安全分析与管理平台(SIEM/SOC,安全运营协同)。服务包 services/ailpha__platform,proto 包 AiLPHA_Platform

设备版本

AiLPHA V5.1,/openapi/v1.0 + /openapi/v2.0 路由(依据产品《API 接口文档》)。

认证方式

API Key(登录令牌),以 apiKey HTTP 头发送(secret.apiKey)。Key 通过 用户管理 → 用户编辑 → 新增API Key 创建。

实现方法

方式:RPC(gRPC,6 个方法)

方法 类型 端点 说明
ListMergeAlarms GET /openapi/v2.0/merge-alarms 归并告警查询(核心);过滤 order_by/page/size/cascade_org_id/condition(AiQL)/connect_type/时间/field_mapping/params
GetMergeAlarmDetail GET /openapi/v1.0/merge-alarm/detail 需 agg_condition + window_id,返回单条告警
UpdateMergeAlarmStatus POST /openapi/v2.0/merge-alarms/status 批量处置;需 alarm_status + 选择器(condition 或 start+end)
ListLinkageStrategies GET /openapi/v1.0/linkage-strategies 联动策略列表(获取策略 id)
BlockIp POST /openapi/v1.0/linkage-strategies/{ids}/accessIp 对策略 ids 下发 IP 阻断
UnblockIp DELETE /openapi/v1.0/linkage-strategies/{ids}/blockIp 解除阻断;404 幂等
  • 大对象(告警/策略)以 google.protobuf.Struct 原样透传;$page/$size 映射为 page/size。
  • 错误映射:参数错误→INVALID_ARGUMENT,401→UNAUTHENTICATED,403→PERMISSION_DENIED,404→NOT_FOUND(UnblockIp 除外,幂等),4xx→FAILED_PRECONDITION,5xx/网络→UNAVAILABLE,非 JSON→UNKNOWN
  • 写操作声明默认参数、幂等语义(UnblockIp 缺失幂等、BlockIp 重复安全)、回滚方式(Block⇄Unblock;处置回滚=改回状态)和审计字段(x-request-id/x-engine-instance)。

测试命令

cd services
npm run validate -- --service-dir ailpha__platform   # service package naming checks passed
npm test -- --service-dir ailpha__platform            # 28/28 pass(行 100% / 分支 91% / 函数 98%)
npm run pack:check                                    # ok

已知限制

  1. 仅覆盖 SOC 告警闭环 + 联动封禁;资产/漏洞/工单/ES 查询等其它 openapi 域未纳入本包。
  2. 告警/策略对象以 Struct 透传(字段繁多,未逐字段建模)。
  3. 列表未做自动翻页(由调用方传 page/size 控制)。
  4. connect_type=ALL 等价于省略该查询参数。

真实设备验证

待补:在测试环境用 disposable 告警 / 测试联动策略执行以下闭环并附截图。

# 1) 告警查询(只读,确认连通鉴权)
curl "https://<host>/openapi/v2.0/merge-alarms?%24size=10" -H "apiKey: <key>"

# 2) 联动策略列表(获取策略 id)
curl "https://<host>/openapi/v1.0/linkage-strategies" -H "apiKey: <key>"

# 3) 封禁(写入测试对象)
curl -X POST "https://<host>/openapi/v1.0/linkage-strategies/<id>/accessIp" -H "apiKey: <key>"

# 4) 解封(清理)
curl -X DELETE "https://<host>/openapi/v1.0/linkage-strategies/<id>/blockIp" -H "apiKey: <key>"
方法 结果
ListMergeAlarms ✅ 返回告警列表
ListLinkageStrategies ✅ 返回策略
BlockIp ✅ 策略 status→active
UnblockIp ✅ 解除(清理完成)

(截图:AiLPHA 控制台告警列表 / 联动策略状态变化)

@innomentats

Copy link
Copy Markdown
Member

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

@innomentats
innomentats self-requested a review June 26, 2026 09:48
@innomentats
innomentats marked this pull request as draft June 26, 2026 11:43
@K6gg
K6gg force-pushed the feat/add-ailpha-platform-service branch from 9de87b1 to 9346dc0 Compare June 26, 2026 12:04
@monkeyscan

monkeyscan Bot commented Jun 26, 2026

Copy link
Copy Markdown

PR Title: feat: add AiLPHA security platform service

Commit: 9346dc0

本次 PR 新增多个 OctoBus 服务包(TopSec WAF、AiLPHA Platform、Alibaba Cloud SWAS Firewall、CloudAtlas、DefectDojo、Elastic Kibana、QiAnXin Hunter、Slack GroupRobot、ThreatBook NGTIP),并在 internal/packageimport/importer.go 中增加远程压缩包下载支持。整体代码结构清晰,但发现以下高置信度安全和可靠性问题:

  1. TopSec WAF 模块级 session 存在并发竞争与全局 TLS 降级services/topsec__waf_v3-2294-20238/src/topsec-waf-v3-2294-20238.js 使用模块级 let session 缓存登录会话,多请求并发时会相互覆盖 session,导致认证串用或失败;login() 中通过 process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0' 修改全局环境变量,影响进程内所有 HTTPS 请求。

  2. 多处服务包对 fetch 使用非标准选项导致超时和 TLS 配置失效timeoutMsskipTlsVerifyinsecureSkipVerifytlsInsecureSkipVerify 等不是标准 Node.js fetch/undici 的有效选项,被静默忽略。受影响文件包括 cloudatlas.js、ailpha-platform.js、elastic-kibana-7-17-26.js、threatbook-ngtip-v5.js、hunter.js、slack-group-robot.js。这导致配置的超时和 TLS 跳过均不生效,请求可能挂死且无法按预期跳过证书校验。

  3. Go importer 远程归档下载缺少超时和大小限制internal/packageimport/importer.godownloadRemoteArchive 使用默认 http.DefaultClient(无超时),且 io.Copy 未限制写入大小,可被恶意远程地址利用导致无限挂起或磁盘耗尽。

建议优先修复 TopSec WAF 的并发安全与全局 TLS 污染问题,以及统一各服务包 fetch 的超时实现方式(使用 AbortSignal.timeout)和 TLS 控制方式。

@monkeyscan

monkeyscan Bot commented Jul 9, 2026

Copy link
Copy Markdown

MonkeyScan 正在评审本次 push 新增到 PR 的变更,完成后会更新到本评论中,请稍后刷新查看。

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.

3 participants