ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Titanium Browser 安全加固实战:Scheme 守卫、UAF 漏洞修复与离线扩展安装防护机制解析

Titanium Browser 安全加固实战:Scheme 守卫、UAF 漏洞修复与离线扩展安装防护机制解析 Titanium Browser 安全加固实战Scheme 守卫、UAF 漏洞修复与离线扩展安装防护机制解析【免费下载链接】android-titanium-browserSecure open-source Android browser with support for extensions项目地址: https://gitcode.com/gh_mirrors/an/android-titanium-browserTitanium Browser 是一款安全、完全开源的 Android 浏览器基于 Chromium 与 Vanadium 构建并原生支持扩展。它通过在构建阶段注入大量定制补丁Scheme 守卫、UAF 漏洞修复、离线扩展安装防护等在开源浏览器中提供了少见的深度安全加固方案。本文带你从三个实战角度解析这套安全机制的工作原理。 加固总览补丁是如何注入的Titanium Browser 的加固并非黑盒。整个项目通过一条清晰的流水线工作Chromium 源码 → Vanadium 通用补丁 → 额外定制补丁 → GN 构建配置 (args.gn) → 签名发布核心定制补丁全部由 patch.sh 脚本驱动使用sed精准修改 Chromium 源码构建参数集中在 args.gn其中use_rtti false禁用 RTTI、dcheck_always_on false等配置从编译层面收敛攻击面V8 层面开启v8_drumbrake_bounds_checks true为 JavaScript 引擎加上边界检查保险丝签名发布工具位于 common.sh保证每次 APK/AAB 都用同一密钥签名可被验证。 所有加固补丁都集中且可读任何人都可以逐行审计——这正是开源安全的核心价值。️ Scheme 守卫拦截恶意 Intent 的第一道门为什么需要 Scheme 守卫Android 上任何应用都可以发送ACTION_VIEWIntent 唤起浏览器。如果浏览器不加筛选地处理 Intent 携带的 URL恶意应用就能构造javascript:、自定义 Scheme 或内部调试页面链接诱导甚至欺骗浏览器执行非预期行为。这就是典型的 Intent 滥用攻击面。实现方式只放行网络 URL方案非常简洁——在 patch.sh#L23-L25 中补丁修改了LaunchIntentDispatcherHooks.java的三处入口常规启动Intent 的 URL 通过android.webkit.URLUtil.isNetworkUrl()校验非http(s)链接直接拒绝URL 为空判断urlFromIntent null的判断同样升级为网络 URL 校验Custom Tab 入口maybeModifyCustomTabIntents开头增加同一守卫防止从其他应用以自定义标签页方式绕过。一句话概括只有真正的网络地址才能进入浏览器其余一律原样返回、不做处理。这是成本极低、收益极高的安全模式。 UAF 漏洞修复让悬垂指针无处可查Use-After-FreeUAF释放后使用是浏览器内核中最危险的一类内存漏洞之一——程序访问了已被释放的对象轻则崩溃重则可被利用执行任意代码。Titanium Browser 针对隐身Incognito/OTR场景修复了两处 UAF 问题修复一tabs API 的空 tab_list 越界crbug.com/431004500在 patch.sh#L153-L154 中补丁向tabs_api.cc的标签遍历循环注入了一个空指针守卫if (!tab_list) { continue; }扩展调用 tabs API 枚举标签页时若 tab_list 已被释放原代码会直接解引用触发 UAF现在会安全跳过这一轮。修复二禁止销毁仍有活跃内容的隐身配置crbug.com/40274462这是更精妙的一处修复patch.sh#L156-L162分三步协同为WebContents新增辅助函数HasLiveWebContentsForBrowserContext()遍历所有 WebContents 检查指定配置BrowserContext下是否还有活着的内容在ProfileDestroyer::DestroyOTRProfileWhenAppropriateWithTimeout()的销毁流程中插入前置检查——只要隐身配置下还有存活的 WebContents就立即中止销毁由此避免了配置先被释放、页面稍后才访问的经典 UAF 竞态窗口。本质上这是一种引用存在性防护宁可推迟销毁也不允许在仍有使用者时回收对象。 离线扩展安装防护白名单 内置扩展双重机制Titanium Browser 支持 Manifest V2 扩展patch.sh#L70-L73 放开了 MV2 限制同时为商店外安装设计了分层防护。第一层可信域名白名单patch.sh#L76 修改了download_crx_util.cc中的OffStoreInstallAllowedByPrefs()只有以下情况才放行非商店扩展安装请求发起方 Scheme 为chrome-extension扩展自身的可信请求URL 或来源页属于白名单域名addons.opera.com、operacdn.com、microsoftedge.microsoft.com、edge.microsoft.com、delivery.mp.microsoft.com。这意味着随机网站顺手推送的 CRX 下载会被直接拦截。第二层内置扩展的离线安装对于随 APK 打包的扩展项目用资源 启动时暂存的方式实现完全离线可用extensions/bundle.py 是离线打包脚本下载 CRX 后解析 CRX3 头部的 varint 字段提取出扩展 ID 与版本号登记到bundled.json索引并自动更新 extensions/BUILD.gn 的renaming_sources/renaming_destinations列表将 CRX 声明为 APK 资源运行时extensions/stage_bundled_extensions.inc 中的StageBundledExtensions()从 APK assets 读取bundled.json逐项校验路径合法性拒绝绝对路径与..父目录引用防路径穿越再内存映射读取 CRX 写入用户数据目录最后把索引合并进外部扩展偏好patch.sh#L15-L17 则把该暂存流程挂钩到external_pref_loader.cc并在extension_safety_check_utils.cc中对kExternalPref来源的扩展做专门处理。 小结这套加固方案值得借鉴的地方机制防护目标关键位置Scheme 守卫Intent 滥用 / 非网络 URL 注入patch.sh#L23-L25UAF 修复tabs扩展 API 空指针解引用patch.sh#L153-L154UAF 修复OTR 销毁隐身配置销毁竞态patch.sh#L156-L162商店外安装白名单任意网站诱导安装 CRXpatch.sh#L76内置扩展离线暂存路径穿越 / 离线可信安装extensions/stage_bundled_extensions.inc构建期收敛RTTI、调试断言、V8 边界检查args.gn如果你想完整体验或审计这套安全机制可以克隆仓库自行构建git clone https://gitcode.com/gh_mirrors/an/android-titanium-browser安全浏览器的核心竞争力不在于看起来安全而在于每一条防护都可被逐行审查、复现与验证——Titanium Browser 用补丁驱动的透明工程方式给出了一个很好的范本。【免费下载链接】android-titanium-browserSecure open-source Android browser with support for extensions项目地址: https://gitcode.com/gh_mirrors/an/android-titanium-browser创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表