已开启
安全整改:问题单3 缓冲区与内存安全 5 项 + 问题单6 确认真实缺陷 6 条(SM/DTAP/DIS/RSS) #311
安全整改:问题单3 缓冲区与内存安全 5 项 + 问题单6 确认真实缺陷 6 条(SM/DTAP/DIS/RSS) #311
已开启
wuyike创建于 7 天前
wuyike
7 天前

安全整改:问题单3(缓冲区与内存安全 5 项)+ 问题单6(确认真实未修复缺陷 6 条)

第一批|问题单3《缓冲区与内存安全》:对总账 18 条基于 master(3cad27e)逐条复核,确认仍存在并修复 5 条;其余 13 条:8 条已被上游修复覆盖(f549848 / 7b388fc / 91b4439 / sptr 改造)、2 条复核不成立、1 条低危残留不动、1 条(问题44 McpServerServiceManager 裸 new)经维护者澄清为既定所有权设计已撤销(revert 3bf3817)、1 条(问题49 SM 随机数静默失败)确认真实移交独立 issue #270 专人修复(revert 3b475b2)。

第二批|问题单6《确认真实未修复缺陷》:问题单5(35 条)经 2026-10-20 对 master(aa9b4c5c,本 PR 已合入该基线)逐行复核后的净剩 9 条,修复 6 条(高危 x1、中危 x2、低危 x3);3 条按维护者决策不修改(问题2 EDM 禁止列表反转——fail-closed 过度阻断非越权;问题5 DLI 扩展包装器 return 0——开闭源解耦既定设计;问题6 HidHostSetReport IPC 字段数不匹配——功能缺陷非安全问题)。问题3/4 同代码点一次提交双编号关闭。

本 PR 净改动 11 文件 +59/-16。

第一批修复清单(问题单3,5 项)

commit 总账编号 文件 修复内容
01435e3 20260913-0053(问题4) TwsSharedLibApi.cpp uint16_t encodeLen = sizeof(TwsEncodeMsg) + serviceDataLen_ 大长度回绕小分配后大拷贝;补 ≤ UINT16_MAX − sizeof(头) 前置校验
33508a4 20260806-0048 nlstk_devd_api.c scanRspDataLen 无上界;补与广播数据对称的 DEFAULT_MAX_ADV_DATA_LEN 上界
04aab33 20260806-0049 devd_scan_manager.c ReportCbk 在 g_scanStm==NULL 早退路径泄漏报告(DLI 事件线程与栈反初始化竞态窗口,NULL 检查为原代码既有);补 FreeAdvResult
3082b54 20260806-0063 dli_layer.c 命令超时 timeoutCallback==NULL 路径节点泄漏;补 DLI_CmdNodeDestroy
4303891 20260913-0065(问题10) dtap_scheduler.c 两处按运行时分片数定长 VLA 栈溢出风险;改堆上指针数组全出口配对释放(桩化自检:3 条出口路径断言通过)

第二批修复清单(问题单6,6 条 / 5 代码点)

commit 总账编号 文件 修复内容
71dc6c69 20260913-0191(高危) sm_nego.c 配对确认报文 codeAlgoCap 未与本地协商值比对即被对端覆盖(算法降级/零密钥材料/下溢 0xFF 送底层);补 memcmp 校验,不一致按既有 SM_INTERNAL_ERROR 终止
af8835d0 20260913-0129 + 20260913-0222(中危+低危) nearlink_device_manager.cpp 随机假名 MAC 用时钟种子 mt19937_64,隐私随机化可预测;种子改 std::random_device(对齐仓内 SleUtils 写法)——双编号一次关闭
00993e76 20260913-0235(低危) dtap_trans_stream.c 重排任务空表时 SDF_DListLast 哨兵强转读相邻内存污染 maxExpectedSeq(安全宏空表非 NULL,判空失效);补 SDF_DListIsEmpty 判空 + DTAP_GetNextFrameSeq 回绕安全
10f0ae66 + 4260a94e 20260913-0358(低危) dis_server.c 7 次 ret += 累加被最后一步覆盖,前序 malloc 失败被吞仍返回 SUCCESS;改每步判错即返(调用方已有失败清理)
44b31102 20260913-0352(低危) nearlink_freeze_utils.cpp + ssap_client_service.cpp 冻结计数未命中无条件 Insert(1):非连接首见抬高基准致断连上报永久失效——仅 CONNECT 建基准,其余首见放行上报;另修 client 侧 "Connect"/"CONNECT" 大小写不匹配使连接走扣数分支

不修与移交说明

  • 问题单6 问题2 / 20260913-0102(EDM 禁止列表检查反转):fail-closed 过度阻断(配置任一策略即全部连接被误拒),无越权放行;经维护者确认非安全问题,不修改(曾提交 8541887a,revert 81688715)。
  • 问题单6 问题5 / 20260913-0146(DLI 扩展包装器 return 0):开闭源解耦既定设计——无插件设备应视为成功(曾提交 dcf50186,revert 8d1bedd4)。
  • 问题单6 问题6 / 20260913-0202(HidHostSetReport IPC 字段数不匹配):功能缺陷(非安全问题),按维护者决策不修改(曾提交 794ced63,revert 4f3c3e33)。
  • 问题单3 问题44 / 20260913-0139:维护者澄清工厂接口刻意用裸 new 交调用方控制生命周期,撤销不修(revert 3bf3817)。
  • 问题单3 问题49 / 20260913-0144:确认真实,移交 issue #270 专人修复(本 PR revert 3b475b2)。
  • 同根因互链:20260806-0040 与 20260913-0062(ccp_ccs_server.c 和溢出)已由 91b4439 覆盖;20260913-0106/0109(bas_stm)已由 f549848/7b388fc 覆盖;20260806-0061(SSAP_WriteCmd)已由 91b4439 覆盖。

验证情况(如实标注)

Closes #262

likedislike
合并受阻
Wwuyike
7 天前 关联了issue:[问题单3] 缓冲区与内存安全扫描问题整改
openharmony_ciopenharmony_ci成员
7 天前 添加了label:waiting_on_author
openharmony_ci
openharmony_ci成员
7 天前 评论:

感谢提交 Pull Requests !此PR未通过DCO校验。
校验失败可能原因:

1. 未签署“DCO协议”(开发者原创声明协议),在线签署、查看签署状态。

2. Commits 中未包含 Signed-off-by信息,参考FAQ处理。

修复上述问题后,在PR的评论框输入“check dco” ,单击”评论”,系统将再次进行DCO校验。

当前检测到如下Commits 未包含Signed-off-by信息:


Thanks for submitting a pull request. This pull request has not passed the DCO check.
Possible causes:

1. You have not signed the Developer Certificate of Origin (DCO). Sign the DCO and check DCO status.

2. The commits do not contain the Signed-off-by information. To resolve this issue, see FAQs.

After resolving the preceding issues, enter check dco in the comment box of this pull request and click Comment. The system will check DCO status again.

The following commits do not contain the Signed-off-by information:

likedislike
openharmony_ciopenharmony_ci成员
7 天前 添加了label:dco检查失败
此处折叠了20条事件消息 查看更多
Wwuyike
2 天前 修改了pull request 的描述