跳到正文
Hacker News· rzy·· 6 天前AI 评分20

Okular 沙箱化 MuPDF 后端 okular-mupdf-ng 发布 Beta 版

Show HN: Make Okular safer with a sandboxed MuPDF backend

AI 导读

okular-mupdf-ng 为 Okular 提供基于 MuPDF 的安全快速后端,将文档渲染移入隔离加固的 worker 进程,支持 PDF、ePUB、MOBI,并借助 Landlock、Seccomp、命名空间和资源限制实现沙箱隔离。

正文 · AI 翻译

Okular 24.12+ GitHub license GitHub Workflow Status Github Release

基于 MuPDF 的 Okular 安全快速后端。文档渲染被移至一个隔离且加固的工作进程。这降低了 MuPDF 漏洞的影响,同时保持 Okular 桌面集成的无缝性。支持 PDF、ePUB 和 MOBI 格式。

重要

此项目处于测试阶段,尚不稳定。请参阅功能成熟度矩阵了解各功能的成熟度和测试覆盖情况。如果遇到任何问题,请通过 Github Issues 报告。如果您正在处理重要的 PDF,请改用 Okular 自带的官方 PDF 后端(Poppler 生成器)。

Screenshot

安装

请参阅 INSTALL.md 了解预构建包、构建要求以及从源代码构建的说明。


动机

Okular 是一款出色的软件:它功能丰富,还可通过灵活的插件系统进行扩展。然而,也有一些限制因素阻碍了它的发展。本插件解决了当前 Okular 后端的以下问题,希望能使其更加完善:

  • PDF 是一种复杂的格式,不应在 Okular 的内存空间中不受限制地解析和渲染。
  • 使用 Poppler 的 PDF 后端功能丰富,但在处理大型 PDF 时速度缓慢。这是 Poppler 的一个已知弱点。
  • 默认 ePUB 和 MOBI 后端的渲染质量很差,而且即使在高端的 CPU 上渲染速度也极其缓慢。

架构

文档引擎运行在一个隔离的工作进程中,可能不安全的文档在此进行解析和渲染。请参阅 ARCHITECTURE.md 了解组件职责、IPC、共享渲染缓冲区、沙箱、缓存以及源代码树布局。


功能对比

功能类别 能力 okular-mupdf-ng Okular 官方后端
安全与隔离 沙箱化进程外工作进程(Landlock、Seccomp、命名空间、资源限制) ✓ ✗(进程内执行)
格式 PDF、ePUB、MOBI ✓ ✓
ePUB 自定义 自定义 CSS、页面尺寸 ✓ ✗
ePUB/MOBI 导出 将 ePUB/MOBI 导出为 PDF ✓(通过 MuPDF 渲染) ✓(基础功能,通过文档打印)
PDF 表单 AcroForm 文本输入、复选框、单选按钮、选择框和按钮 ✓(AcroForm;仅检测 XFA) ✓(AcroForm;仅检测 XFA)
PDF 表单 JavaScript 计算和按钮/字段事件操作 ✓(MuPDF/MuJS 在沙箱化工作进程中执行;实验性,需选择启用) ✓(Poppler 将脚本传递给 Okular,由其在 QJSEngine 中执行)
签名 验证和创建(NSS 加密) ✓ ✓(外加 GPG)
证书管理器 NSS 证书管理器;生成 RSA 和 ECDSA P-256 签名证书 ✓ ✗
注释 文本、高亮、线条、形状、墨迹、图章、插入符 ✓ ✓(外加声音、影片和文件附件注释)
注释导出 将 PDF 注释导出为 XFDF ✓ ✗
扁平化 PDF 导出 将注释和表单字段烘焙到 PDF 页面内容中 ✓ ✗
文档工具 文本搜索、大纲/目录、链接、字体、元数据、嵌入文件 ✓ ✓
PDF 启发式大纲 为没有嵌入大纲的 PDF 生成大纲 ✓ ✗
打印与导出 打印与导出 ✓ ✓
PDF 图层 在图层侧边栏中切换可选内容 ✓ ✓
OCR 内置 Tesseract 页面 OCR 引擎 ✓ ✗

限制

  • MuPDF 的 ePUB 和 MOBI 支持不完整。ePUB 3.0 和现代 MOBI 未完全支持,因此某些文档可能渲染不正确。
  • NSS 加密代码尚未经过完整审计。
  • 沙箱仅支持 Linux,其可用性取决于 Linux 内核和系统支持。默认采用严格强制执行。
  • Worker 重启无法恢复未保存的表单。

有关各功能的成熟度和自动化测试覆盖情况,请参阅功能成熟度矩阵。

更新日志

有关版本亮点、修复和其他变更,请参阅CHANGELOG.md。

贡献

有关贡献和测试指南,请参阅CONTRIBUTING.md。 有关安全联系方式,请参阅SECURITY.md。

致谢

本项目从以下出色的项目中学习

许可证

原始项目源代码依据GNU 通用公共许可证 v3.0 或更高版本(GPL-3.0-or-later)授权,除非另有说明。

第三方组件保留其各自的许可证和版权声明:

其他依赖项和捆绑资源,包括 MuPDF 嵌入的字体,保留其上游许可证。本摘要不能替代完整的许可证文本或组件特定声明。

来源:Hacker News · github.com