FlawOpen

flawopen.com/Incidents/papercut-patch-bypass-scan2fax-chain-october-2026

● PaperCut NG/MF · CVE-2026-82077 · 2026-10-09 · CVSS 7.3 · 높음
보안 연구 · FlawOpen

PaperCut 패치 우회: Scan2Fax에서 사전 인증 RCE까지

10월 9일 watchTowr는 PaperCut 중간 릴리스를 대상으로 한 새로운 인증 우회 및 Scan2Fax 체인을 공개했습니다. 패치 우회가 인증 전 경로를 인증 후 명령 실행 취약점까지 다시 연결한 과정을 보여 줍니다. PaperCut의 최종 수정 버전은 26.0.5/25.0.13입니다.[1], [2]

💡 알기 쉬운 설명 (ELI5)

방문자의 출입증을 각 방에서 확인하지만 로비에서는 경로의 첫 번째 방만 확인하는 건물을 떠올려 보세요. 열린 방을 통과하는 지름길로 제한된 책상까지 가면 그곳에서 출입증을 다시 확인하지 않을 수 있습니다. PaperCut의 패치 과정에서는 이런 경로를 여러 개 막아야 했습니다. 최종 수정은 폼 자체와 Scan-to-Fax가 사용하는 파일 경로를 보호합니다.[1]

핵심 개념 및 용어

패치 우회
수정이 처음 보고된 경로만 막은 뒤에도 다른 경로로 동일한 보호 작업에 도달하는 문제입니다. 원래 패치가 전혀 적용되지 않았다는 뜻이 아니라 경계에 새 결함이 있음을 나타냅니다.[1]
인증 전 체인
한 결함이 일반적인 로그인 검사를 우회하고 다른 결함이 명령 실행 같은 영향을 제공하는 연속 과정입니다. 각 단계의 메커니즘을 구분해 정확히 설명해야 합니다.[1]
CVE-2026-82077
PaperCut Scan-to-Fax 취약점은 경로 순회 문제로, 인증된 관리자가 호스트에서 명령을 실행할 수 있습니다. PaperCut은 26.0.5와 25.0.13에서 수정했으며, watchTowr는 중간 버전의 별도 권한 우회와 연결되는 방식을 보였습니다.[2], [3], [4], [1]
WT-2026-0143
10월 9일 공개된 인증 패치 우회에 대한 watchTowr 식별자입니다. PaperCut 공개 공지에는 별도 CVE가 없습니다. 긴급 빌드 26.0.4-PO 76530에서 수정됐습니다.[1]
악용 상태
PaperCut은 8월에 이전 PaperCut 결함이 실제 공격에 악용됐다고 알렸습니다. 9월 공지는 CVE-2026-82077을 포함해 해당 공지에서 다룬 문제의 악용 증거가 없다고 합니다. 10월 9일 연구는 중간 버전에서 체인을 시연했지만 새로운 체인이 고객에게 사용됐다는 증거는 아닙니다.[5], [2], [1]

프레임워크 매핑

  • 이 가이드에서 설명하는 약점의 CWE 참조: CWE-22 CWE-78

릴리스 상태: PaperCut의 두 공격 체인을 구분하세요

PaperCut 릴리스출처에서 확인된 내용방어 조치
26.0.3watchTowr는 이전에 실제 공격에서 관찰된 CVE-2026-81578 + CVE-2026-82078 체인이 이 버전과 관련 있다고 설명합니다.PaperCut 긴급 공지를 따르세요. 이는 이전에 악용된 체인이며 10월 연구와는 별개입니다.
26.0.4watchTowr는 이 버전을 분석하면서 별도의 패치 우회를 발견했습니다.중간 패치를 최종 상태로 간주하지 말고 공급업체가 지정한 수정 버전을 따르세요.
26.0.4-PO build 76508watchTowr는 이 버전에서 WT-2026-0143 + CVE-2026-82077을 재현했습니다. 이는 연구 시연이며 고객 대상 악용의 증거는 아닙니다.공급업체가 수정한 버전으로 업그레이드하세요. 이전 긴급 수정이 포함됐다는 이유만으로 안전하다고 추정하지 마세요.
26.0.4-PO build 76530watchTowr에 따르면 이 버전에서 WT-2026-0143이 수정됐고 CVE-2026-82077은 이후 버전에서 수정됐습니다.CVE-2026-82077의 최종 수정 버전까지 업그레이드하세요. 이 중간 우회 수정만으로는 부족합니다.
26.0.5 / 25.0.13 이상PaperCut은 이 버전들을 CVE-2026-82077 수정 버전으로 제시합니다.현재 지원되는 버전으로 업그레이드하고 설치된 브랜치와 빌드를 확인하세요.
24.1.10 유지보수 릴리스PaperCut의 8월 공지는 24.1.10을 Emergency Patches 1–3을 대체하는 유지보수 릴리스로 나열합니다.이는 8월 공지의 수정 사항만 확인하며 CVE-2026-82077 상태를 입증하지 않습니다.
24.x 브랜치: CVE-2026-82077PaperCut의 9월 공지는 26.0.5와 25.0.13(25.x)을 수정 버전으로 제시하지만 24.x 브랜치는 명시하지 않습니다.24.x에서 이 CVE의 상태를 추정하지 말고 해당 브랜치에 대한 PaperCut의 최신 지침을 확인하세요.

사고 타임라인

2026-08-27

PaperCut은 PaperCut NG/MF 악용에 관한 긴급 공지를 게시했습니다. watchTowr는 이전 체인을 CVE-2026-81578 및 CVE-2026-82078과 연결했습니다. 이는 새로운 WT-2026-0143 및 CVE-2026-82077 체인과 별개입니다.[5], [1]

2026-08-28

PaperCut은 26.0.4와 긴급 빌드 26.0.4-PO 76508을 배포했습니다. watchTowr는 이 패치들을 분석하면서 여러 우회 경로를 발견했다고 밝혔습니다.[1], [5]

2026-08-31~2026-09-10

watchTowr는 WT-2026-0143과 CVE-2026-82077을 PaperCut에 보고했습니다. PaperCut은 9월 1일 26.0.4-PO 76530에서 WT-2026-0143을, 9월 10일 26.0.5/25.0.13에서 CVE-2026-82077을 수정했습니다.[1], [2]

2026-10-09

watchTowr는 중간 버전 체인의 기술 설명을 공개했습니다. 공개 사실만으로 이 새로운 체인이 고객을 상대로 사용됐다고 볼 수는 없습니다.[1], [2]

단계별 공격 실행 흐름

단계 1

경로 수준의 권한 검사가 중첩된 대상을 놓칩니다

watchTowr는 PaperCut의 레거시 Tapestry 라우팅을 설명합니다. 요청에서 루트 페이지와 이어지는 다른 페이지 또는 폼을 지정할 수 있었습니다. 기존 권한 검사는 대상 폼 자체의 권한 경계를 일관되게 적용하지 않았습니다.[1]

단계 2

패치 우회로 보호된 폼에 도달합니다

26.0.4-PO 76508 체인은 WT-2026-0143을 이용해 대상 폼 검사를 호출하지 않는 페이지를 거쳐 설정 기능에 접근했습니다. 이는 권한 경계에 대한 설명이며 경로나 요청을 재현하지 않습니다.[1]

단계 3

Scan-to-Fax에는 별도의 경로-명령 결함이 있습니다

PaperCut은 CVE-2026-82077을 Scan-to-Fax 설정의 경로 순회로 분류하며 인증된 관리자가 호스트 명령을 실행할 수 있다고 설명합니다. watchTowr는 중간 버전의 권한 우회가 누락된 인증 맥락을 제공할 수 있음을 보였습니다.[1], [2]

단계 4

최종 릴리스가 공개된 체인을 차단합니다

PaperCut은 긴급 빌드 76530에서 WT-2026-0143을, 26.0.5/25.0.13에서 CVE-2026-82077을 수정했습니다. 10월 공개가 최종 버전의 취약성이나 새 체인의 실제 악용을 의미하지는 않습니다.[1], [2]

소스 코드 비교: 취약한 구현 vs 보안 패치

이 일반 Java 예시는 두 가지 별도 통제를 보여 줍니다. 권한이 필요한 작업 자체를 승인하고, 서버가 관리하는 커넥터 맵에서 실행 파일을 선택한 뒤 정규 경로를 확인합니다. PaperCut 소스 코드나 공급업체 패치가 아닙니다. 운영 코드에는 인수 검증과 프로세스 권한 제한도 필요하며 수정된 PaperCut 버전을 사용해야 합니다. 경로 검사만으로 페이지 라우팅의 권한 우회를 해결할 수 없습니다.

취약한 구현
Path executable = faxDirectory.resolve(clientConnectorName).normalize();
// 경로 수준의 검사만으로 이 작업 자체에 대한 권한 확인을 대신할 수 없습니다.
new ProcessBuilder(executable.toString(), faxArguments).start();
보안 강화 패치
if (!principal.canAdministerFax()) {
    throw new SecurityException("Fax administration is required");
}
Path root = faxDirectory.toRealPath();
Path executable = approvedConnectors.get(connectorId); // Server-owned allowlist.
if (executable == null) {
    throw new IllegalArgumentException("Unknown connector");
}
Path resolved = executable.toRealPath();
if (!resolved.startsWith(root) || !Files.isExecutable(resolved)) {
    throw new SecurityException("Connector is outside the approved directory");
}
new ProcessBuilder(resolved.toString(), validatedArguments).start();

엔지니어링 및 시스템 보안 강화 체크리스트

출처