요약
- RFC 10027은 사용자가 실제 인증을 완료했지만 공격자가 통제하는 소비 기기에 접근 권한을 부여하는 공격 유형을 설명합니다. 빠진 것은 시작 기기와 인가 결정을 연결하는 컨텍스트에 대한 증명입니다.
- 유효한 QR 코드, 사용자 코드 또는 푸시 요청은 인증되지 않은 채널을 통해 서버가 발급한 데이터를 전달할 수 있습니다. 그 코드는 대기 중인 흐름을 식별할 수 있지만, 누가 그것을 사용자 앞에 두었는지, 왜 시작되었는지, 결과 토큰이 어디서 사용될지는 증명하지 못합니다.
- Daniel Fett는 Pieter Kasselman, Filip Skokan과 함께 이 RFC의 세 저자 중 한 명입니다. 이들의 지침은 근접성, 프로토콜 선택, 범위가 제한된 토큰, 인터페이스 컨텍스트, 탐지 및 복구를 단일 보안 배지가 아니라 계층화된 통제로 다룹니다.
교차 기기 동의 피싱의 불편한 특징은 보안 로그가 이상할 정도로 깨끗해 보일 수 있다는 점입니다. 사용자는 실제 비밀번호를 입력했습니다. 두 번째 요소도 충족되었습니다. 인가 서버는 진짜 페이지를 표시했습니다. 가짜 양식에 자격 증명을 복사할 필요도 없었습니다. 사용자는 실제 승인 버튼을 눌렀습니다.
그럼에도 잘못된 당사자가 접근 권한을 얻었습니다.
2026년 8월에 발표된 IETF Best Current Practice인 RFC 10027은 그러한 결과가 어떻게 가능한지 설명합니다. Pieter Kasselman, Daniel Fett, Filip Skokan은 제품 인터페이스가 하나의 편리한 제스처로 묶어버리는 두 기기를 분리합니다. 소비 기기는 접근을 요청합니다: TV, 키오스크, 화이트보드, 워크스테이션 또는 다른 엔드포인트입니다. 인가 기기는 사용자가 인증하고 결정을 내리는 휴대폰이나 컴퓨터입니다. QR 코드, 짧은 코드 또는 푸시 요청이 이 둘 사이에서 흐름을 전달합니다.
이 전달은 자주 인증되지 않은 채널을 통해 이루어집니다. 코드 자체는 완벽하게 유효하면서도 그 코드를 둘러싼 이야기는 거짓일 수 있습니다.
공격자의 요청에 대한 진짜 승인
공유 디스플레이가 직원에게 회사 파일을 열기 위해 사각형 코드를 스캔하라고 요청하는 상황을 생각해 보십시오. 정상적인 흐름에서는 디스플레이가 인가 요청을 시작하고, 휴대폰이 올바른 서비스를 표시하며, 직원이 그 디스플레이에 제한된 범위의 권한을 부여합니다. 이 편의는 어려운 인증을 신뢰할 수 있는 개인 기기로 옮기는 데서 나옵니다.
공격자는 첫 단계의 소유권을 뒤집을 수 있습니다. 공격자는 자신이 통제하는 기기에서 요청을 시작하고, 그 QR 또는 사용자 코드를 얻어 그럴듯한 헬프데스크 메시지 안에 담아 직원에게 보냅니다. 직원이 그것을 스캔하면 실제 인가 서비스에 도달하고, MFA를 수행하고 승인합니다. 서버는 직원을 인증했습니다. 대기 중인 코드의 유효성도 검증했을 수 있습니다. 그러나 어느 사실도 직원이 요청을 시작한 그 기기 앞에 서 있다는 것을 증명하지 못합니다.
따라서 이 공격은 MFA와 모순되지 않습니다. MFA가 답하도록 요청된 적 없는 질문을 우회할 뿐입니다.
RFC 10027은 이 인가 형태를 Cross-Device Consent Phishing이라 부릅니다. 관련된 세션 전송 형태에서는 공격자가 사용자를 설득해 이미 인증된 세션을 옮기는 전송 코드를 전달하게 합니다. 도난당하는 것은 반드시 비밀번호일 필요가 없습니다. 공격자의 엔드포인트에서 사용 가능한 액세스 토큰, 리프레시 토큰 또는 세션일 수 있습니다. 이 구분은 사고 대응에 중요합니다. 비밀번호 재설정으로는 부여된 권한, 리프레시 경로 또는 활성 세션이 그대로 남을 수 있습니다.
코드는 증거 가치를 갖지만, 그 범위는 좁습니다. 인가 서버가 대기 중인 트랜잭션을 생성했다는 사실, 구문이 유효하다는 사실, 아마도 만료되지 않았다는 사실은 보여줄 수 있습니다. 그러나 그것만으로는 누가 그것을 제시했는지, 두 기기가 서로 가까이 있는지, 사용자가 흐름을 시작했는지, 사용자가 무엇이 일어날 것으로 믿는지, 어느 엔드포인트가 권한을 받는지, 범위가 비례하는지를 보여주지 못합니다.
Daniel Fett의 유용한 구분
Fett의 1차 웹사이트는 그를 신원 및 웹 프로토콜 보안을 전문으로 하는 보안 컨설턴트이자 OpenID Foundation과 IETF에서 OAuth 및 OpenID Connect 작업에 기여하는 인물로 소개합니다. IETF 기록은 그를 RFC 10027뿐 아니라 발급자 식별, 보유 증명 토큰, OAuth 보안, 선택적 공개에 관한 RFC들과 연결합니다. 이러한 자격은 그가 연구하는 문제의 연속성을 설명하지만, 그를 이 BCP의 단독 저자나 배포된 시스템의 운영자로 만들지는 않습니다.
여기서 그의 관련성은 방법론적입니다. 형식적 프로토콜 연구는 성공한 암호학적 단계가 모델링되지 않은 관계를 대신하도록 허용하지 않습니다. RFC 10027은 형식적 분석이 공격을 발견하고 정의된 모델 내의 공격을 배제할 수 있다고 말하면서도, 모델은 구현 세부사항, 공격자 능력 및 보안 목표를 추상화한다는 한계를 밝힙니다. "안전하다고 증명됨"이라는 문장은 모델 이름을 붙여야 완성됩니다.
같은 원칙이 MFA에도 적용됩니다. "인증됨"은 주체, 신뢰 당사자, 트랜잭션을 명시해야 합니다. 사람은 인증되었을 수 있지만 시작 기기는 그렇지 않을 수 있습니다. 요청은 진짜일 수 있지만 그 인간적 설명은 거짓일 수 있습니다. 토큰이 발신자 제약을 갖고 있을 수 있지만 발신자가 공격자 자신의 엔드포인트일 수 있습니다. 사용자는 사무실 디스플레이에서 파일을 여는 것을 의도했을 수 있지만, 인가 기록에는 단지 클라이언트가 접근을 받았다고만 기록될 수 있습니다.
이것이 본 기사를 관통하는 통제 경계입니다: 신원, 시작, 컨텍스트, 의도, 권한 부여, 토큰, 자원 접근은 연결된 단계이지 동의어가 아닙니다.
자명한 해결책이 여전히 부분적인 이유
RFC 10027은 문제를 마법의 대체 코드로 해결하지 않습니다. 통제를 목록화하고 각 항목 옆에 한계를 인쇄합니다.
수명이 짧거나 일회용인 코드는 재사용과 대량 재사용을 줄이지만, 대화형 공격자는 피해자가 응답할 때까지 기다린 뒤 코드를 생성할 수 있습니다. 속도 제한은 캠페인을 방해하지만 인내심 있는 표적 요청은 막지 못합니다. 사용자 교육이 도움이 되지만, 세심하게 준비된 악성 흐름은 평범한 흐름과 거의 구분되지 않을 수 있습니다. 정교한 진짜 인가 페이지는 오히려 공격자의 이야기를 강화할 수 있습니다.
근접성은 두 기기가 물리적 또는 논리적으로 가까운지를 묻기 때문에 더 강력합니다. Bluetooth Low Energy, NFC, 초광대역, 공유 네트워크 및 위치 신호는 원격 치환의 비용을 높일 수 있습니다. 그러나 인가 서버가 물리적 거리를 단순히 관찰할 수는 없습니다. VPN, 위치 위조, NAT, 모바일 데이터, 합법적인 원격 승인자는 잘못된 가정을 만듭니다. 근접성은 증거이지 의도가 아닙니다.
신뢰할 수 있는 기기와 네트워크는 시작 권한을 책임 있는 운영자 쪽으로 옮깁니다. 임의의 엔드포인트가 코드를 요청하는 것을 막을 수 있습니다. 그러나 신뢰 라벨은 등록, 증명, 패칭, 폐기를 요구하며, 신뢰된 엔드포인트를 통제하는 공격자가 여전히 흐름을 시작할 수 있습니다. 제한된 범위와 수명이 짧은 토큰은 잘못된 권한 부여를 올바르게 만들지는 못하지만, 피해 반경을 줄입니다.
보유 증명 설계를 포함한 발신자 제약 토큰은 토큰이 다른 기기로 옮겨지기 어렵게 만듭니다. 그러나 공격자가 통제하는 소비 기기가 자신의 악성 요청을 위해 정당하게 생성한 키를 사용하는 것은 막지 못합니다. 이 통제는 동의 치환보다 토큰 반출 문제를 더 직접적으로 해결합니다.
따라서 RFC의 최선의 조언은 아키텍처적입니다. 역량 있는 기기가 근접성과 출처 결합 인증을 확립할 수 있다면 FIDO 교차 기기 인증을 사용하십시오. 서버가 사용자에게 연락할 확립된 방법을 가지고 있다면, 요청되지 않은 요청을 여전히 통제하면서 기기 부여보다 CIBA를 선호하십시오. OAuth Device Authorization Grant는 더 강한 옵션이 실행 가능하지 않을 때만 사용하고, 추가 통제가 위험에 부합하지 않는 한 민감하거나 고가치 또는 비즈니스 핵심 자원에는 사용하지 마십시오.
승인 화면만으로는 제공할 수 없는 영수증
Lu Heng의 Running-Code Primacy는 좁은 OAuth 어휘 밖에서 유용한 시험을 제공합니다: 선언은 운영 결과가 아니라는 것입니다. 여기서 선언은 "승인됨" 이벤트입니다. 실행 결과는 어느 엔드포인트가 어떤 능력을 얻었고 다음에 무엇을 했는가입니다.
방어 가능한 교차 기기 영수증은 시작 클라이언트의 신원과 상태; 인가 기기와 방법; 정확한 범위와 자원; 두 기기에 표시된 사람이 읽을 수 있는 컨텍스트; 근접성 또는 기기 결합 증거; 사용자의 결정; 발급된 토큰의 수신자와 제약; 첫 사용; 이상 신호; 폐기; 복구 결과를 보존해야 합니다. 프라이버시를 위해 이러한 필드는 최소화되고 접근 통제되어야 합니다. 책임성을 위해서는 초록색 체크 표시보다 더 정밀한 어딘가에 존재해야 합니다.
이 장부는 소유권도 명확히 합니다. 제품 팀은 편의가 교차 기기 흐름을 정당화하는지 결정합니다. 신원 팀은 프로토콜, 클라이언트, 토큰 수명, 범위를 선택합니다. 기기 및 네트워크 팀은 등록, 근접성, 엔드포인트 상태를 담당합니다. 사기 팀은 수상한 시작과 동의 패턴을 탐지합니다. 자원 서버는 토큰 제약을 강제합니다. 지원 및 사고 팀은 권한을 폐기하고 복구를 검증합니다. 사용자는 시스템이 인증하지 않기로 선택한 채널의 유일한 인증자가 될 수 없습니다.
RFC 10027은 더 많은 요소가 자동으로 더 많은 컨텍스트를 의미한다는 안심시키는 결론을 거부하기 때문에 가치가 있습니다. MFA는 사용자가 그 자리에 있었음을 증명할 수 있습니다. 그러나 추가 결합 없이는 어느 기기가 그 결과를 받을 자격이 있었는지 증명할 수 없습니다.
사각형 코드는 전달을 시작합니다. 이야기를 끝낼 권한이 아닙니다.
출처
- RFC 10027 — 교차 기기 흐름 보안을 위한 Best Current Practice
- RFC 8628 — OAuth 2.0 Device Authorization Grant
- RFC 9700 — OAuth 2.0 보안을 위한 Best Current Practice
- RFC 9449 — OAuth 2.0 Demonstrating Proof of Possession
- FIDO Alliance — Client to Authenticator Protocol 2.2
- W3C — Digital Credentials API
- IETF Datatracker — Daniel Fett
- Daniel Fett — 공식 웹사이트
- Daniel Fett — Cross-Device Session Fixation과 DC API가 이를 해결하는 방법
- Lu Heng — Running-Code Primacy
회원 브리핑
프로필 심층 컨텍스트
올바른 멤버십 등급으로 로그인하면 전체 브리핑과 출처 노트를 볼 수 있습니다.
Strategic Circle 전용
Strategic Circle
모든 독자에게 공개됩니다. 가입 후 로그인하면 프로필 브리핑를 열람할 수 있습니다.
Strategic Circle 가입하기Leadership Alliance 전용
Leadership Alliance
자격을 갖춘 IP 자산 소유자 및 운영진을 위한 콘텐츠입니다. 로그인하면 Leadership Alliance 브리핑을 열람할 수 있습니다.
Leadership Alliance 가입하기





