StrandHogg 공격 / 작업 어피니티 취약점

OWASP 카테고리: MASVS-PLATFORM: 플랫폼 상호작용

개요

StrandHogg 공격/작업 어피니티 취약점은 Android에서 여러 작업, 특히 작업의 상위 항목 재배치라는 기능을 처리하는 방식에 포함된 디자인 버그로 인해 발생했습니다. 애플리케이션 작업 상위 항목 재배치는 애플리케이션이 한 작업에서 다른 작업으로 활동을 이동할 수 있는 기능입니다.

StrandHogg 공격은 수신되는 애플리케이션 작업 스택 활동을 확인하는 방법에 포함된 불명확성을 악용해 악성 애플리케이션이 다음 중 하나를 할 수 있게 합니다.

  • 피해를 입는 스택 간에 악성 활동 이동
  • 피해를 입는 활동이 완료되면 악성 활동을 반환 스택으로 설정

이 취약점은 allowTaskReparentingtaskAffinity 설정을 조작하는 데 악용됩니다.

영향

악성 애플리케이션이 활동 중 하나의 taskAffinity가 타겟 애플리케이션의 packageName과 일치하도록 설정할 수 있습니다. 그런 다음 이를 인텐트 도용과 결합하면 사용자가 다음에 대상 애플리케이션을 실행할 때 악성 애플리케이션도 실행되어 대상 애플리케이션 위에 표시됩니다.

그러고 나서 작업 어피니티 취약점을 사용하여 합법적인 사용자 작업을 도용할 수 있습니다.

사용자를 속여 악성 애플리케이션에 사용자 인증 정보를 제공할 수도 있습니다. 기본적으로 활동이 시작되고 작업과 연결되면 이러한 연결이 활동의 전체 수명 주기 동안 유지됩니다. 그러나 allowTaskReparenting을 true로 설정하면 이 제한이 해제되며, 기존 활동의 상위 항목을 새로 만든 '네이티브' 작업으로 다시 지정할 수 있습니다.

예를 들어 앱 B가 앱 A를 타겟팅하여 앱 A의 활동이 완료되어 반환되면 앱 A의 활동을 앱 B 활동 스택으로 리디렉션할 수 있습니다. 한 앱에서 다른 앱으로의 이러한 전환은 사용자에게 표시되지 않으며 심각한 피싱 위협이 발생합니다.

완화 조치

다음으로 업데이트합니다. android:targetSdkVersion=>28

StrandHogg 공격/작업 어피니티 취약점은 2019년 3월에 패치되었으며 Android SDK 버전 28 이상(Android 9)에는 이 취약점을 방지하기 위한 적절한 OS 패치가 포함되어 있습니다. 개별 애플리케이션 구성을 통해 StrandHogg 공격의 버전 1을 부분적으로 완화할 수는 있지만, 공격의 버전 2는 이 SDK 버전 패치로만 방지할 수 있습니다.

리소스