PATHSCOPE 0.1.9 · 최종 업데이트: 2026-10-17

PathScope 사용 설명서

이 단말의 약점을 PathScope로 찾고 어디부터 고치면 좋을지 확인하기까지를 화면 순서대로 설명합니다. 화면 조작 설명에는 전문 용어를 가능한 한 쓰지 않았으며, 명령은 “명령줄에서 사용하기” 장에 모았습니다.

1. PathScope란

PathScope는 이 단말에서 일반 사용자가 root(관리자 권한)나 기밀 데이터에 이를 수 있는 “경로”를 찾아내고, 어디부터 고치면 효과가 큰지를 우선순위와 함께 보여 주는 도구입니다. 직접 관리하는 단말이나 검증용 환경을 점검하는 용도를 상정하고 있습니다.

분석은 읽기 전용입니다. 설정이나 파일을 바꾸지 않으며 수정도 자동으로 하지 않습니다. 수정 명령 예시는 표시하지만 실행할지는 사용자가 결정합니다.

동작하는 OS와 포함되어 있는 곳
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. 분석하고 결과 읽기

“분석”을 누르면 현재 사용자를 출발점으로 이 단말의 상태를 모아 분석합니다. 몇 초에서 수십 초가 걸릴 수 있습니다. 끝나면 결과가 자동으로 기록에 1건 저장됩니다.

조작 순서

  1. “분석”을 누릅니다.
  2. “경로 그림”과 “경로 목록”에서 어떤 사용자가 어떤 순서로 root나 기밀 데이터에 이르는지 봅니다. 원과 사각형은 사용자나 도착점이고, 선은 권한이 올라가는 한 단계입니다. 선 위의 번호는 그림 아래 표의 “그 단계가 성립하는 이유”에 대응합니다.
  3. “대책 지점(먼저 고칠 순서)”에서 먼저 고치면 효과가 큰 곳을 확인합니다. 각 항목에는 우선순위(긴급·높음·중간·낮음과 점수), 영향을 받는 경로 수, 수정안, 가까운 MITRE ATT&CK 기법이 표시됩니다.
  4. “이것을 고치면?”을 누르면 그 대책 지점을 수정안대로 고쳤을 때의 경로를 가정하여 다시 분석합니다. “모두 고치면?”은 표시 중인 대책 지점을 모두 고친 경우입니다. 어느 쪽도 이 단말은 변경하지 않습니다.
  5. 대책 지점 아래에 표시되는, 확인하지 못한 범위 목록을 읽습니다.
확인하지 못한 범위는 “안전”이 아닙니다
권한이 부족하거나 참조 대상이 실제로 존재하지 않아 확인하지 못한 범위입니다. “위험이 없음”이 확인된 것도 아니고 “위험이 있음”을 뜻하는 것도 아닙니다. “root 권한으로 실행하면 확인할 수 있을 가능성이 있음”이라고 적힌 항목은 root로 실행하면 확인할 수 있는 경우가 있습니다.

어떤 경로를 찾는가

알려진 취약점 확인은 앱에 포함된 데이터로 수행합니다. 대상은 macOS와, 데이터가 있는 버전의 Debian·Ubuntu·RHEL 계열·SUSE·Arch·Alpine이며, 그 외(Debian 11 이전이나 Fedora 등)는 “미확인”으로 표시합니다. 취약점을 빠짐없이 조사하는 기능은 아닙니다.

4. 기록, 내보내기, 지속 점검

분석 결과는 이 단말 안에 기록으로 자동 저장됩니다. “기록”을 누르면 목록이 열리며, 골라서 열기, 라벨(예 수정 전) 붙이기, 삭제 등을 할 수 있습니다. 2건을 골라 “선택한 2건 비교”를 누르면 사라진 경로와 늘어난 경로, 대책 지점의 변화를 알 수 있습니다. 수정 전후를 비교할 때 사용하세요.

다른 단말에서 저장한 JSON 형식의 분석 결과는 “분석 결과 가져오기”로 기록에 가져올 수 있습니다. 기록에서 2건 이상을 골라 “선택한 기록 집계”를 누르면 위험한 단말 순서와 여러 대에 공통되는 약점을 알 수 있습니다.

표시 중인 분석 결과를 “분석 결과(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으로 간격(분)을 지정할 수 있습니다.
--plainMarkdown 대신 예전의 일반 문장 형식으로 출력합니다. 분석의 전제는 결과 안이 아니라 표준 오류로 나옵니다.
--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용 사용 설명서 →