[하루한줄] CVE-2021-33881: RFID tear off attack, bypass monotonic counter

URL

RFID: Monotoic Counter Anti-Tearing Defeated

Target

MIFARE Ultralight EV1, MF0UL

MIFARE Ultralight C, MF0ICU

MIFARE Ultralight NANO, MF0UN

NT2L1, NT2H10, NT2H12

N2H13, NT2H15, NT2H16

Explain

NXP MIFARE Ultralight와 NTAG 카드는 replay 공격을 방지하기 위한 Monotonic Counter 기능을 사용하는데 해당 기능을 tear off 공격을 통해 무력화할 수 있는 취약점이 발견되었습니다. Tear off 공격이란 RFID 태그와 리더 사이 데이터 통신이 이루어지는 도중에 통신을 끊어버리는 공격 방식으로 EEPROM이 쓰기 작업을 하는 동안 RFID 태그의 데이터가 일관되지 않은 상태로 유지되어 버그가 발생하도록 유도합니다.

MIFARE Ultralight EV1은 24-bit Monotonic Counter를 사용하고 이와 관련된 커멘드를 사용합니다.

  1. INCR_CNT : Counter를 증가시킨다.
  2. READ_CNT : 현태 Counter의 값을 읽는다.
  3. CHECK_TEARING_EVENT : anti-tearing 8-bit flag를 검증한다.

INCR_CNT를 통해 유효한 Counter의 값을 증가 시킴과 동시에 tear off 공격을 수행하면 Counter에 대한 쓰기 작업에 인터럽트를 걸 수 있고, READ_CNT가 이전 Counter의 값을 리턴하면서 CHECK_TEARING_EVENT가 정상적인 검증 flag를 리턴하는 상황을 만들 수 있습니다.