Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2020-14292 — CVE-2020-14292 세부 정보 | Kitploit
도구/GitHubGitHub/alwentiu/cve-2020-14292
Android SecurityBluetooth SecurityVulnerability AnalysisWireless SecurityMobile SecurityPrivacy
GitHubalwentiu/cve-2020-14292

CVE-2020-14292

CVE-2020-14292 세부 정보

저장소 보기
246년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2020-14292: COVIDSafe 앱의 블루투스 전송(Bluetooth Transport) 문제

작성자: Alwen Tiu, 호주국립대학교(The Australian National University)

최종 업데이트: 2020-09-08

요약

Android용 COVIDSafe 앱 1.0.21 이하 버전에서 GATT 연결 시 블루투스 전송 옵션을 안전하지 않게 사용하여, 공격자가 앱을 속여 블루투스 BR/EDR 전송 방식으로 연결을 설정하게 할 수 있으며, 이를 통해 사용자 동의 없이 피해자 휴대폰의 공개 블루투스 주소가 노출되어 휴대폰의 블루투스 주소 무작위화(랜덤화) 보호 기능이 우회됩니다. 이 문제는 CVE-2020-14292로 추적되고 있습니다.

기술적 설명

이 문제의 원인은 startWork 함수에 있으며, 이 함수에서 connectGatt를 사용하여 GATT 연결을 설정하지만 전송 옵션이 지정되지 않았습니다.

root@kitploit:~
fun startWork(
    context: Context,
    gattCallback: StreetPassWorker.StreetPassGattCallback
) {
    gatt = device.connectGatt(context, false, gattCallback)
    if (gatt == null) {
       CentralLog.e(TAG, "Unable to connect to ${device.address}")
    }
}

이로 인해 Android는 블루투스 연결을 시작할 때 전송 방식으로 TRANSPORT_AUTO 옵션을 사용하게 됩니다. Android 구현에서는 연결 대상 주변기기가 듀얼 모드 장치(BR/EDR 및 LE 모두 지원)인 경우 기본적으로 BR/EDR로 설정되는 것으로 보입니다. 이는 Android의 GATT 클라이언트 구현 때문일 수 있습니다. 예를 들어, 이 코드를 참조하십시오(관련 코드 발췌문은 아래 포함):

root@kitploit:~
 // Determine transport
  if (transport_p != BT_TRANSPORT_AUTO) {
    transport = transport_p;
  } else {
    switch (device_type) {
      case BT_DEVICE_TYPE_BREDR:
        transport = BT_TRANSPORT_BR_EDR;
        break;

      case BT_DEVICE_TYPE_BLE:
        transport = BT_TRANSPORT_LE;
        break;

      case BT_DEVICE_TYPE_DUMO:
        if (transport_p == BT_TRANSPORT_LE)
          transport = BT_TRANSPORT_LE;
        else
          transport = BT_TRANSPORT_BR_EDR;
        break;
    }

BR/EDR은 MAC 주소 무작위화를 지원하지 않으므로, 중앙 기기(central)는 자신의 식별 주소(identity address)를 주변 기기(peripheral)에 노출하게 됩니다.

공격을 실행하려면, 공격자는 듀얼 모드 장치(BR/EDR + LE)에서 공개 주소를 사용하여 GATT 서버를 광고합니다(이 부분이 중요합니다. 그렇지 않으면 다운그레이드가 발생하지 않으며 Android 중앙 기기는 LE 전송 방식을 사용합니다). 이로 인해 COVIDSafe 앱이 LE 전송 대신 BR/EDR 전송을 사용하여 주변 기기에 연결하게 되고, 결과적으로 휴대폰의 공개 주소가 노출됩니다. 이는 테스트된 모든 휴대폰과 Android 버전에서 동작합니다.

Android 6 이상에서는 수정이 간단합니다. 전송 옵션을 명시적으로 지정하면 됩니다.

root@kitploit:~
  gatt = device.connectGatt(context, false, gattCallback, BluetoothDevice.TRANSPORT_LE)

하지만 이 방법은 Android 5.1(API 레벨 22)에서는 작동하지 않습니다. 해당 메서드가 API에 노출되어 있지 않기 때문입니다. 실제로는 존재하지만 숨겨져(hidden) 있습니다. 따라서 Android 5.1의 경우, 리플렉션(reflection)을 사용하여 해당 숨겨진 메서드를 호출하는 것이 가능한 수정 방법입니다. 이러한 수정 사항은 COVIDSafe (Android) v1.0.48에 구현되었습니다.

그러나 Android 5.1용 수정은 100% 작동하지 않을 수 있습니다. 테스트 결과 여전히 식별 주소가 유출되는 것으로 나타났습니다. 이는 런타임 시 리플렉션 기법의 실패 때문일 수 있으며, 추가 조사가 필요합니다.

보안 및 개인정보 보호 영향

휴대폰의 식별 주소를 확보한 공격자는 블루투스가 켜져 있고 공격자의 블루투스 범위 내에 있을 때 해당 휴대폰을 추적할 수 있습니다. 일부 블루투스 관련 취약점(예: CVE-2020-0022)은 추가 공격을 수행하기 위해 식별 주소에 대한 정보에 의존하므로, 이 공격을 다른 공격과 연계할 가능성이 있습니다. 공격자가 식별 주소를 보유할 때의 결과에 대한 일부 내용은 이 문서를 참조하십시오.

권고 사항

Android 버전의 COVIDSafe 앱 사용자는 앱을 업데이트할 것을 강력히 권장합니다. Android 5를 사용하는 경우, 블루투스 기능이 필요하지 않은 상황에서는 블루투스를 끌 것을 권장합니다.

공개 타임라인

이 문제는 2020년 6월 2일 호주 정부 디지털 전환 기관(Digital Transformation Agency)에 처음 보고되었습니다. 첫 번째 수정은 2020년 6월 22일에 Android 6 이상을 대상으로 배포되었으며, Android 6 이상에서 작동하는 것이 확인되었습니다. 그러나 이 문제는 여전히 Android 5.1에 영향을 미쳤습니다. 2020년 7월 30일에 배포된 두 번째 수정에서 Android 5.1의 남은 문제를 해결했습니다.

감사의 말

이 문제를 독립적으로 확인하고 관련 다양한 논의에 참여해 준 Jim Mussared에게 감사를 표합니다.

도구 다운로드