제조사가 소프트웨어로 기기를 원격 비활성화하는 시대에, 정상적으로 작동하던 하드웨어가 순식간에 '전자 폐기물'로 전락하는 일이 벌어진다. 한 보안 연구자가 폐기물 더미에서 발견한 크리컷 메이커(Cricut Maker) 커팅 머신을 되살린 과정은 이 문제를 상징적으로 보여준다. 겉보기에 상태가 멀쩡했던 이 기기는 고무 롤러가 삭아 버려진 것으로 추정됐지만, 집으로 가져와 살펴보니 실제로는 제조사에 의해 잠긴 상태였다. 소프트웨어에 연결하면 'Machine deactivated(기기 비활성화)'라는 메시지가 떴다. 이전 사용자는 보증 교체를 받았거나 신형 할인을 받으면서 멀쩡한 본체를 폐기했을 가능성이 크다.
잠긴 기기, 세 갈래의 접근
연구자는 먼저 메인보드에서 일련번호를 다시 쓸 수 있는 EEPROM을 찾으려 했다. 롤러 교체를 위해 어차피 분해가 필요했지만, 기기에는 EEPROM이 없었고 사용된 MCU는 그가 가진 디버거로는 접근할 수 없었다. 두 번째로 네트워크 통신을 가로채 일련번호를 바꾸거나 성공 응답을 위조하는 방법을 검토했으나, 애플리케이션에 적용된 인증서 고정(certificate pinning) 등의 보안 조치 때문에 손쉽게 뚫기는 어려웠다. 불가능하다는 것이 아니라, 간단한 방법을 찾지 못했다는 것이다.
결국 그는 커팅 머신과 컴퓨터 사이의 USB 통신을 직접 가로채는 쪽으로 방향을 틀었다. 와이어샤크(Wireshark)로 USB 패킷을 캡처해 보니 기기는 USB CDC 방식으로 통신하고 있었고, 일련번호를 전송하는 패킷을 금방 찾아낼 수 있었다. 결정적으로 이 통신에는 체크섬이나 암호화가 전혀 없었다. 무결성 검증 장치가 없다는 것은 중간에서 값을 조작해도 소프트웨어가 이를 알아챌 수 없다는 뜻이다.
RP2040 프록시로 일련번호를 바꾸다
연구자는 USB 호스트와 클라이언트 역할을 동시에 할 수 있는 RP2040 보드를 활용했다. TinyUSB 아두이노 라이브러리에 포함된 USB 호스트 예제와 CDC 에코 예제를 조합해, 기기가 보내는 패킷 중 특정 길이와 명령·일련번호 형식이 맞는 것을 감지하면 다른 일련번호로 바꿔치기하는 중계 장치를 만들었다. 벤더·제품 ID를 비롯한 USB 메타데이터도 실제 기기와 동일하게 맞췄다. 한 가지 걸림돌은 USB 호스트 기능이 240MHz로 오버클럭하지 않으면 제대로 동작하지 않는다는 점이었는데, 이를 알아내는 데 다소 시간이 걸렸다.
하드웨어 수준에서 일련번호가 교체되자 소프트웨어는 아무것도 눈치채지 못했다. 기기는 그의 계정에 정상 등록됐고, 심지어 크리컷 기기 상태 페이지에 존재하지도 않는 일련번호까지 등록할 수 있었다. 그는 롤러를 교체하고(새 롤러는 뜨거운 물로 부드럽게 만든 뒤 끼우는 것이 요령이다) 본체를 재조립한 뒤 RP2040용 케이스까지 출력해, 마치 새 제품처럼 기기를 사용하게 됐다. 참고로 이 기기는 원래 18V가 필요하다고 알려졌지만 12V 전원으로도 자체 검사를 통과하고 소프트웨어와 통신했다.
실무자가 주목할 지점과 한계
이 사례는 IT 실무자에게 몇 가지 시사점을 준다. 첫째, 인증서 고정 같은 네트워크 계층 방어를 강화하더라도 기기와 호스트 사이의 로컬 인터페이스가 무방비라면 인증 우회의 문은 열려 있다. 크리컷의 경우 일련번호가 순차적으로 발급되고 그 상태를 자사 웹페이지에서 확인할 수 있다는 점, 그리고 통신에 검증 장치가 없다는 점이 결합되어 위험을 키웠다. 연구자 스스로도 지적하듯, 이는 낯선 제3자가 타인의 크리컷 일련번호를 자신의 계정에 추가하거나 반대로 잠금 상태로 만들 수 있다는 우려로 이어진다. 인증의 신뢰 기반을 쉽게 추측 가능한 식별자에 두는 설계가 얼마나 취약한지를 보여주는 대목이다.
둘째, 이 방식이 유일한 해법은 아니라는 점도 분명히 해둘 필요가 있다. 연구자 본인이 택한 하드웨어 중계 방식은 가장 사용자 친화적인 방법이라고 보기 어렵고, 소프트웨어만으로 해결하는 방법도 존재할 것으로 그는 추정한다. 다만 자신에게 맞는 해법을 이미 확보했기 때문에 다른 대안을 더 파고들지는 않았다. 또한 그는 일련번호 변경에 필요한 코드가 호주 저작권법상 예외에 해당하지 않을 수 있다는 이유로(법률 자문은 아니라는 단서와 함께) 공개하지 않았는데, 다만 TinyUSB 아두이노 라이브러리의 예제에 상당히 가깝다고만 밝혔다.
무엇보다 이 이야기의 본질은 기술적 묘기보다 지속가능성과 소유권의 문제다. 물리적으로 멀쩡한 기기가 제조사의 원격 명령 하나로 폐기물이 되고, 사용자는 이를 되돌릴 정당한 수단을 갖지 못한다. 수리할 권리(right to repair)와 클라우드 종속 하드웨어의 수명 문제는 앞으로 더 많은 소비자 제품에서 반복될 쟁점이며, 제품을 설계하고 도입하는 실무자라면 잠금 메커니즘의 보안성과 함께 그 사회적 비용까지 함께 저울질할 필요가 있다.