PATHSCOPE 0.1.9 · 最后更新:2026-10-17

PathScope 操作手册

本手册按界面顺序说明如何用 PathScope 找出这台设备的薄弱之处,并确认应该先从哪里修复。界面操作部分尽量不使用专业术语,命令集中放在“使用命令行”一章。

1. PathScope 是什么

PathScope 会找出这台设备上普通用户能够到达 root(管理员权限)或敏感数据的“路径”,并按优先级显示从哪里修复效果最大。它适用于检查您自己管理的设备和测试环境。

分析是只读的。它不会修改设置或文件,也不会自动进行修复。虽然会显示修复命令示例,但是否执行由您决定。

支持的系统与包含位置
可在 Mac(macOS 12 及以上)和 Linux 上运行。在 Mac 上它包含在 RoamSwitch 的发行文件(DMG)中,在 Linux 上包含在 RoamSwitch 客户端版安装包(.deb、.rpm、AUR)中,界面和命令都可以使用。RoamSwitch 的 Linux 服务器版安装包只包含命令(pathscope)。PathScope 是与 RoamSwitch 独立的应用,许可证为 Apache License 2.0,不适用 RoamSwitch 的使用许可协议(EULA)。

2. 安装与启动

PathScope 作为带有独立图标的单独应用安装。启动方法如下。

环境启动方法
Mac打开发行文件(DMG)中的 PathScope.app,然后点击“开始分析”。
Linux在应用列表中打开“PathScope”,然后点击“开始分析”。在终端中则运行 pathscope-gui。界面显示需要 WebKitGTK 4.1,deb 和 rpm 会自动安装。在 Arch(AUR)上,请将 webkit2gtk-4.1 作为可选依赖安装。
命令行在终端中运行 pathscope。在 Mac 上是 PathScope.app/Contents/MacOS/pathscope。

启动后会打开一个窗口,顶部排列着“开始分析”“历史记录”“LLM 辅助”“用 LLM 解读”“设置”按钮。显示分析结果之前,“用 LLM 解读”无法点击。PathScope 不会开启监听端口,界面也不会加载外部网站。

3. 运行分析并查看结果

点击“开始分析”后,PathScope 会以当前用户为出发点收集这台设备的状态并进行分析,可能需要几秒到几十秒。完成后,结果会自动作为一条记录保存到历史记录中。

操作步骤

  1. 点击“开始分析”。
  2. 在“提权路径图”和“提权路径列表”中查看哪个用户通过哪些步骤到达 root 或敏感数据。圆形和方形代表用户或终点,线条代表一次提升权限的步骤。线上的编号对应图下方表格中的“该步骤成立的原因”。
  3. 在“修复点(按修复先后顺序)”中确认优先修复效果最大的位置。每一项都会显示优先级(紧急、高、中、低及分数)、受影响的路径数量、修复方案以及相近的 MITRE ATT&CK 技术。
  4. 点击“修复后会怎样?”,会假设按修复方案修复该位置,重新分析此时的路径。“全部修复后会怎样?”则是假设修复当前显示的全部修复点。两者都不会修改这台设备。
  5. 阅读显示在修复点下方的、未能检查的范围列表。
未能检查的范围并不代表“安全”
这些是因权限不足或引用目标不存在而未能检查的范围。这既不表示已确认“没有危险”,也不表示“存在危险”。标有“使用 root 权限运行可能可以检查”的项目,以 root 身份运行有时就能检查。

会找出哪些路径

已知漏洞的检查使用随应用附带的数据。检查对象是 macOS,以及有数据的 Debian、Ubuntu、RHEL 系列、SUSE、Arch、Alpine 的版本,其他(Debian 11 及更早版本、Fedora 等)会显示为“未确认”。它不是用来全面排查漏洞的功能。

4. 历史记录、导出、持续检查

分析结果会自动作为历史记录保存在这台设备中。点击“历史记录”会打开列表,可以打开某条记录、添加标签(例如“修复前”)或删除。选择两条记录并点击“比较所选的两条”,即可看到消失的路径、新增的路径以及修复点的变化。比较修复前后的情况时可以使用。

在其他设备上保存的 JSON 格式分析结果,可通过“导入分析结果”导入到历史记录中。在历史记录中选择两条以上并点击“汇总所选记录”,即可看到风险较高的设备排序以及多台设备共有的弱点。

可以将当前显示的分析结果保存为“分析结果(JSON 格式)”“监视对象(JSON)”或“auditd 规则(用于 Linux 的审计功能)”。保存位置在选择保存位置的窗口中指定。它只负责导出,不会应用设置,也不会修改这台设备。

导出一个配置文件,用于定期分析,并在路径比上次增多时发出通知。

  1. 先显示一个分析结果,然后点击“保存为对比基准”。
  2. 设置“间隔(分钟)”(5 到 10080)。
  3. Mac 上点击“保存 launchd 设置…”,Linux 上点击“保存 systemd 设置…”,然后选择保存位置。
  4. 确认导出的内容后,由您自己进行注册(例如 launchctl load)。PathScope 不会进行注册。

5. 使用 LLM 的功能(可选)

默认关闭
使用 LLM 的功能在您于设置中启用之前不会运行。启用并使用后,部分分析内容会传递给您所选 LLM 的命令及其背后的服务。此通信不包含在 RoamSwitch 的“Zero Telemetry”范围内。如果保持关闭,PathScope 不会把分析内容发送到设备之外。

启用方法

  1. 勾选“启用 LLM 联动”。
  2. 选择“使用的 LLM”。可选的是 claude、opencode、codex、agy 这几个命令,列表中“状态”为“已安装”的可以使用。如果显示“未找到”,请先安装该命令。
  3. 选择“读取配置时发送给 LLM 的范围”(见下表)。
  4. 点击“保存”。

列表中的“模型”和“超时(秒)”可以针对每个 LLM 分别修改。claude 启动时会关闭命令执行和文件读取。opencode、codex、agy 被视为无法关闭,只有勾选“我已了解,无法禁用此 LLM 的命令执行和文件读取功能”后才能使用。无法限制的 LLM 可能在运行过程中自行决定读取文件,其内容可能被发送到该 LLM 的服务。

用 LLM 解读

显示分析结果后点击“用 LLM 解读”,LLM 会撰写整体评估、修复的优先顺序及理由、未能检查的范围的含义等内容。传递的只有路径、修复点和未能检查的范围的摘要,不会传递收集到的原始信息(如文件所有者和权限列表)。不过摘要中包含路径里出现的用户名和文件路径。LLM 的回答仅供参考,内容的确认和处理的判断由人来做,不会根据回答自动更改任何内容。

LLM 辅助(读取配置文件)

sudoers、cron、脚本等配置文件的写法各不相同,仅靠程序有时无法读懂。LLM 辅助会让 LLM 阅读这类文件,找出与 root 权限有关的内容。

  1. 点击“LLM 辅助”。待读取的候选文件会连同理由一起列出(起初全部处于选中状态)。候选包括 sudoers、cron、systemd 和 launchd 的设置,以及以 root 运行的服务所加载的可执行文件等。不想发送的文件请取消勾选。
  2. 点击“将所选 ○ 个文件发送给 LLM”。会出现关于发送内容的确认文字,阅读后点击“发送(已确认)”。
  3. 在结果中查看“找到的内容”“已读取的文件”和“未读取的文件(这些仍为未确认)”。
  4. 点击“应用并重新分析”,找到的内容就会加入分析。不想再使用时,可在“已保存”中删除。

只会使用 LLM 列出的内容中,已确认在原文件中确实存在该行的部分。未能确认的内容只会显示在“仅供参考”中,不用于分析。每次分析时都会重新确认,因此原始行已消失的内容将不再被使用。

发送范围内容
标准疑似密码或密钥的值会替换为“[REDACTED]”后再发送。不发送私钥等文件。较大的文件只发送包含路径或命令的行。
无限制适用于本地运行的 LLM 等内容不会流出到外部的情况(风险自负)。密码哈希等也会被发送。
无论哪种范围都不会发送的内容
内容中含有私钥的文件,即使名称不同也不会发送。已知格式的密钥,以及名称表示秘密的值(如密码、令牌),无论设置如何都会替换后再发送。由于这是通过名称和形式来查找的方法,请注意可能存在找不到的秘密。

6. 使用命令行

也可以用 pathscope 命令执行与界面相同的分析。不加任何选项运行时,会分析从当前用户到 root 的路径。收集过程是只读的,不会改变设备的状态。

pathscope
pathscope --json-out=report.json
pathscope --what-if-fix=all
pathscope --baseline=base.json --fail-on=new --notify
pathscope --print-schedule=systemd --interval-min=60
pathscope --export-watch=watch.json --export-auditd=pathscope.rules
pathscope --plain
pathscope --version
pathscope --lang=en
选项内容
--json-out=<file>将结果保存为 JSON。
--what-if-fix=all假设按所有修复方案修复,重新分析此时的路径。指定编号时,只针对该修复点。
--baseline=<file> --fail-on=new与上次的 JSON 比较,路径增多时以退出码 1 结束。加上 --notify 还会显示桌面通知(仅含数量)。
--fail-on=any|new|critical|high|mediumany 表示只要有 1 条路径,critical、high、medium 表示存在该优先级及以上的修复点时,以退出码 1 结束。
--print-schedule=launchd|systemd显示定期运行的配置示例,不会进行注册。可用 --interval-min 指定间隔(分钟)。
--plain不使用 Markdown,而以以往的纯文本形式输出。分析前提不再放在结果中,而是输出到标准错误。
--help / --version--help(-h)显示所有选项的说明、退出码和使用示例。--version(-V)显示版本。

输出为 Markdown。标题之后依次是摘要表、路径、修复点(优先级、步骤、原因和受影响路径的表,以及按编号列出的详情:ATT&CK 对应、修复命令和注意事项)、收集范围、分析前提。修复点仅在发现路径时出现,分析前提仅在有内容可写时出现。加上 --what-if-* 会接着列出假设分析,加上 --baseline 会接着列出与上次相比的变化。可以直接粘贴到备忘或工单中。想以以往的纯文本形式输出时,加上 --plain。

退出码为 0 表示正常,为 1 表示满足了 --fail-on 的条件,为 2 表示用法或输入输出错误。以 root 运行时,还会直接收集 root 正在监听的监听器。通过 LLM 辅助保存的读取结果也会纳入命令的分析。

7. 保存位置与更新

内容保存位置
分析结果的历史记录Mac 上是 ~/Library/Application Support/net.lafine.pathscope/history.sqlite3,Linux 上是 ~/.local/share/net.lafine.pathscope/history.sqlite3
LLM 联动设置~/.config/pathscope/settings.json(以仅限您本人读写的权限保存)
通过 LLM 辅助保存的内容~/.local/share/pathscope/facts.json
持续检查的“对比基准”~/.local/share/pathscope/baseline.json

历史记录可以在历史记录界面通过“全部删除”清除。分析结果包含与这台设备配置相关的敏感信息(用户名、文件路径、权限),请限制其保管和共享的范围。想使用 LLM 列表中没有的命令时,请手动在设置文件的 profiles 中添加。无法在界面中更改。

更新应用

Mac 版 PathScope 独立于 RoamSwitch,自行更新。只有在您点击“检查更新”时,才会为获取最新版本信息而连接 lafine.net(不会发送这台设备或分析结果的信息)。如果有新版本,点击“安装 v○○”,完成后点击“重启以生效”。下载的更新会先验证签名以确认未被篡改,只有通过验证的才会替换。

在 Linux 上,它包含在 RoamSwitch 的安装包中,因此通过更新该安装包来更新。“更新”标签中也会显示这一说明。

已知漏洞等用于分析的数据随应用一起提供。在此之后发现的内容,要等更新 PathScope 后才会被检查。当随附数据变旧时,分析结果中会提示。

8. 不能做的事

9. 遇到问题时

现象处理方法
在 Mac 上,未能检查的范围中出现“隐私设置数据(TCC.db)”在“设置”的“权限”标签中点击“打开‘完全磁盘访问权限’设置”,在系统设置中打开 PathScope,然后重启 PathScope 并重新分析。即使不授权,其他分析也能使用。
出现“无法使用 LLM”,或无法保存在“设置”的“LLM 联动”中启用,并选择要使用的 LLM。如果列表中显示“未找到”,请安装该命令。选择 opencode、codex、agy 时,还需要勾选确认项。
LLM 因“超时”而中止在“设置”的“LLM 联动”列表中,把该 LLM 的“超时(秒)”调大(1 到 900),然后保存。
无法使用“修复后会怎样?”从历史记录中打开的结果无法使用。请再次点击“开始分析”后再使用。
无法使用应用内更新在 Linux 上通过 RoamSwitch 安装包安装的,请通过更新安装包来更新。如果不是通过安装包(.deb、.rpm、AppImage)安装的,则无法使用应用内更新,请重新安装发行的安装包。
← PathScope 产品页面 Linux 版操作手册 →