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. 歷史紀錄、匯出、持續檢查

分析結果會自動以歷史紀錄的形式保存在這台裝置中。按一下「歷史紀錄」會開啟清單,可以開啟某筆紀錄、加上標籤(例如「修正前」)或刪除。選擇兩筆紀錄並按一下「比較所選的 2 筆」,即可看到消失的路徑、新增的路徑,以及修補點的變化。比較修補前後的情況時可以使用。

在其他裝置上儲存的 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 版操作手冊 →