已开启
[安全整改] R6 问题单3:缓冲区与内存安全问题整改(32 项修复) #312
[安全整改] R6 问题单3:缓冲区与内存安全问题整改(32 项修复) #312
已开启
wuyike创建于 6 天前
wuyike
6 天前

Closes #260

2026-10-16-R5问题单3_缓冲区与内存安全_修改方案

一、项目基线与会话范围

  • 目标仓库: communication_nearlink_service(20261014 第五轮 nearlink 重扫战役)
  • 扫描轮次: 1016 第五轮,问题单3 缓冲区与内存安全(MedusaReport 244 簇剔除 1015 在案 21 条已知后净新增 223 条,本单 63 条)
  • 当前源码 checkout: fix-r5-problem3-memory-safety(fork wuyike/communication_nearlink_service)
  • 分支: fix-r5-problem3-memory-safety → 上游 master
  • 问题总数: 63 条(高危 x9、中危 x12、低危 x42)
  • 关联 Issue: #260
  • 基线同步: 直接基于 upstream master ea60c21(含扫描 HEAD 3cad27e;两基线间仅 4 文件变更且与本单无交集,63 条逐条复核均仍存在)
  • 当前 commit: 31c44e3(两笔:2d21826 修复 32 项 + 31c44e3 回退问题1/问题9),均含 Signed-off-by(DCO)

回退说明(2026-10-16):问题1/问题9(B-002/B-018,IQ 报文解析长度校验)原修复依赖 dataLen 反映实际报文长度;经确认当前 IQ 上报 dataLen 不准确不可用,消费层逐段偏移校验与校验层通道上限修正(79→316)均在 31c44e3 整体回退恢复原行为,待 dataLen 根因修复后重新立项。本 PR 最终修复 30 项(高危 x7)。

  • 验证状态: 代码审查完成;diff 一致性完成;构建/测试/运行时未执行(见第七节如实标注)

编号说明:下文"问题N"指扫描问题单内部的条目编号(1~63),与仓库 Issue 编号无关。B-xxx 为扫描报告附录 B 簇编号。

信任边界核验:63 条已按"是否跨越信任边界 + 缺陷点前是否已有校验"逐条实证分类——跨边界且前置校验缺失/不足约 34 条(空中对端报文/芯片上报事件/本地 IPC/socket/内核 uevent)、出口泄漏 2 条、进程内防御纵深约 27 条。本 PR 修复 30 项以跨边界可达为主(高危 9 项中 7 项修复、2 项因 dataLen 不可信回退)。

二、处置总账表

编号 等级 文件:行号 问题 处置
问题2 B-003 高危 hid_stm.c:762-768 TypeAndFormatDesc 向 NULL desc 执行 memcpy_s 已修复
问题3 B-007 高危 cm_icb_mgr.c:549-555;dli_cmd.c:1270-1276 accept 路径 1 字节上下文被强转 DLI_ICGCbkParam* 越界读 已修复
问题4 B-008 高危 sle_access_dli.c:577-593、462-481 完成事件回调不校验 cmdRes->size 即读结构体 已修复
问题5 B-013 高危 ssapc_client.c:1005-1010 多值读响应把 2 字节 PDU 头计入可用长度 已修复
问题6 B-014 高危 sm_nego.c:256-258 RecvPairingCfm 在发送失败同步释放 slink 后继续使用(UAF) 已修复
问题7 B-016 高危 sm_passcode.c:161/197/353;sm_password.c:252;sm.c:190 SmSendMessage 失败释放 slink 后 5 处调用方继续使用(UAF 族) 已修复
问题8 B-017 高危 sm_passcode.c:397-404 16B 混淆密码缓冲仅初始化前 4B,12B 栈残留空中下发 已修复
问题11 B-032 中危 nearlink_sle_datatransfer_service.cpp:531-536 socket 长度前缀强转读取+按其大小做最大 50KB VLA 已修复
问题12 B-033 中危 HidHostService.cpp:290-295 HID 报文 size/2 无上限做 VLA 栈分配 已修复
问题13 B-047 中危 nearlink_hid_host_stub.cpp:56-72 SetReport IPC 入口对 report 无长度上限 已修复
问题14 B-048 中危 nearlink_hid_host_stub.cpp:63(同问题13 入口) 同问题13 入口视角(同点闭环) 已修复
问题17 B-076 中危 TwsSharedLibApi.cpp:125-133 解码消息内嵌 dataLen 未与外层缓冲核对即全量拷贝 已修复
问题20 B-088 中危 nlstk_cfgdb.c:236-239 ReadLocalCsCapsCbk 不校验 size 即定长拷贝 已修复
问题21 B-092 中危 dtap_scheduler.c:395-415 ACB 数量 uint16→uint8 截断,256 倍数清零致发送停摆 已修复
问题22 B-100 低危 ani_nearlink_ssap_server.cpp:73 空 vector 取 &value_[0](形式 UB) 已修复
问题25 B-109 低危 qosm_audio_dfx.c:196-200 (int)char 作解码表索引,≥0x80 负下标 已修复
问题26 B-110 低危 ssap_utils.c:112-119(可达入口 ssaps_server.c:1075) UUID 长度>16 时 offset 下溢野指针写(空口可达) 已修复
问题27 B-115 低危 taihe_native_object.cpp:24-28 0x0100U<<idx 在 idx≥32 移位 UB 已修复
问题36 B-161 低危 nearlink_ssap_client_callback_proxy.cpp:310 OnServicesRediscovered 写侧计数无上限 已修复
问题38 B-164 低危 nearlink_ssap_client_stub.cpp:305,334 size_t 写 int32 隐式窄化无上限 已修复
问题40 B-172 低危 ASCService.cpp:1441,1861,1906 系统属性仅判下界即左移/作索引 已修复
问题42 B-175 低危 CcpService.cpp:517,534 CallAttributeInfo 未清零,strlen 读栈残留可外发 已修复
问题45 B-185 低危 ccp_ccs_server.c:370-373 先读 data[0] 后验长度(len==0 越界读) 已修复
问题47 B-190 低危 hid_stm.c:447-455 重复报告句柄覆盖指针泄漏旧缓冲 已修复
问题48 B-192 低危 devd_adv.c:133,161 分片长度截断进 uint8 wire 字段 已修复
问题49 B-193 低危 devd_scan.c:254-266 SetScanFilterCbk 不验 size 即读字段 已修复
问题54 B-207 低危 ssapc_app.c:708 READ_BY_UUID 结果条目数截断 uint8 回绕 已修复
问题58 B-222 低危 dtap.c:454 mps 无符号减法下溢成 ~65529 已修复
问题59 B-224 低危 dtap_trans_basic.c:133;dtap_trans_stream.c:259 缓存上限判断 <= 差 1(64/256 各超 1) 已修复
问题62 B-233 低危 byte_codec.h:31-33 DECODE4BYTE_LITTLE 高字节有符号左移 UB 已修复
问题1 B-002 高危 hadm_parser_iq.c:101-146 IQ 解析忽略 dataLen 越界读(最多约 720B) 不修改(回退——dataLen 当前不准确不可用,长度校验不成立,待根因修复后重新立项)
问题9 B-018 高危 dli_hadm_event.c:23,131-143 IQ 校验层与消费层深度失配 不修改(回退——同一 dataLen 信任问题,随问题1 一并回退)
问题10 B-030 低/中 ASCService.cpp:2900 ASCStatus 部分初始化 不修改(进程内防御纵深)
问题15 B-055 低/中 SleAdapter.cpp:1624 cfgdb 能力回调无长度参数 不修改(契约限制(签名无长度参数,仓内无法加固))
问题16 B-057 低/中 SleProfileConnectManager.cpp:1275 服务指针未判空 不修改(进程内防御纵深)
问题18 B-079 低/中 hadm_user_proc.c:66-79 查重循环遍历 1 元素数组 不修改(进程内防御纵深)
问题19 B-083 低/中 ssaps_server.c:1388 等 更新通知路径 val 未判空(3 处) 不修改(进程内防御纵深)
问题23 B-107 低/中 CcpService.cpp:71 ID 耗尽返回未初始化 不修改(进程内防御纵深)
问题24 B-108 低/中 ssap_client_stack_adapter.cpp:193 单例未判空 不修改(进程内防御纵深)
问题28 B-117 低/中 ani_constructor.cpp:36 x4 出参未判空(4 变体) 不修改(进程内防御纵深)
问题29 B-122 低/中 napi_async_callback.h:63 callbackRef_ 未初始化 不修改(失败路径防御(引擎错误,输入不可驱动))
问题30 B-123 低/中 napi_nearlink_utils.cpp:98 等 valuetype 未初始化 x4 不修改(失败路径防御(引擎错误,输入不可驱动))
问题31 B-125 低/中 napi_nearlink_remote_device.cpp:447 等 argv 未初始化 x4 不修改(失败路径防御(引擎错误,输入不可驱动))
问题32 B-126 低/中 napi_nearlink_ssap_server.cpp:57-73 result 未初始化即返回 不修改(失败路径防御(引擎错误,输入不可驱动))
问题33 B-138 低/中 nearlink_host.h:218 BatteryObserver 缺虚析构 不修改(进程内防御纵深)
问题34 B-140 低/中 nearlink_ssap_descriptor.h:101 moved-from 长度残留 不修改(进程内防御纵深)
问题35 B-158 低/中 SleDliSnoop.cpp:667 128KB 栈数组 不修改(进程内防御纵深)
问题37 B-163 低/中 nearlink_ssap_client_stub.cpp:271 MTU 先截断后校验 不修改(仅影响调用方自身 MTU 语义,无内存安全影响)
问题39 B-171 低/中 ASCDefines.h:384 ASCStatus 无默认初始化器 不修改(进程内防御纵深)
问题41 B-174 低/中 ASCService.cpp:4657 等 三回调 addr 未判空 不修改(进程内防御纵深)
问题43 B-181 低/中 PortService.cpp:195 -2 截断 65534 不修改(进程内防御纵深)
问题44 B-184 低/中 actm_api.c:259 param 未判空 不修改(进程内防御纵深)
问题46 B-189 低/中 dis_server.c:185 重复创建泄漏旧缓冲 不修改(进程内防御纵深)
问题50 B-198 低/中 qosm_trans_channel.c:324 goto 跳过初始化 不修改(进程内防御纵深)
问题51 B-200 低/中 nlstk_ssap_app_client.c:316 uuid 未判空 不修改(进程内防御纵深)
问题52 B-204 低/中 ssap_handle.c:150 memmove 多搬 1 元素 不修改(进程内防御纵深)
问题53 B-206 低/中 ssapc_app.c:74 内部 101 判有效(潜伏) 不修改(进程内防御纵深(重构收益低))
问题55 B-210 低/中 ssaps_service.c:456 descriptorCount 截断 不修改(进程内防御纵深)
问题56 B-211 低/中 sm.c:453 消息长度截断(当前不可触发) 不修改(进程内防御纵深)
问题57 B-219 低/中 dli_layer.c:200 上限判断差 1 不修改(进程内防御纵深)
问题60 B-227 低/中 transport.c:92 params 隐式非空假设 不修改(进程内防御纵深)
问题61 B-229 低/中 sle_crypto.c:188 ECDH double-free(概率 2^-100) 不修改(进程内防御纵深)
问题63 B-239 低/中 tools/ohos-nearlinkControl main.cpp:258 CLI atoi 健壮性 不修改(调试工具噪音(有范围兜底))

对账: 63 = 本 PR 已修复 30 项 + 回退 2 项(问题1/问题9)+ 评审不修改 31 项,无未知或静默丢失项。不修改决策经逐条信任边界核验(跨边界且外部输入可达者优先修复;进程内防御纵深/引擎失败路径/契约限制类本轮不动),完整证据链见任务归档 docs/技术证据.md。

三、本 PR 修复明细(30 项)

问题2 B-003(高危)TypeAndFormatDesc 向 NULL desc 执行 memcpy_s

  • 文件: hid_stm.c:762-768
  • 修复: 对齐 :482-499:先校验 descLen、SDF_MemZalloc 分配后再拷贝
  • 行数: hid_stm.c +4

问题3 B-007(高危)accept 路径 1 字节上下文被强转 DLI_ICGCbkParam* 越界读

  • 文件: cm_icb_mgr.c:549-555;dli_cmd.c:1270-1276
  • 修复: DLI_AcceptICBReq 构造完整 cbkParam(主机序句柄);失败循环补 i < SLE_ICB_MAX_NUM
  • 行数: dli_cmd.c +6/-2;cm_icb_mgr.c +1/-1

问题4 B-008(高危)完成事件回调不校验 cmdRes->size 即读结构体

  • 文件: sle_access_dli.c:577-593、462-481
  • 修复: 两回调入口补 size >= sizeof(结构体) 门控
  • 行数: sle_access_dli.c +4/-2

问题5 B-013(高危)多值读响应把 2 字节 PDU 头计入可用长度

  • 文件: ssapc_client.c:1005-1010
  • 修复: MultiReadRspDecode 传入 len - SSAP_READ_RSP_DATA_OFFSET
  • 行数: ssapc_client.c +2/-1
  • 文件: sm_nego.c:256-258
  • 修复: 保存地址→SendPairingInitInfo→SmFindSLink 重查判空(对齐 SmPkgDispatcher:162 模式);发送函数上抛失败
  • 行数: sm_nego.c +3
  • 文件: sm_passcode.c:161/197/353;sm_password.c:252;sm.c:190
  • 修复: 5 处调用点统一"保存地址→发送→重查判空";PassCodeSendGNodeCfmWithRa/SmSendGNodeDhKey 记录发送失败
  • 行数: sm_passcode.c +12/-2;sm_password.c +3;sm.c +2;sm_dhkey.c +2/-1

问题8 B-017(高危)16B 混淆密码缓冲仅初始化前 4B,12B 栈残留空中下发

  • 文件: sm_passcode.c:397-404
  • 修复: buffM = {0} 全量清零
  • 行数: sm_passcode.c +1

问题11 B-032(中危)socket 长度前缀强转读取+按其大小做最大 50KB VLA

  • 文件: nearlink_sle_datatransfer_service.cpp:531-536
  • 修复: memcpy 读前缀;std::vector 堆分配替代 VLA
  • 行数: datatransfer +4/-4

问题12 B-033(中危)HID 报文 size/2 无上限做 VLA 栈分配

  • 文件: HidHostService.cpp:290-295
  • 修复: len 上限 512(协议上限)+ std::vector;透传显式 uint16_t 转型
  • 行数: HidHostService.cpp +8/-5

问题13 B-047(中危)SetReport IPC 入口对 report 无长度上限

  • 文件: nearlink_hid_host_stub.cpp:56-72
  • 修复: 入口补 ≤1024 字符且偶数校验(与问题12 双保险)
  • 行数: hid_host_stub +4

问题14 B-048(中危)同问题13 入口视角(同点闭环)

  • 文件: nearlink_hid_host_stub.cpp:63(同问题13 入口)
  • 修复: 随问题13 一处闭环(B-033/B-047/B-048 三编号)
  • 行数: 同上

问题17 B-076(中危)解码消息内嵌 dataLen 未与外层缓冲核对即全量拷贝

  • 文件: TwsSharedLibApi.cpp:125-133
  • 修复: 拷贝前校验 dataLen <= dataLen - sizeof(TwsEncodeMsg)
  • 行数: TwsSharedLibApi +2

问题20 B-088(中危)ReadLocalCsCapsCbk 不校验 size 即定长拷贝

  • 文件: nlstk_cfgdb.c:236-239
  • 修复: 补 cmdRes->size >= SLE_MEASURE_LEN
  • 行数: nlstk_cfgdb.c +2/-1

问题21 B-092(中危)ACB 数量 uint16→uint8 截断,256 倍数清零致发送停摆

  • 文件: dtap_scheduler.c:395-415
  • 修复: cbk 侧钳制 ≤255 + DTAP_SetApBufferNum 零值守卫;getter 同步钳制(COLLAB ABI 不动签名)
  • 行数: dtap_scheduler.c +7/-2

问题22 B-100(低危)空 vector 取 &value_[0](形式 UB)

  • 文件: ani_nearlink_ssap_server.cpp:73
  • 修复: 改 .data()(与同仓其余 3 处对齐)
  • 行数: ani_ssap_server +1/-1

问题25 B-109(低危)(int)char 作解码表索引,≥0x80 负下标

  • 文件: qosm_audio_dfx.c:196-200
  • 修复: 4 处下标改 (uint8_t)
  • 行数: qosm_audio_dfx +4/-4

问题26 B-110(低危)UUID 长度>16 时 offset 下溢野指针写(空口可达)

  • 文件: ssap_utils.c:112-119(可达入口 ssaps_server.c:1075)
  • 修复: 函数开头 srcBufLen > SSAP_UUID128_LEN 即拒绝,11 个调用点一处覆盖
  • 行数: ssap_utils.c +4

问题27 B-115(低危)0x0100U<<idx 在 idx≥32 移位 UB

  • 文件: taihe_native_object.cpp:24-28
  • 修复: idx >= 32 返回 false
  • 行数: taihe_native_object +3

问题36 B-161(低危)OnServicesRediscovered 写侧计数无上限

  • 文件: nearlink_ssap_client_callback_proxy.cpp:310
  • 修复: 补 services.size() <= SERVICE_SIZE_MAX(255)(对齐同族 :119)
  • 行数: ssap_client_callback_proxy +2

问题38 B-164(低危)size_t 写 int32 隐式窄化无上限

  • 文件: nearlink_ssap_client_stub.cpp:305,334
  • 修复: 两处显式 static_cast<int32_t> + INT32_MAX 前置检查
  • 行数: ssap_client_stub +8

问题40 B-172(低危)系统属性仅判下界即左移/作索引

  • 文件: ASCService.cpp:1441,1861,1906
  • 修复: bps 位序 <31;采样率/位深限定枚举域 [16KHZ,96KHZ]/[16BIT,32BIT]
  • 行数: ASCService +5/-3

问题42 B-175(低危)CallAttributeInfo 未清零,strlen 读栈残留可外发

  • 文件: CcpService.cpp:517,534
  • 修复: 两处 info {} 值初始化
  • 行数: CcpService +2/-2

问题45 B-185(低危)先读 data[0] 后验长度(len==0 越界读)

  • 文件: ccp_ccs_server.c:370-373
  • 修复: 读取前补 data 非空且 len >= CCP_CALL_COUNT_LEN
  • 行数: ccp_ccs_server +2

问题47 B-190(低危)重复报告句柄覆盖指针泄漏旧缓冲

  • 文件: hid_stm.c:447-455
  • 修复: 覆盖前释放旧 reportInfoValue.data(对齐 :751-755)
  • 行数: hid_stm.c +4

问题48 B-192(低危)分片长度截断进 uint8 wire 字段

  • 文件: devd_adv.c:133,161
  • 修复: sendLen 封顶 UINT8_MAX(一处修两用)
  • 行数: devd_adv +1

问题49 B-193(低危)SetScanFilterCbk 不验 size 即读字段

  • 文件: devd_scan.c:254-266
  • 修复: 补 cmdRes 完整性 + size >= sizeof(DLI_SetScanFilterEvt)
  • 行数: devd_scan +2

问题54 B-207(低危)READ_BY_UUID 结果条目数截断 uint8 回绕

  • 文件: ssapc_app.c:708
  • 修复: size > UINT8_MAX 即报错回调(对齐多句柄路径错误语义)
  • 行数: ssapc_app +5

问题58 B-222(低危)mps 无符号减法下溢成 ~65529

  • 文件: dtap.c:454
  • 修复: 减法前判断,不足取 1
  • 行数: dtap.c +2/-1

问题59 B-224(低危)缓存上限判断 <= 差 1(64/256 各超 1)

  • 文件: dtap_trans_basic.c:133;dtap_trans_stream.c:259
  • 修复: 两处 <= 改 <
  • 行数: basic/stream 各 +1/-1

问题62 B-233(低危)DECODE4BYTE_LITTLE 高字节有符号左移 UB

  • 文件: byte_codec.h:31-33
  • 修复: 最高字节先转 uint32_t 再移位(语义不变)
  • 行数: byte_codec +1/-1

四、回退与不修改(2 + 31 项)说明

  • 回退(2 项,高危): 问题1(B-002)/问题9(B-018)——修复前提是 IQ 上报 dataLen 可信;确认当前不准确后已在 31c44e3 回退两文件改动(hadm_parser_iq.c、dli_hadm_event.c),根因修复后重新立项。
  • 进程内防御纵深(24 项): 问题10/16/18/19/23/24/28/33/34/35/39/41/43/44/46/50/51/52/53/55/56/57/60/61——缺陷点不依赖外部输入可达(判空一致性、moved-from 语义、隐式不变量、理论截断等),修复价值为防御纵深,本轮不夹带以保持安全 PR 聚焦。其中问题52(句柄合并 memmove 多 1 元素)与问题61(概率 2^-100 的 double-free 形状)建议后续单独跟进。
  • napi 引擎失败路径防御(4 项): 问题29/30/31/32——缺陷触发条件是 napi 引擎自身调用失败,攻击者无法用输入值驱动,与防御纵深同性质。
  • 契约限制(1 项): 问题15——cfgdb 能力回调签名无长度参数,有效加固需动跨仓芯片适配契约,仓内仅能加注释,本轮放弃。
  • 仅影响调用方自身语义(1 项): 问题37——MTU 截断回绕仅影响调用方自身连接参数,appId 归属校验前置,无内存安全影响。
  • 调试工具噪音(1 项): 问题63——CLI 工具 atoi,报告自证无可利用路径且有范围兜底。

五、修改文件表(32 文件 +123/-38)

| services/stack/src/cp/bsl/sle/servm/ssap/src/ssap_utils.c | +4/-0 | 问题26 |
| services/stack/src/cp/bal/profile/hid/src/hid_stm.c | +8/-0 | 问题2、问题47 |
| services/service/src/hid/HidHostService.cpp | +8/-5 | 问题12 |
| services/ipc/src/nearlink_hid_host_stub.cpp | +6/-0 | 问题13、问题14 |
| services/stack/src/dli/cmd/src/dli_cmd.c | +6/-2 | 问题3 |
| services/stack/src/cp/bsl/sle/cm/icb/src/cm_icb_mgr.c | +1/-1 | 问题3 |
| services/stack/src/cp/bsl/sle/cm/link/src/sle_access_dli.c | +4/-2 | 问题4 |
| services/stack/src/cp/bsl/sle/servm/ssap/src/ssapc_client.c | +2/-1 | 问题5 |
| services/stack/src/cp/bsl/sle/sm/src/sm_nego.c | +6/-1 | 问题6 |
| services/stack/src/cp/bsl/sle/sm/src/sm_passcode.c | +12/-2 | 问题7、问题8 |
| services/stack/src/cp/bsl/sle/sm/src/sm_password.c | +3/-0 | 问题7 |
| services/stack/src/cp/bsl/sle/sm/src/sm.c | +2/-0 | 问题7 |
| services/stack/src/cp/bsl/sle/sm/src/sm_dhkey.c | +2/-1 | 问题7 |
| services/service/src/datatransfer/nearlink_sle_datatransfer_service.cpp | +4/-4 | 问题11 |
| services/service/src/tws/TwsSharedLibApi.cpp | +2/-0 | 问题17 |
| services/stack/src/cp/nlstkfwk/cfgdb/src/nlstk_cfgdb.c | +2/-1 | 问题20 |
| services/stack/src/dp/dtap/src/dtap_scheduler.c | +7/-2 | 问题21 |
| frameworks/ets/taihe/nearlink_ssap/src/ani_nearlink_ssap_server.cpp | +1/-1 | 问题22 |
| services/stack/src/cp/bsl/sle/qosm/autorate/src/qosm_audio_dfx.c | +4/-4 | 问题25 |
| frameworks/ets/taihe/common/taihe_native_object.cpp | +3/-0 | 问题27 |
| services/ipc/src/nearlink_ssap_client_callback_proxy.cpp | +2/-0 | 问题36 |
| services/ipc/src/nearlink_ssap_client_stub.cpp | +12/-2 | 问题38(含 #include ) |
| services/service/src/asc/ASCService.cpp | +5/-3 | 问题40 |
| services/service/src/ccp/CcpService.cpp | +2/-2 | 问题42 |
| services/stack/src/cp/bal/audioctl/cctl/src/ccp_ccs_server.c | +2/-0 | 问题45 |
| services/stack/src/cp/bsl/sle/devd/src/devd_adv.c | +1/-0 | 问题48 |
| services/stack/src/cp/bsl/sle/devd/src/devd_scan.c | +2/-0 | 问题49 |
| services/stack/src/cp/bsl/sle/servm/ssap/src/ssapc_app.c | +5/-0 | 问题54 |
| services/stack/src/dp/dtap/src/dtap.c | +2/-1 | 问题58 |
| services/stack/src/dp/dtap/src/dtap_trans_basic.c | +1/-1 | 问题59 |
| services/stack/src/dp/dtap/src/dtap_trans_stream.c | +1/-1 | 问题59 |
| services/stack/src/utils/include/byte_codec.h | +1/-1 | 问题62 |

六、典型修复示例

问题26(空口可达越界写,本 PR 最高优先): SSAPS_ReadByUuidReqHandle(ssaps_server.c:1075)将 uuidSize = PDU长度 - 偏移 直接传入 SSAP_GetUuidFromPktBuf,全仓 11 个调用点中唯独此点无 ∈{2,16} 校验,对端构造长 PDU 即触发 offset = 16 - srcBufLen 下溢野指针写。修复在函数入口挡住 srcBufLen > 16,一处覆盖全部调用点。

问题6/7(UAF 族): SM 配对链路 6 处采用仓内既有 SmPkgDispatcher:162 的"发送后重查 slink"模式,不改变状态机失败清理语义。

七、验证声明

层次 状态 证据
代码审查 通过 63 项问题单与源码逐条复核(ea60c21);30 项修复逐 hunk 行级复核;信任边界与上游校验状态逐条实证(含可达入口 ssaps_server.c:1075 的新发现)
代码风格 通过 新增行最长 120 字符(不超限);判空/日志宏与各文件既有写法一致
Diff 一致性 通过 63 项总账 = 已修复 30 + 回退 2 + 不修改 31;git diff upstream/master --numstat 32 文件 +123/-38 与两笔提交一致
冲突处理 通过 基线即 upstream master 最新 ea60c21,无 rebase
构建 未运行 本环境未配置 OpenHarmony nearlink 构建链
测试 未运行 无针对本改动的单元/集成测试执行
运行时或 POC 未运行 未做真机/模拟器复现

过程审计(OhYeah)
  • task: 1016第五轮安全问题(archive_id: 20261015-wyk-01)
  • issue: #260(source=user)
  • 分析方案: docs/技术证据.md(含信任边界矩阵与逐条决策记录)
  • generated by OhYeah 0.3.3
likedislike
合并受阻
Wwuyike
6 天前 关联了issue:[安全整改] 第五轮问题单3:缓冲区与内存安全问题(63 项净新增)
openharmony_ciopenharmony_ci成员
6 天前 添加了label:waiting_on_author
openharmony_ci
openharmony_ci成员
6 天前 评论:

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

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

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

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

当前检测到如下Commits的Signed-off-by邮箱未签署DCO协议:


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 Signed-off-by emails in the following commits have not signed the DCO:

likedislike
openharmony_ciopenharmony_ci成员
6 天前 添加了label:dco检查失败
Wwuyike
2 天前 推送  1 个提交:31c44e33-fix(security): 回退 IQ 解析长度校验(dataLen 当前不准确不可用)
Wwuyike
2 天前 修改标题为 “[安全整改] R5 问题单3:缓冲区与内存安全问题整改(30 项修复)”,原标题为“[安全整改] R5 问题单3:缓冲区与内存安全问题整改(32 项修复)”
Wwuyike
2 天前 修改了pull request 的描述
Wwuyike
2 天前 修改标题为 “[安全整改] R6 问题单3:缓冲区与内存安全问题整改(32 项修复)”,原标题为“[安全整改] R5 问题单3:缓冲区与内存安全问题整改(30 项修复)”
Wwuyike
2 天前 推送  1 个提交:9884a01c-style: 按检视意见移除 dtap/dtap_scheduler 新增行内注释(代码不变)