zhangmengxuan
zhangmengxuan
25 天前

相关的Issue

原因(目的、解决的问题等)

描述(做了什么,变更了什么)

安全及低级编码自检

测试用例(新增、改动、可能影响的功能)

likedislike
合并受阻
zhangchuang
zhangchuang成员1 天前进行代码检视1
services/cameraservice/sinkservice/src/distributedcameramgr/lite/dcamera_sink_controller.cpp
@@ -0,0 +585,4 @@
585+ dmSrcCaller.accountId = accountId_;
586+ dmSrcCaller.pkgName = DCAMERA_PKG_NAME;
587+ dmSrcCaller.networkId = srcDevId_;
588+ dmSrcCaller.userId = userId_;
zhangchuang
zhangchuang1 天前评论:

【安全检视意见|自动扫描】【中危】认证与授权绕过
lite sink 的 CheckAclRight 中,DmAccessCaller 的身份字段(accountId/userId/tokenId/networkId)全部取自对端 JSON 下发的 capture 命令(HandleReceivedData 里 sceneMode_/userId_/tokenId_/accountId_ 直接来自 captureInfoCmd),本端无任何绑定或一致性校验。恶意对端可自报任意 userId/tokenId/accountId 组合通过 ACL 判定,属身份伪造面(与 standard 侧同源问题在 lite 上新增攻击面)。
建议:sink 侧 ACL 判定身份应取自本端可验证来源(如会话绑定信息/设备管理侧返回的对端可信身份),对 JSON 下发身份仅作参考并做交叉校验。

由 openharmony-security-codescan 自动扫描生成,仅供参考;若为误报请回复说明,感谢。

likedislike
zhangchuang
zhangchuang成员1 天前进行代码检视1
services/cameraservice/sinkservice/src/distributedcameramgr/lite/dcamera_sink_controller.cpp
@@ -0,0 +553,4 @@
553+ 
554+bool DCameraSinkController::CheckAclRight()
555+{
556+ if (userId_ == -1) {
zhangchuang
zhangchuang1 天前评论:

【安全检视意见|自动扫描】【中危】认证与授权绕过
CheckAclRight 在 userId_ == -1 时直接 return true(版本兼容分支)。而 DCameraCaptureInfoCmd::Unmarshal 对缺失/非法的 userId 字段恰好置为 -1,即对端只需在 capture JSON 中不携带 userId 字段,即可完全跳过 ACL 校验并启动取流,认证字段缺失时默认放行(fail-open)。
建议:兼容分支应结合版本协商结果或其他可信条件限制放行范围(如仅旧版本对端),或将缺失 userId 的请求默认拒绝(fail-closed),并在协议中强制该字段。

由 openharmony-security-codescan 自动扫描生成,仅供参考;若为误报请回复说明,感谢。

likedislike
zhangchuang
zhangchuang成员1 天前进行代码检视1
services/channel/src/lite/dcamera_softbus_adapter.cpp
@@ -0,0 +175,4 @@
175+{
176+ DHLOGI("create socket server start, mySessionName: %{public}s,peerSessionName: %{public}s",
177+ GetAnonyString(mySessionName).c_str(), GetAnonyString(peerSessionName).c_str());
178+ DHLOGI("zmx, mySessionName: %{public}s,peerSessionName: %{public}s",
zhangchuang
zhangchuang1 天前评论:

【安全检视意见|自动扫描】【低危】敏感信息保护
两处带 "zmx" 前缀的调试日志将 mySessionName/peerSessionName 以 %{public}s 明文输出,而同函数其他日志均使用 GetAnonyString 匿名化,属调试代码遗留。会话名含设备标识相关信息,明文打印绕过了既有的匿名化基线。
建议:删除该两处调试日志,或改为 GetAnonyString 输出。

由 openharmony-security-codescan 自动扫描生成,仅供参考;若为误报请回复说明,感谢。

likedislike
zhangchuang
zhangchuang成员1 天前进行代码检视1
bundle.json
@@ -22,7 +22,8 @@
2222 "distributed_camera_open_stabile"
2323 ],
2424 "adapted_system_type": [
25- "standard"
25+ "standard",
26+ "small"
2627 ],
2728 "rom": "5120KB",
2829 "ram": "66560KB",
@@ -59,7 +60,8 @@
5960 "access_token",
6061 "av_codec",
6162 "os_account",
62- "sensor"
63+ "sensor",
64+ "hilog_lite"
6365 ]
6466 },
6567 "build": {
@@ -70,6 +72,7 @@
7072 "//foundation/distributedhardware/distributed_camera/services/cameraservice/cameraoperator/client:distributed_camera_client",
7173 "//foundation/distributedhardware/distributed_camera/services/cameraservice/cameraoperator/handler:distributed_camera_handler",
7274 "//foundation/distributedhardware/distributed_camera/services/cameraservice/sinkservice:distributed_camera_sink",
75+ "//foundation/distributedhardware/distributed_camera/services/cameraservice/sinkservice/test/lite_host:dcamera_sink_host",
zhangchuang
zhangchuang1 天前评论:

【安全检视意见|自动扫描】【低危】测试程序暴露
test/lite_host 下的 dcamera_sink_host 宿主可执行程序加入正式 components 列表,BUILD.gn 中 ohos_executable 未显式设置 install_enable = false(默认安装),将随 lite 产线镜像默认部署。该程序启动分布式相机 sink 全链路(含远程取流控制面),部署位置与命名(test/)不符且无安装开关控制,存在被误编入定制版本的风险。
建议:若为功能必需组件,移出 test/ 目录并按正式组件管理;若仅调试用途,显式设置 install_enable = false。

由 openharmony-security-codescan 自动扫描生成,仅供参考;若为误报请回复说明,感谢。

likedislike