[하루한줄] Android OOB write in NFC stack

URL

OOB Write in NFC stack when handling MIFARE Classic TLVs

Target

Android-10

Android-11

Explain

악성 NFC 패킷을 통한 안드로이드 RCE 취약점이 발견되었습니다. 안드로이드 NFC는 함수rw_mfc_handle_read_op()를 사용해 블록 단위 요청을 보내고 MFC(MIFARE Classic) 카드로부터 NDEF(NFC Data Exchange Format)를 받아옵니다. 함수 rw_mfc_handle_read_op() 는 STATE에 따라 다음과 같이 동작합니다.

  1. RW_MFC_STATE_DETECT_TLV

    블록의 TLV를 파싱해 p_mfc->ndef_length값을 저장하고 그에 맞는 버퍼를 할당합니다.

  2. RW_MFC_STATE_READ_NDEF

    블록의 TLV를 다시 디코딩해 p_mfc->ndef_length값을 업데이트한 뒤 버퍼에 데이터를 복사합니다.

악성 NFC 패킷을 통해 두 STATE에서 서로 다른 p_mfc->ndef_length값을 사용하도록 유도할 수 있습니다. 따라서 buffer overflow가 발생할 수 있으며 이를 악용해 원격 코드 실행 공격을 할 수 있습니다.