mirror of
https://github.com/openharmony/multimedia_av_session.git
synced 2026-08-24 18:26:13 -04:00
470347d005
修复AVSession伪造ElementName导致任意指向WantAgent的安全问题 Created-by: devil_red Commit-by: 红袍小恶魔 Merged-by: openharmony_ci Description: ## 问题 三方应用可通过 NDK 接口(OH_AVSession_Create,bundleName/abilityName 为直接字符串参数)或裸 IPC,向 AVSessionServiceStub::HandleCreateSessionInner 传入指向其他应用的 ElementName,入口及 IsParamInvalid 均无归属校验。SA 据此创建指向受害应用的 WantAgent(PendingWant),触发时以 SA 系统身份执行,形成身份冒用/跳转劫持。 详见 #2779 ## 修复内容(按 TMG 评审意见:创建时纠正 elementName,划入兼容范畴,仅影响恶意应用) **AVSessionService::CreateSessionInner** 新增 CorrectElementForThirdPartyCaller: 1. 系统应用/SA 调用方(thirdPartyApp=false)不处理 2. SA 进程内直调(如投播镜像会话)token 为 native,跳过——保护 cast 镜像等合法场景 3. 三方应用(hap)调用方:用调用方 uid 经 BMS 反查真实包名,与传入 elementName 比对;不一致则将 descriptor 的 bundleName 纠正为真实包名、abilityName 纠正为默认入口 ability(GetLaunchWantForBundle);反查失败保留原值(fail-open) 4. **BundleStatusAdapter** 新增 GetDefaultAbilityName,封装 BMS 默认入口 ability 解析 descriptor 在创建时即被纠正,下游展示/跳转/遥测归因全部基于真实身份,无需逐出口修补。 ## UT 新增 CreateSessionInnerCorrectElement001/002:覆盖系统调用方不纠正、非 hap 调用方不纠正两条路径。 ## 兼容性 - 合法应用 element 本就等于真实包名,纠正为 no-op,零行为变化 - anco/投播/系统组件场景不受影响 - 唯一行为变化:传入他人包名的异常/恶意调用,其会话归属被纠正为真实身份(TMG 评审已裁定划入兼容范畴) Close #2779 See merge request: openharmony/multimedia_av_session!3385