WebUSB 미지원 문제 해결을 위한 Firefox 해킹 방법

13 hours ago 2

"우리는 WebUSB가 필요 없어요!"

  • 웹 페이지가 WebUSB 없이 USB 장치에 접근할 수 있는 방법이 있음. 또한, 장치는 사용자 동의 요구 사항을 우회하도록 설계될 수 있음.

빠른 데모

  • Raspberry Pi Pico에 u2f-hax.uf2를 로드하고, localhost 또는 다른 안전한 컨텍스트에서 index.html을 로드함.
  • "On!" 및 "Off!" 버튼은 LED를 토글하며, 핀 GP22의 상태가 페이지에 정기적으로 업데이트됨.

어떻게 가능한가?

  • Pico는 U2F 동글(물리적 2단계 보안 키)을 에뮬레이트하도록 프로그래밍됨.
  • 보안 기능 대신, 임의의 데이터가 U2F_AUTHENTICATE 메시지의 "키 핸들"과 서명에 숨겨짐.
  • 키 핸들이 0xfeedface로 시작하면, Pico는 즉시 사용자 존재를 "확인"하고 데이터를 반환함.

왜 가능한가?

  • U2F 키 핸들은 보안 동글이 "소유"하는 불투명한 데이터 덩어리로 설계됨.
  • 저비용 동글이 많은 웹사이트와 연관될 수 있도록 설계됨.
  • 동글은 내부적으로 고유한 "마스터" 암호화 키를 저장하고, 등록 시 새로운 공개/비공개 키 쌍을 생성하여 반환함.
  • 키 핸들은 불투명하게 처리되어 임의의 데이터를 숨길 수 있음.

데이터 반환 방법

  • ECDSA 서명으로 데이터를 숨김.
  • 서명은 두 숫자 (r, s)로 구성되며, 각 숫자는 특정 범위 내에서 계산됨.
  • Chrome은 서명의 숫자가 범위 내에 있는지 확인하지만, Firefox는 확인하지 않음.
  • Chrome의 기본 유효성 검사를 우회하기 위해 각 숫자의 첫 바이트를 0x7f로 설정함.

보안 취약점인가?

  • 아니며, 임의의 USB 장치에 접근할 수 없음.
  • 의도적으로 규칙을 위반하는 장치에서만 작동함.
  • USB 장치의 보안 모델은 대부분의 플랫폼에서 의문스러움.
  • 임의의 알 수 없는 장치를 컴퓨터에 연결하지 말아야 함.

Read Entire Article