오디오 인터페이스에 기본으로 SSH가 활성화되어 있음

1 day ago 5
  • 펌웨어 파일을 풀어보면 장치 내부 구조를 쉽게 확인할 수 있었고, Rodecaster Duo는 기본 상태에서 SSH가 열려 있음
  • 업데이트 패키지는 gzipped tarball 형태였고, 장치에는 손상 시 다른 쪽으로 부팅하는 두 개의 파티션과 업데이트용 셸 스크립트가 들어 있었음
  • 들어오는 펌웨어에는 서명 검증이 없었고, 실제 SSH 접속은 Ethernet 연결에서 확인됐으며 pubkey 인증만 허용하는 상태였음
  • Windows에서는 USB 업데이트 흐름을 캡처해 M과 U라는 단일 ASCII 명령으로 업데이트 모드 진입과 플래싱 실행이 이뤄짐을 확인했고, archive.tar.gz와 archive.md5를 복사한 뒤 재부팅으로 새 펌웨어가 올라감
  • macOS에서는 커스텀 펌웨어로 SSH 비밀번호 인증을 켜고 공개키를 추가해 실제 접속까지 가능했고, 기본 SSH 활성화와 기본 키 포함 이유는 끝내 밝혀지지 않음

펌웨어 업데이트와 SSH 기본 활성화

  • Rodecaster Duo는 펌웨어 업데이트 과정에서 장치로 전달되는 파일을 쉽게 확인할 수 있었고, 기본 상태에서 SSH가 활성화되어 있었음
    • macOS에서 디스크 활동을 추적해 펌웨어 저장 위치를 찾았고, 펌웨어는 단순한 gzipped tarball 형태였음
    • 업데이트를 시도한 장치에서는 USB 디스크 쓰기 기능이 비활성화되어 있어 해당 업데이트는 실패함
  • 장치 내부에는 실행 바이너리와 업데이트용 셸 스크립트가 있었고, 디스크에는 두 개의 파티션이 있어 하나가 손상되면 다른 쪽으로 부팅되게 되어 있었음
    • 들어오는 펌웨어에는 서명 검증이 없음
    • Ethernet 케이블을 연결해 확인한 결과 SSH가 실제로 열려 있었고, pubkey 인증만 허용하는 상태였음
  • 기본으로 추가된 SSH 키 두 개가 확인됨
    • ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCX/bCFTDgViuPvdFL/VMMVRrw9b5S8HcDQk17qoCEYwmI+IIG8rEAsLiaeCOwyhf9IN+8/LRaN0Z5ZfU3WMbmsKEg8zd1Yvqq74nFbhO47vbtzmCi9S4ucIKkBEVOyvyN5lt9hWf5t5nZSmlfldZK3Pem5y8wHM5A+K/gSnzp4gwQ1QYfFb068uQ+ciIdOhb8SkUs8CwzotglIbp19I6ZmXmsNj/TmpbUf5rMfUAf1gysZ5j1UdRWrvWVh5daqvZRsBBPbXEeJfDU3Nr3HR14XYt9mgexrz/5oyKSj/lQYLmh9cDfsxvkGNIQ8fF9l+n2L1KZM4lLgiGk4KFBjQHaIBZx9OebCiiZCO4NTJUBDk9a+SZpiDiipADV07s7vTInYyFA6GrmKtnq3M6upT4WJBvVuL/BMnK5yY1RZtoqox2/pcCg2rH5S1GIy0v0HFJisl7kWInlaG2mdsaCx19wAjCFe/qT9LyxjQ6+0rArI55/JJFDkNeMjrewRQwNdASjCox8vqXCBfjvsR9qv70/ywcymgsnLAnq2LuYg5FYwMMDYOvVnhACC+BYTdNDTn5oeMIjQCUenY/DPCHpJkf4YOf3YCMUTEU9tExhtwW/X+m21hS3+STLtTfqbUeg9CeuPQZgfl9vc65n3tMxAdlEGEDoTaNMAgr2TzJv92Ka9iQ==
    • ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDaNyzPfIcEeQsfzyQs/wyX6mX52kiS+4eNHfCaxFlgj

업데이트 흐름과 커스텀 펌웨어

  • Windows에서는 Wireshark와 USBPcap으로 업데이트 트래픽을 캡처해 RODECaster App이 장치에 보내는 제어 흐름을 확인함
    • 장치를 업데이트 모드로 넣는 'M' 명령과 업데이트를 실행하는 'U' 명령이 있었음
    • 두 명령 모두 HID report 1으로 전송되는 단일 ASCII 문자였음
  • 실제 업데이트 구조는 단순했음
    • M 명령을 보낸 뒤 새로 노출된 디스크에 archive.tar.gz와 archive.md5를 복사함
    • archive.md5는 아카이브의 md5sum 값이었음
    • 그 뒤 디스크를 언마운트하고 U 명령을 보내면 플래싱이 시작되고, 이후 장치가 재부팅되어 새 펌웨어로 올라감
  • macOS에서는 컨테이너를 사용해 SSH 비밀번호 인증을 켜고 자신의 공개키를 authorized keys에 추가하는 커스텀 펌웨어를 만듦
    • 플래싱에 필요한 최소한의 함수 예시는 여기에서 확인할 수 있음
    • 스크립트를 실행해 플래싱한 뒤 장치에 SSH로 접속할 수 있었음
  • 이 장치는 펌웨어를 매우 쉽게 플래싱할 수 있었고, 기본 SSH 활성화와 기본 키 포함 이유는 확인되지 않은 채 남아 있음
    • 이 문제는 RODE에 티켓으로 전달했지만 답변은 받지 못함
    • 이후 펌웨어 업데이트에서 변화가 생기는지 계속 확인할 예정임
Read Entire Article