Skip to content

Security: felixchaos/EhViewer-Apple

SECURITY.md

安全策略

报告漏洞

请不要通过公开 issue 报告安全问题。

请使用 GitHub 的私密漏洞报告——报告只有维护者可见,修复发布前不会公开。

报告时请尽量包含:

  • 受影响的版本与平台(iOS / iPadOS / macOS)
  • 复现步骤,或一段能说明问题的最小代码
  • 你认为的影响范围

请不要在报告里附带真实的账号 Cookie、ipb_pass_hash 或设备标识。 如果复现必须用到,请说明如何自行构造,而不是把你自己的凭据贴出来。

响应节奏:初次回复通常在 7 天内。这是个人维护的项目,没有 SLA;如果超过两周没有回复,可以在原报告下追问。

支持的版本

只维护最新发布版。旧版本不做安全回溯。

版本 状态
1.3.x 支持
1.2.x 及更早 不再维护

已知的安全特性与限制

以下不是漏洞,而是当前设计的既定事实,列在这里以便你评估风险。如果你的威胁模型不接受其中某一条,请不要使用本项目。

登录凭据存放在钥匙串

登录状态由 E-Hentai 的会话 Cookie(ipb_member_id、ipb_pass_hash、igneous)承载。ipb_pass_hash 是长期凭据,泄露等同于账号被接管。

这三个 Cookie 的持久副本存在系统钥匙串里,属性为 kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly:

  • 设备开机后解锁过一次才可读;
  • 不进 iCloud 钥匙串,也不随备份迁移到别的设备;
  • 退出登录会一并删除。

HTTPCookieStorage 里仍然有一份,但被写成会话 Cookie(discard = TRUE),只存在于内存,不写进容器里的 Cookies.binarycookies。进程退出即消失,下次启动从钥匙串恢复。

仍然存在的风险:进程运行期间凭据在内存中;能在设备解锁状态下执行代码的攻击者(越狱、调试器附加)仍可读取钥匙串条目。macOS 版未启用沙盒,见下条。

缓解措施:不要在不受你控制的设备上登录;退出登录会同时清除 Cookie 与钥匙串条目。

macOS 版本未启用 App 沙盒

Mac 版以 com.apple.security.app-sandbox = false 构建。它启用了 Hardened Runtime(公证的前提),但没有沙盒限制,因此以你的用户权限运行,可访问该权限下的任意文件。

这是为了让下载目录可以自由选择而做的取舍。启用沙盒需要改用安全作用域书签管理下载路径,属于计划内但尚未完成的工作。

分发的 .dmg 经 Apple 公证且票据已植入,可校验来源;但公证只保证「不含已知恶意代码」,不等于沙盒隔离。

网络行为

  • 所有请求走 HTTPS。内置 IP 表与自定义 hosts 用于绕过 DNS 污染,会跳过系统 DNS;DNS over HTTPS 为可选项。
  • 域名前置回退会在直连失败时改变 SNI 与 Host 的对应关系。这是为了可达性,代价是流量特征更容易被识别。
  • 图片经 H@H 节点分发,节点由服务端指派,失败时自动切换。
  • 不含任何埋点、分析或崩溃上报 SDK,不向第三方发送数据。除 E-Hentai / ExHentai 及其 H@H 节点外,不主动连接其他服务。

关于自签安装

从 Releases 下载的 .ipa 由维护者的 Apple Distribution 证书签名,可用 codesign -dv 校验签名主体为 Apple Distribution: Felix Chaos (HWZEUNLCY6)。

用 AltStore / Sideloadly 重签后,原签名会被完全剥离并替换为你自己的证书——此后签名只能证明「是你签的」,无法再用于校验来源。请务必从本仓库的 Releases 页面下载,不要使用第三方转发的安装包。

不在范围内

  • E-Hentai / ExHentai 服务端自身的问题——请向站方反馈
  • 需要物理接触已解锁设备才能利用的问题
  • 用户主动安装第三方重签版本导致的问题
  • 越狱设备上的问题

There aren't any published security advisories