보안 및 개인정보 보호 · Clash 기술 블로그

Clash 원격 규칙 집합은 안전한가요? rule-providers 출처, 업데이트 및 변조 위험 확인

rule-providers는 계정 비밀번호를 직접 읽지는 않지만 도메인이 사용할 아웃바운드를 바꿀 수 있습니다. 사용하기 전에 출처, 업데이트 기록 및 롤백 파일을 확인하고 중요한 규칙이 업데이트되면 차이도 살펴보세요.

  • rule-providers
  • 규칙 모음
  • 공급망
  • 보안
이 글의 목차

원격 규칙 모음의 안전성을 판단하려면 바꿀 수 있는 내용부터 확인

rule-providers 자체는 규칙 파일일 뿐 계정 비밀번호를 직접 읽을 수 없습니다. 하지만 도메인이 직접 연결, 프록시 또는 거부 중 어느 경로를 사용할지는 바꿀 수 있습니다. 출처가 불분명하고 자동 업데이트되며 롤백 수단도 없는 규칙의 위험은 민감한 요청이 잘못된 외부 경로로 조용히 전송될 수 있다는 데 있습니다.

Rule Provider는 도메인이 프록시, 직접 연결 또는 거부 중 어느 경로를 사용할지 결정하는 데 관여합니다. 범위가 지나치게 넓은 DOMAIN-SUFFIX 규칙이 앞에 있으면 은행, 회사 관리 페이지 또는 내부망 로그인이 갑자기 낯선 노드를 거칠 수 있습니다. 위험은 경로 변화에서 생기며 규칙 파일에 비밀번호 읽기 권한이 있을 필요는 없습니다.

연결 기록에 예상하지 않은 정책이 나타나면 마지막 캐시로 먼저 돌아가 기존 연결을 끊은 뒤 규칙 파일을 비교합니다. 이상 발생 시각, Provider 이름, 일치 항목과 최종 외부 경로를 함께 기록해야 유지관리자가 도메인을 잘못 포함했는지, 로컬 순서가 잘못되었는지, 원격 내용이 바뀌었는지 구분할 수 있습니다.

저장소와 커밋을 먼저 추적한 뒤 raw 주소 복사

추가하기 전에 답할 수 있어야 할 항목

  • 이 raw 파일이 속한 공개 저장소와 유지관리자
  • 저장소의 커밋 기록이 규칙 주제와 일치하는지
  • 다운로드 내용이 로그인 페이지, 스크립트 또는 단축 링크 이동이 아닌 YAML/MRS 텍스트인지
  • 현재 구성에서 마지막으로 다운로드한 로컬 파일을 보존할 수 있는지
  • 오류가 발생했을 때 이 Provider 하나만 비활성화하는 방법을 아는지

브랜치 주소는 커밋할 때마다 바뀌므로 신뢰하면서 업데이트가 필요한 규칙에 적합합니다. 커밋 해시 주소의 내용은 고정되어 있어 은행이나 회사 직접 연결처럼 변경이 적고 영향이 큰 규칙에 적합합니다. 두 방식을 함께 사용할 수 있으며 모든 출처를 매시간 업데이트하도록 설정할 필요는 없습니다.

URL, 형식, 로컬 경로와 업데이트 시각을 모두 표시

검토 가능한 Rule Provider 예시
rule-providers:
  research:
    type: http
    behavior: domain
    format: yaml
    url: https://raw.githubusercontent.com/OWNER/REPO/COMMIT/rules.yaml
    path: ./ruleset/research.yaml
    interval: 86400

rules:
  # REPLACE_WITH_POLICY 必须换成当前配置中已经存在的策略组
  - RULE-SET,research,REPLACE_WITH_POLICY
  - MATCH,DIRECT

OWNER, REPO, COMMIT과 REPLACE_WITH_POLICY는 모두 자리표시자이므로 복사한 뒤 바로 활성화하면 안 됩니다. 확인한 저장소, 고정 커밋과 기존 정책 그룹으로 바꾸세요.

behavior와 format은 원격 내용과 일치해야 하고 path는 코어에 쓰기 권한이 있는 위치를 사용해야 합니다. 규칙 참조를 MATCH 앞에 두되 회사 네트워크 대역, 로컬 네트워크와 반드시 직접 연결해야 하는 우선순위 높은 규칙보다 앞에 놓지 마세요.

업데이트에 성공한 뒤 규칙 수와 수정 시각을 확인하고 익숙한 도메인 몇 개를 골라 일치 여부를 검사합니다. 페이지에 '업데이트 완료'가 표시되었다고 현재 실행 구성이 새 파일을 실제로 참조한다는 뜻은 아닙니다.

중요 규칙을 업데이트하기 전에 diff로 변경 내용 확인

직접 제어하는 터미널에서 비교하고 RULE_URL을 먼저 교체
RULE_URL='https://raw.githubusercontent.com/OWNER/REPO/COMMIT/rules.yaml'
curl -L --fail --show-error -o rules.new.yaml "$RULE_URL"
sha256sum rules.new.yaml
diff -u rules.last.yaml rules.new.yaml | less

macOS에서는 sha256sum 대신 shasum -a 256을 사용할 수 있습니다. 해시는 두 파일이 같은지만 증명할 뿐 내용 자체의 신뢰성을 보장하지 않습니다. 실제로 확인해야 할 것은 추가·삭제된 항목, 저장소 커밋 설명과 규칙 주제의 일치 여부입니다.

수천 줄이던 파일이 갑자기 수십 줄로 줄거나 맨 앞에 <!doctype html>이 나타나거나 동영상 규칙에 계정 및 은행 도메인이 대량 추가되면 자동 업데이트를 중단해야 합니다.

이미 잘못된 정책을 사용했다면 파일을 먼저 롤백하고 계정 처리

이상이 Provider 업데이트 직후 발생했다면 이전 규칙을 먼저 복원하고 기존 연결을 끊으세요. 경로가 복구된 뒤 민감한 요청이 실제로 잘못된 외부 경로를 거쳤는지 판단합니다.

이상 상황 처리

  1. 해당 Provider 업데이트 중지

    마지막 캐시로 돌아가거나 RULE-SET 참조를 임시로 제거합니다.

  2. 구성을 리로드하고 연결 끊기

    새 요청은 기존 정책으로 복구되어야 하며 이전 세션의 외부 경로는 자동으로 바뀌지 않습니다.

  3. 저장소 변경 내용 비교

    잘못 포함된 항목, 주소 이전, 형식 변경 또는 검증할 수 없는 출처 중 무엇인지 확인합니다.

  4. 민감한 계정 확인

    로그인 요청이 예상하지 않은 외부 경로를 거쳤다면 로그인 기록을 확인하고 위험 수준에 따라 인증 정보를 교체합니다.

  5. 고정 커밋 또는 대체 출처 사용

    설명할 수 없는 원격 파일에는 자동 업데이트를 다시 켜지 않습니다.

참고 자료