Tesla Wall Connectors에서 펌웨어 다운그레이드 래칏 우회

임베디드 장치의 보안은 종종 "보안 래칏"에 의존합니다—이는 오래된, 잠재적으로 취약한 펌웨어 버전의 설치를 방지하는 메커니즘입니다. 최근 기술 심층 분석에서 Synacktiv 연구원들은 Tesla Wall Connector (AW-CU300)가 이 래칏을 완전히 우회할 수 있는 방식으로 구현했으며, 충전 포트에 물리적으로 접근할 수 있는 공격자가 장치를 취약한 상태로 다운그레이드할 수 있음을 보여주었습니다.

이 취약점은 중요한 아키텍처 결함을 강조합니다: 펌웨어 업데이트 프로그램의 검증 로직과 부트로더의 실행 로직 사이의 불일치.

다운그레이드 방지 메커니즘

펌웨어 버전 24.44.3에서 Tesla는 다운그레이드를 방지하기 위해 보다 엄격한 검사를 도입했습니다. 업데이트 과정은 Single-Wire CAN을 통한 Unified Diagnostic Services (UDS) 세션을 사용합니다. 핵심 함수 switch_to_new_firmware()check_image_and_antidowngrade()를 호출하며, 이 함수는 펌웨어 세그먼트를 파싱하여 버전 설명자(VRSN)와 래칏 값(VRS2)을 확인합니다.

펌웨어의 래칏 값이 Persistent Storage Manager (PSM)에 저장된 현재 래칏 값보다 낮으면, 시스템은 실패를 로그에 기록하고 패시브 펌웨어 슬롯을 삭제합니다:

Failure: Security ratchet downgrade prevented %d < %d

일반적인 상황에서는 이것이 공격자가 오래된, 서명은 되었지만 취약한 이미지를 장치에 푸시하는 것을 방지합니다.

아키텍처 격차: 부트로더 vs. 업데이트 프로그램

연구원들은 업데이트 프로그램이 래칏을 적용하는 반면, 부트로더(boot2)는 그렇지 않다는 것을 발견했습니다. 부트로더는 펌웨어로 점프하기 전에 그 무결성을 검증하는 역할을 합니다. 부트로더는 다음을 확인합니다:

  1. 매직 헤더(SBFH).
  2. 세그먼트별 CRC32 체크섬.
  3. 저장된 키에 대한 RSA 서명.

핵심은 부트로더는 보안 래칏에 대한 개념이 없다는 점입니다. 버전 번호와 관계없이 올바르게 서명되고 CRC가 정확한 이미지는 모두 실행합니다. 다운그레이드 방지 보호는 UDS 루틴 0x201(switch-to-new-firmware 호출) 동안에만 적용됩니다.

우회 전략

래칏을 우회하기 위해 연구원들은 장치가 두 개의 펌웨어 슬롯(활성 및 패시브)을 처리하는 방식을 이용했습니다. 우회는 g_boot_flags(어느 슬롯이 패시브인지 결정하는)가 부팅 시에 설정되고 세션 동안 고정된다는 사실에 기반합니다.

이 익스플로잇은 세 단계 순서로 진행됩니다:

1. 슬롯 검증

공격자는 먼저 최신 유효한 펌웨어 이미지를 패시브 슬롯에 푸시하고 루틴 0x201을 호출합니다. 펌웨어가 최신이므로 검증이 통과하고, 시스템은 파티션 테이블을 업데이트하여 다음 부팅 시 이 슬롯을 활성 슬롯으로 표시합니다(gen_level을 증가시킴).

2. 내용 덮어쓰기

재부팅 없이 공격자는 다시 루틴 0xFF00을 호출합니다. 세션이 아직 활성 상태이므로 동일한 물리 슬롯이 패시브로 식별됩니다. 이 루틴은 이전에 검증된 펌웨어를 삭제하지만 파티션 테이블은 변경되지 않습니다. 파티션 테이블은 여전히 이 슬롯이 가장 최신이며 유효한 활성 슬롯이라고 판단합니다.

3. 취약 펌웨어 주입

그 다음 공격자는 이제 비어 있는 슬롯에 오래된, 서명은 되었지만 취약한 펌웨어 이미지를 푸시합니다. 루틴 0x201을 완전히 건너뛰어 래칏 검사를 피하고 즉시 루틴 0x202를 호출해 재부팅합니다.

재부팅 시 부트로더는 파티션 테이블을 확인하고, 가장 높은 gen_level을 가진 슬롯을 식별한 뒤 RSA 서명을 검증합니다(오래된 펌웨어가 Tesla에 의해 공식적으로 서명되었으므로 유효). 그리고 해당 이미지를 실행합니다.

영향 및 완화 방안

펌웨어를 버전 0.8.58로 다운그레이드함으로써 연구원들은 UDS를 통한 Wi‑Fi 자격 증명 유출 및 인자 파서의 버퍼 오버플로우를 이용한 디버그 쉘 획득 등 일련의 익스플로잇을 재활성화할 수 있었습니다. Wall Connector는 일반적으로 가정이나 사업장 네트워크에 연결되므로, 침해된 충전기는 사설 네트워크 내에서 지속적인 발판으로 작용하여 측면 이동을 가능하게 합니다.

Tesla는 이후 이 취약점을 패치했습니다. 유사한 문제를 방지하기 위해 연구원들은 다음과 같은 완화 방안을 제안합니다:

  • 부트로더 적용: 래칏 검사를 부트로더로 이동시켜 오래된 펌웨어가 절대 실행되지 않도록 합니다.
  • 파티션 무효화: 루틴 0xFF00을 통해 슬롯을 삭제할 경우 해당 파티션 테이블 항목도 무효화되도록 합니다.
  • 세션 제약: 업데이트가 성공한 후 강제 재부팅을 요구하거나, 슬롯이 커밋된 이후에는 새로운 업데이트 세션을 거부합니다.

커뮤니티 관점

기술적 익스플로잇은 정교하지만, 커뮤니티 논의에서는 이러한 취약점의 실질적인 영향을 강조합니다. 일부 사용자는 Gen 3 커넥터가 생성하는 필수 Wi‑Fi 액세스 포인트와 같은 원치 않는 기능을 비활성화하기 위한 이러한 기능을 원한다고 밝혔습니다. 다른 사람들은 EV 인프라 보안의 광범위한 영향을 우려하며, 수천 대의 충전기가 동시에 침해될 경우 악의적인 행위자가 전력 소비를 조작해 전력망을 불안정하게 만들 수 있다고 지적했습니다.

SUMMARY: 보안 연구원들은 Tesla Wall Connector의 업데이트 과정에 존재하는 결함이 공격자들이 다운그레이드 방지 보호를 우회하고 취약한 펌웨어를 플래시할 수 있게 하는 방법을 보여줍니다.

TITLE: Tesla Wall Connectors에서 펌웨어 다운그레이드 래칏 우회

Sources