TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 19 READS

라즈베리파이 RP2350, 레이저로 뚫린 시큐어 디버그 — 하드웨어 방어의 빈틈

라즈베리파이 RP2350, 레이저로 뚫린 시큐어 디버그 — 하드웨어 방어의 빈틈
SOURCE IMAGE · HACKER NEWS

Ledger Donjon 연구진이 라즈베리파이의 듀얼코어 마이크로컨트롤러 RP2350의 최신 A4 리비전을 대상으로, 영구적으로 비활성화된 시큐어 디버그를 물리 공격으로 되살리는 데 성공했다. 광자 방출 현미경(PEM)으로 디버그 활성화 레지스터의 위치를 특정한 뒤, 레이저 결함 주입(LFI)으로 두 개의 비트를 강제로 세팅해 칩의 시큐어 월드에 대한 디버거 접근 권한을 복원했다. 이어 리스큐 리셋을 활용해 일회성 프로그래머블 메모리(OTP)에 저장된 비밀값까지 추출했다. RP2350은 라즈베리파이가 2024년부터 해킹 챌린지를 열어 외부 연구자에게 방어 기능 평가를 적극 요청해 온 칩으로, 지적된 결함을 반영해 내놓은 것이 바로 이번에 검증된 A4 버전이다.

공격이 겨냥한 한 지점

RP2350의 보안 설계는 OTP 메모리에 뿌리를 둔다. 각 비트는 0에서 1로 한 번만 바뀌고 되돌릴 수 없으며, 128바이트 페이지 단위로 하드 락과 런타임 소프트 락이 걸린다. 특히 보안 관련 필드는 여덟 개 행에 걸친 다수결 투표나 삼중 중복 인코딩으로 결함 주입에 대비해 두었다. 영구 플래그인 CRIT1.DEBUG_DISABLE이 설정되면 두 코어의 메모리 접근 포트(Mem-AP)가 버스에 아예 접근하지 못하도록 차단된다.

문제는 이 차단에 정식 우회로가 존재한다는 점이다. 메모리 매핑 레지스터인 DEBUGEN은 시큐어 소프트웨어가 모든 비트를 세팅하면 DEBUG_DISABLE을 완전히 덮어쓸 수 있다고 데이터시트가 명시한다. 그런데 OTP의 보안 필드와 달리 DEBUGEN에는 비트 중복도, 패리티도, 다수결도 문서화되어 있지 않다. 즉 시큐어 디버그를 여는 핵심 관문이 정작 결함 주입 방어를 갖추지 못한 셈이다. 연구진이 이 레지스터를 표적으로 삼은 이유다.

바늘을 찾아 레이저로 꽂다

특정 DEBUGEN 비트 하나를 세팅하려면 그 비트의 저장소를 정확히 맞춰야 한다. 파이프라인의 어느 플립플롭을 건드려도 같은 효과가 나는 명령 스킵 결함과 달리, 이는 건초더미 속 바늘을 찾는 문제여서 무작위 스캔이 사실상 불가능하다. 연구진은 트랜지스터가 스위칭할 때 방출하는 미약한 근적외선 광자를 이용했다. 레지스터의 특정 비트를 반복해서 켜고 끄는 루프를 돌리며 프레임을 수백 장 평균 내고, 대상 비트만 다른 두 루프의 결과를 서로 빼서 공통 배경과 센서 잡음을 상쇄했다. 그 결과 DEBUGEN 비트 0~3에 대응하는 활동 지점들을 수 마이크로미터 범위로 좁혔다.

이 지도를 바탕으로 980nm 펄스 레이저(최대 2.97W를 약 40%인 1.2W로, 100ns 폭, 50배 대물렌즈)를 쏘고 매 펄스마다 SWD로 디버그 포트 상태를 확인했다. 수 마이크로미터 떨어진 두 지점에서 각각 코어 1의 Mem-AP 버스 접근(PROC1)과 시큐어 접근(PROC1_SECURE)이 켜졌다. 한 비트를 세팅하면 다른 비트가 꺼지기도 해서, 스크립트가 두 지점을 오가며 반복 조사하는 방식으로 두 비트를 모두 세운 뒤에는 몇 초 만에 시큐어 디버그가 열렸다. 흥미롭게도 20배 대물렌즈로는 재현되지 않았는데, 넓은 초점이 비트를 세우는 영역과 지우는 영역을 동시에 때렸기 때문으로 보인다.

리셋을 이용한 비밀 추출과 실무적 의미

시큐어 디버그를 얻어도 챌린지 펌웨어가 부팅 시 페이지 48에 가장 엄격한 런타임 락(0b1111)을 걸어 비밀값 읽기를 막는다. 다만 이 소프트 락은 OTP 리셋 시 영구 락 값에서 다시 초기화되며, 영구 락 PAGE48_LOCK1은 시큐어 읽기를 여전히 허용한다. 연구진은 항상 접근 가능한 RP-AP의 CTRL.RESCUE_RESTART로 리스큐 리셋을 걸어, 부트 ROM이 사용자 펌웨어 실행 전에 멈추도록 만들었다. 펌웨어가 런타임 락을 다시 적용하기 전에 시큐어 읽기로 128비트 비밀을 온전히 회수한 것이다. 또한 우발적 쓰기를 막는 DEBUGEN_LOCK조차 레이저 앞에서는 무력했다. 잠금 비트가 1인 상태에서도 펄스가 DEBUGEN을 세팅했고, 잠금 비트는 한 번 1이 되면 0으로 돌아오지 않아 오히려 비활성 상태 복원을 막았다.

실무자 관점에서 이 사례는 두 가지를 시사한다. 첫째, 결함 주입 방어는 개별 필드가 아니라 강제 우회 경로까지 포함한 시행 사슬 전체에 균일하게 적용되어야 한다는 점이다. 중복 인코딩으로 보호된 OTP가 있어도, 그것을 덮어쓸 수 있는 레지스터가 무방비라면 방어선은 그 지점에서 무너진다. 둘째, 이 공격은 시큐어 부트 자체를 깨뜨려 인증되지 않은 펌웨어를 실행시키는 것이 아니라, 검증 이후에도 디버거에 남는 런타임 상태를 겨냥한다는 점이다. TrustZone의 런타임 격리가 시큐어 코어를 매개로 무력화된다.

다만 한계도 분명하다. 공격에는 물리적 접근, 후면 디캡슐레이션 같은 파괴적 사전 작업, 그리고 약 25만 달러 규모의 실험실 장비가 필요하다. 원격이나 대량 공격에 곧바로 쓰일 성격은 아니며, 고가치 표적에 대한 정교한 물리 공격 시나리오에 해당한다. 그럼에도 소비자용 마이크로컨트롤러의 하드웨어 보안 경계를 검증한 사례로서, 방어 설계자에게는 중복 보호의 적용 범위를, 제품 개발자에게는 물리 공격을 전제한 위협 모델링의 필요성을 다시 상기시킨다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://donjon.ledger.com/blog/rp2350-secure-debug-laser-fau...
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...