Trawling

휴대전화가 전달한 설정 바꿔 메타 레이밴 안경 DAT 서명 검사 우회

개인 블로그 p0pcycle의 @pamoutaf는 Meta Ray-Ban 스마트안경에서 휴대전화가 전달하는 MobileConfig를 바꿔 DAT 앱 서명 검사를 우회하고, 앱 프로세스 권한으로 명령을 실행하는 셸을 열었다고 밝혔습니다. Meta 버그바운티에 보고하고 게시 승인을 받았지만, 접근이 사라진 원인은 확인하지 못했으며 수정 여부는 승인에 근거한 추정이라고 설명했습니다.

개인 블로그 p0pcycle을 운영하는 @pamoutaf는 2026년 11월 6일 Meta Ray-Ban 스마트안경에서 DAT 앱의 서명 검사를 우회해 앱 프로세스에서 명령을 실행한 실험을 공개했습니다. 사이버보안 분야에서 일한다고 소개한 그는 실험을 Meta 버그바운티 프로그램에 보고했고, Meta가 블로그 게시를 승인했다고 밝혔습니다.

Meta AI 앱의 개발자 모드에서 안경과 상호작용하는 앱을 만들 때는 Device Access Toolkit(DAT) SDK를 이용합니다. 안경 쪽에서 DAT 세션을 열려면 DAT APK가 필요하고, Meta AI 앱이 이를 내려받아 안경에 설치합니다. @pamoutaf는 Meta AI 앱의 펌웨어 업데이트 요청을 분석해 안경 펌웨어를 내려받은 뒤 DAT APK의 설치 경로를 살폈습니다.

펌웨어 126까지는 안경이 DAT APK의 Meta 서명을 확인하지 않았습니다. 작성자는 Meta AI 앱이 설치할 APK를 자신의 서명으로 만든 파일로 바꿔 안경에서 실행했습니다. 펌웨어 127부터는 이 서명 검사가 적용됐지만, 검사 여부는 MobileConfig의 wss_appmanager.signature_verification_enabled 설정으로 제어됐습니다.

안경은 설정을 직접 서버에서 받지 않습니다. 짝지은 휴대전화가 Meta 서버에서 MobileConfig를 받아 Airship을 통해 안경으로 전달합니다. 이 파일에는 펌웨어 업데이트 없이 기능을 제어하는 설정값이 들어갑니다. 작성자에 따르면 안경은 파일이 구조적으로 올바른지는 확인했지만 내용이 변조됐는지는 검증하지 않았습니다. 그는 휴대전화에서 설정 파일 0.mctable의 값을 0x80에서 0x00으로 바꿨고, 안경은 서명 검사를 끄는 변경된 설정을 받아들였습니다. 그 결과 자체 서명한 DAT APK를 다시 설치할 수 있었습니다.

APK를 설치한 것만으로 앱이 실행되지는 않습니다. DAT APK는 개발자 앱이 안경과 연결하는 DAT 세션을 요청할 때 동작합니다. 작성자는 Meta의 Camera Access 샘플 앱으로 세션을 열었지만, 샘플 앱이 정식 DAT APK를 예상해 준비 상태 검사에서 오류를 내고 연결을 닫았습니다. 그는 Frida로 검사 함수 startDwaReadinessProbe()를 건너뛰게 해 연결이 유지되도록 했습니다.

이후 작성자는 사진·동영상 동기화 때 쓰이는 Wi-Fi Direct 연결을 이용했습니다. Meta AI 앱이 Wi-Fi Direct 그룹을 만들도록 Camera Access 앱에서 Frida로 ‘high link lease’를 요청했고, 안경이 그 그룹에 연결되자 자체 앱에서 TCP 31337 포트의 접속을 기다렸습니다. 휴대전화에서 해당 포트에 접속해 명령을 보내면 셸을 사용할 수 있었습니다.

작성자가 제시한 uid=10097은 DAT 앱 프로세스의 사용자 식별자입니다. 그는 셸 접근이 약 닷새 동안 이어진 뒤 사라졌다고 썼습니다. 당시 안경에서 권한을 더 높일 방법을 찾고 있었지만, 접속이 끊긴 이유가 자신의 보안 관리 실수인지 Meta의 수정 때문인지는 알지 못한다고 밝혔습니다. 작성자는 Meta가 게시를 승인한 점을 근거로 문제가 수정됐을 것으로 추정했습니다.

참고 자료

오류 제보