[하루한줄] 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에 따라 다음과 같이 동작합니다.
RW_MFC_STATE_DETECT_TLV
블록의 TLV를 파싱해
p_mfc->ndef_length
값을 저장하고 그에 맞는 버퍼를 할당합니다.RW_MFC_STATE_READ_NDEF
블록의 TLV를 다시 디코딩해
p_mfc->ndef_length
값을 업데이트한 뒤 버퍼에 데이터를 복사합니다.
악성 NFC 패킷을 통해 두 STATE에서 서로 다른 p_mfc->ndef_length
값을 사용하도록 유도할 수 있습니다. 따라서 buffer overflow가 발생할 수 있으며 이를 악용해 원격 코드 실행 공격을 할 수 있습니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.