| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
!20213 merge 提供异步function注册接口 into master 提供异步function接口 Created-by: zhu-feimo Commit-by: zhu-feimo Merged-by: openharmony_ci Description: **IssueNo**: [#15984](https://gitcode.com/openharmony/ability_ability_runtime/issues/15984) **Description**: **稳定性自检:** | 自检项 | 自检结果 | | ------------------------------------------------------------ | -------- | | 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | | | 成员变量进行赋值或创建需要排查并发 | | | 谨慎在lambda表达式中使用引用捕获 | | | 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | | | map\vector\list\set等stl模板类使用时需要排查并发 | | | 谨慎考虑加锁范围 | | | 在IPC通信中谨慎使用同步通信方式 | | | 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | | | 禁止将外部传入的裸指针在内部直接构造智能指针 | | | 禁止多个独立创建的智能指针管理同一地址 | | | 禁止在析构函数中抛异步任务 | | | 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | | | 禁止在对外接口中未经判空直接使用外部传入的指针 | | | 禁止接口返回局部变量引用 | | | 禁止在信号函数中加锁 | | | 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | | | 禁止将同一个cpp编译在不同的so中 | | **安全编码自检:** | 自检项 | 自检结果 | | -------------------------------------------------------------- | -------- | | 裸指针避免通过隐式转换构造为sptr | | | json对象在取值之前必须先判断类型,避免类型不匹配 | | | 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | | | 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | | | 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | | | 指针变量、表示资源描述符的变量、bool变量必须赋初值 | | | readParcelable获取的对象使用前需要判空 | | | 分配和释放内存的函数需要成对出现 | | | 申请内存后异常退出前需要及时进行内存释放 | | | 内存申请前必须对内存大小进行合法性校验 | | | 内存分配后必须判断是否成功 | | | 禁止使用realloc、alloca函数 | | | 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | | | 禁止打印内存地址 | | | 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | | | 禁止对有符号整数进行位操作符运算 | | | 禁止对指针进行逻辑或位运算 | | | 循环次数如果收外部数据控制,需要检验其合法性 | | | 禁止使用内存操作类危险函数,需要使用安全函数 | | | 谨慎使用不可重入函数 | | | 必须检查安全函数的返回值,并进行正确处理 | | | 禁止仅通过TokenType类型判断绕过权限校验 | | **TDD Result**: **XTS Result**: ### 是否已执行L0用例 - [ ] 已验证 - [ ] 不涉及。如不涉及,请写明理由 ### AI检视评分(使用本地代码检视skills扫描): # 代码检视报告 — cli_tool_framework@01009615(Round 3 / 最新提交) > 统一报告由 codecheck 工作台生成,**用于门禁管控**。所有 codecheck 报告(含 orchestrator 合并出的统一报告、单 scanner 直接产出的统一报告)必须遵循本模板:章节顺序、字段名、报告元数据块、评分与门禁规则均为**固定格式**,跨报告保持一致,便于门禁脚本解析与历史对比。 > 生成入口:[ README.md](../../README.md) → Step 5;合并逻辑见 [orchestrator/SKILL.md](../../orchestrator/SKILL.md)。 > **轮次沿革**:R1 三维扫描出 17 项(P1×1、P2×8、P3×8)→ R2 门禁复核人裁决(豁免 P1、关闭 8 项、2 项转排期)→ R3 复核人再裁 7 项「非问题关闭」。现存跟进 2 项 P3(INP-011、INP-007,未在关闭清单内)。全部裁决原文见 [refute_log.md](refute_log.md) 附录。 --- ## 报告元数据 > **门禁脚本只读取本 YAML 块**。字段名与取值域为固定合约,禁止改名、增删或自定义取值。人工阅读部分从「1. 门禁结论」开始。 > 注:本提交(git squash 提交)无 Change-Id,change_id 记 N/A,report_id 按 conventions §6 以 commit 前 8 位代替。findings_* 仅统计裁决后**仍在跟进**的有效发现;裁决关闭项在第 4 节留档,不计入。 <!-- codecheck-report-metadata:start --> yaml codecheck_report: schema_version: "1.0" scope: "cli_tool_framework@01009615" round: 3 commit_id: "0100961568a207a2d0440c3054d8dd01df3a2b79" change_id: "N/A" report_id: "01009615-R3" date: "2026-08-25" gate_decision: "approve" risk_level: "low" score: 96 dimensions_required: ["security-scanner", "logic-scanner", "input-scanner"] dimensions_executed: ["security-scanner", "logic-scanner", "input-scanner"] findings_total: 2 findings_by_severity: {P0: 0, P1: 0, P2: 0, P3: 2} gate_blockers: [] must_fix: [] followups: ["INP-011", "INP-007"] <!-- codecheck-report-metadata:end --> --- ## 1. 门禁结论 | 项目 | 结论 | |---|---| | 决策 | **approve** | | 风险等级 | 🟢 low | | 评分 | **96/100**(100 − 2×P3×2) | | 阻塞项 | 无 | | 必须修复(P0/P1) | 0 项 | | 建议跟进(P2/P3) | 2 项(INP-011、INP-007,均为 P3;另有 15 项经两轮裁决关闭留档) | **一句话结论**:探测到 IPC(oneway IDL)+ KVStore 持久化双信号,security+logic+input 三维全检;R1 共 17 项发现,经门禁复核人两轮书面裁决(R2 豁免 P1 并关闭/转期 8 项,R3 非问题关闭 7 项),现存跟进仅 2 项 P3;无 P0、无鉴权绕过、无内存安全缺陷,评分 96/100,**approve / low,可上库**。 --- ## 3. 必须立即处理(P0/P1) **无。** R1 唯一 P1 项 INP-009 于 R2 经门禁复核人书面裁决豁免,详见第 6 节与 [refute_log.md](refute_log.md) 附录。 --- ## 4. 建议本轮或下一补档处理(P2/P3) ### 4.1 跟进中(2 项) | ID | 优先级 | 问题 | 建议行动 | 排期 | |---|---|---|---|---| | INP-011 | P3 | UnregisterIntentFunctionsByNamespace 入参零校验(空串经 "/" 前缀空匹配返回假成功 ERR_OK;含 / 未拦) | 补 empty()/含 //长度检查,复用 KeyMatchesNamespace(:263-272) | 下一迭代 | | INP-007 | P3 | Validate 未禁 \0/控制字符,ns 含 \0 入库后日志 c_str() 截断误导审计(并承接 R2 关闭的 SEC-04 之 CRLF 过滤诉求) | Validate 增加可打印字符白名单或至少禁 \0/\r/\n | 下一迭代 | ### 4.2 裁决关闭留档(15 项) | ID | 原优先级 | 问题 | 裁决轮次与结论 | |---|---|---|---| | INP-009 | P1 | 批量注册无事务,oneway 部分失败对调用方不可见 | R2:调用方无需感知成败、异常不处理,日志可定位 → 裁决豁免 | | SEC-01(+INP-010) | P2 | 服务端忽略 ToFunctionInfoVec 返回值(:626) | R2:数据库设计无法避免后续统一优化;**R3:非问题关闭** | | SEC-02 | P2 | mock 与 oneway 返回值语义背离 | R2:IDL 基类虚函数带返回值必须实现,返回值被 IDL 丢弃属预期 → 关闭 | | SEC-04(+INP-006) | P2 | 鉴权前 LOGD 打印 namespace(日志注入面) | R2:namespace 非敏感可打印 → 关闭(CRLF 诉求由 INP-007 承接) | | INP-003 | P2 | KV key 全局共享无归属隔离 | R2:当前修改无需考虑 userId 设计 → 范围外关闭 | | LOG-01 | P2 | oneway 变更接口乱序/契约未声明 | R2:三接口独立场景无顺序问题 → 关闭 | | SEC-03 | P2 | 单批 200k 整批持锁 + oneway 无背压 | R3:非问题关闭 | | INP-008 | P2 | 反序列化总量/条目/字段上限过宽 | R3:非问题关闭 | | LOG-02 | P2 | oneway 静默拒绝无 DFX | R3:非问题关闭 | | LOG-03 | P3 | 客户端 async 用例断言不足 | R2:测试/mock 文件不检视 → 范围豁免 | | LOG-04 | P3 | Mock Reset 语义与真实相反 | R2:同上 → 范围豁免 | | LOG-05 | P3 | 服务端 async 用例每接口仅 2 类 | R2:同上(随判,可复议)→ 范围豁免 | | SEC-05 | P3 | FunctionsRawData 默认拷贝 latent UAF | R3:非问题关闭 | | SEC-06 | P3 | 包装层未直接实例化 InterfaceCallCounter | R3:非问题关闭 | | RES-001 | P3 | DATA_CORRUPTED 整库删重建 | R2:数据库设计无法避免;**R3:非问题关闭** | > **裁决记录**:R2 八条裁决原文见本文件 R2 版及 [refute_log.md](refute_log.md) 附录一;R3 裁决原文:「RES-001,SEC-01(+INP-010),SEC-03,INP-008,LOG-02,SEC-05,SEC-06 非问题关闭」(2026-08-25,门禁复核人)。 --- ## 5. 分维度速览 | 维度 | 结果 | 关键说明 | |---|---|---| | security-scanner | R1 6 项 → **全部关闭**(SEC-01/03/05/06 R3,SEC-02/04 R2) | Core Scan 11 项全覆盖;⑪ IPC 鉴权审查通过:3 个新 code 继承同步版鉴权(:614/:726/:755),鉴权先于解析与落盘;G 类横扫 G14 唯一命中点经裁决关闭;P0 候选均证伪 | | logic-scanner | R1 5 项 → **全部关闭**(LOG-02 R3,LOG-01 R2,LOG-03/04/05 范围豁免) | 客户端 async 与 sync 逐行同构;IDL 尾部追加 ABI 兼容;oneway 顺序性经裁决认定为独立场景无顺序问题 | | input-scanner | R1 8 项 → **跟进 2 项**(INP-011、INP-007,均 P3) | IPC-005/006 鉴权 ✅;INP-009 R2 豁免,INP-003/008/RES-001 关闭,INP-006/010 并入对应项随判关闭 | --- ## 6. 关键发现详情 > 本轮无 P0/P1;现存 2 项 P3 卡片如下,已关闭项的完整卡片见 [refute_log.md](refute_log.md) 与各 scanner 原始产出。 ### [INP-011] UnregisterIntentFunctionsByNamespace 入参零校验 (P3, 跟进中, scanner=input-scanner) - **位置**:cli_tool_framework/services/climgr/src/cli_tool_manager_service.cpp:721-745(服务端透传)、cli_function_data_manager.cpp:449(前缀批删) - **触发路径**:Parcel string(可空、可含 /)→ service :766 无校验直接透传 → manager 以 ns + "/" 前缀 GetEntries 批删;空串前缀 "/" 空匹配返回 ERR_OK 假成功。 - **影响**:空串调用方拿到成功但实际未删任何项,误导调用方状态判断;写入侧 Validate 禁 / 仅兜底新写入,不影响历史数据。 - **证据**:cli_tool_manager_service.cpp:721-745(无入参检查,对比 :763-766 Reset 有 empty 检查)。 - **建议**:补 empty()/含 //长度三检,复用 manager 现成 KeyMatchesNamespace(:263-272)。 ### [INP-007] Validate 未禁 \0/控制字符 (P3, 跟进中, scanner=input-scanner) - **位置**:cli_tool_framework/interfaces/function/src/function_info.cpp:251-300 - **触发路径**:Parcel ReadString 可含内嵌 \0/\r/\n → Validate 仅查空串、/、schema 长度与 JSON 合法性,放行 → Put 入 KVStore;后续日志 c_str() 截断显示。 - **影响**:入库后审计/定界时 namespace 显示被截断误导;\r\n 可伪造日志行(承接 R2 关闭的 SEC-04 过滤诉求,同一修复位置)。 - **证据**:function_info.cpp:251-300(Validate 全量检查项清单,无字符集校验)。 - **建议**:Validate 增加可打印字符白名单,或至少禁 \0/\r/\n。 --- ## 附:交付物清单 | 产出 | 路径 | |---|---| | 本统一报告(Round 3) | skills/codecheck/output/commit-01009615/codecheck_report_cli_tool_framework_20260825.md | | Refute 审查记录(含 R2/R3 裁决附录) | skills/codecheck/output/commit-01009615/refute_log.md | | security-scanner 原始清单 | skills/codecheck/output/commit-01009615/security_raw.md | | logic-scanner 原始清单 | skills/codecheck/output/commit-01009615/logic_raw.md | | input-scanner 原始清单 | skills/codecheck/output/commit-01009615/input_raw.md(以 Excel 同构 Markdown 表代替 Excel) | See merge request: openharmony/ability_ability_runtime!20213 | 17 天前 | |
!20235 merge clireport_ParseInt into master clireport_ParseInt Created-by: Luobniz21 Commit-by: Luobniz21 Merged-by: openharmony_ci Description: **IssueNo**: **Description**: **稳定性自检:** | 自检项 | 自检结果 | | ------------------------------------------------------------ | -------- | | 涉及跨进程调用的相关操作需要抛至主线程或加锁防止并发 | | | 成员变量进行赋值或创建需要排查并发 | | | 谨慎在lambda表达式中使用引用捕获 | | | 谨慎在未经拷贝的情况下使用外部传入的string、C字符串 | | | map\vector\list\set等stl模板类使用时需要排查并发 | | | 谨慎考虑加锁范围 | | | 在IPC通信中谨慎使用同步通信方式 | | | 禁止传递this指针至其他模块或线程(特别是eventhandler任务) | | | 禁止将外部传入的裸指针在内部直接构造智能指针 | | | 禁止多个独立创建的智能指针管理同一地址 | | | 禁止在析构函数中抛异步任务 | | | 禁止js对象在非js线程(例如在IPC线程)创建、使用或销毁 | | | 禁止在对外接口中未经判空直接使用外部传入的指针 | | | 禁止接口返回局部变量引用 | | | 禁止在信号函数中加锁 | | | 禁止在关键流程(SA启动、应用启动等主流程)执行耗时的操作 | | | 禁止将同一个cpp编译在不同的so中 | | **安全编码自检:** | 自检项 | 自检结果 | | -------------------------------------------------------------- | -------- | | 裸指针避免通过隐式转换构造为sptr | | | json对象在取值之前必须先判断类型,避免类型不匹配 | | | 序列化时必须对传入的数组大小进行校验,避免出现超大数组 | | | 避免使用未明确位宽的整型,选择使用int8_t、uint8_t等类型 | | | 外部传入的路径要做规范化校验,对路径中的.、..、../等特殊字符严格校验 | | | 指针变量、表示资源描述符的变量、bool变量必须赋初值 | | | readParcelable获取的对象使用前需要判空 | | | 分配和释放内存的函数需要成对出现 | | | 申请内存后异常退出前需要及时进行内存释放 | | | 内存申请前必须对内存大小进行合法性校验 | | | 内存分配后必须判断是否成功 | | | 禁止使用realloc、alloca函数 | | | 禁止打印文件路径、口令等敏感信息,如有需要,使用private修饰 | | | 禁止打印内存地址 | | | 整数之间运算时必须严格检查,确保不会出现溢出、反转、除0 | | | 禁止对有符号整数进行位操作符运算 | | | 禁止对指针进行逻辑或位运算 | | | 循环次数如果收外部数据控制,需要检验其合法性 | | | 禁止使用内存操作类危险函数,需要使用安全函数 | | | 谨慎使用不可重入函数 | | | 必须检查安全函数的返回值,并进行正确处理 | | | 禁止仅通过TokenType类型判断绕过权限校验 | | **TDD Result**: **XTS Result**: ### 是否已执行L0用例 - [x] 已验证 - [ ] 不涉及。如不涉及,请写明理由 ### AI检视评分(使用本地代码检视skills扫描): See merge request: openharmony/ability_ability_runtime!20235 | 18 天前 |