iOS Custom URI Handlers / Deeplinks / Custom Schemes
이것은 https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/에서 관련 정보의 요약입니다.
기본 정보
사용자 정의 URL 스키마는 앱이 사용자 정의 프로토콜을 사용하여 통신할 수 있도록합니다. 자세한 내용은 Apple 개발자 문서를 참조하십시오. 이러한 스키마는 앱에 의해 선언되어 해당 스키마를 따르는 URL을 처리합니다. 이 벡터를 통한 공격을 방지하기 위해 모든 URL 매개변수를 유효성 검사하고 잘못된 URL을 폐기해야합니다.
예를 들어, URI myapp://hostname?data=123876123
는 특정 애플리케이션 동작을 호출합니다. Skype Mobile 앱에서 발견된 취약점은 skype://
프로토콜을 통해 허가되지 않은 호출 동작을 허용했습니다. 등록된 스키마는 앱의 Info.plist
에서 CFBundleURLTypes
아래에서 찾을 수 있습니다. 악성 애플리케이션은 이를 이용하여 민감한 정보를 가로챌 수 있습니다.
애플리케이션 쿼리 스키마 등록
iOS 9.0부터 canOpenURL:
을 사용하여 앱의 가용성을 확인하려면 Info.plist
에서 LSApplicationQueriesSchemes
아래에 URL 스키마를 선언해야합니다. 이를 통해 앱의 열거를 방지하여 개인 정보 보호를 강화하기 위해 앱이 쿼리할 수 있는 스키마가 50개로 제한됩니다.
URL 처리 및 유효성 검사 테스트
개발자는 application:didFinishLaunchingWithOptions:
및 application:openURL:options:
와 같은 소스 코드의 특정 메서드를 검사하여 URL 경로 구성 및 유효성 검사를 이해해야 합니다. 예를 들어, 텔레그램은 다양한 방법으로 URL을 열기 위해 다음과 같은 메서드를 사용합니다:
다른 앱에 대한 URL 요청 테스트
openURL:options:completionHandler:
와 같은 메소드는 다른 앱과 상호작용하기 위해 URL을 열 때 중요합니다. 앱의 소스 코드에서 이러한 메소드의 사용을 식별하는 것은 외부 통신을 이해하는 데 필수적입니다.
폐기된 메소드에 대한 테스트
application:handleOpenURL:
및 openURL:
과 같은 폐기된 메소드는 URL 열기를 처리하는 데 사용되며, 보안적인 영향을 검토하기 위해 식별되어야 합니다.
URL 스키마 퍼징
URL 스키마 퍼징은 메모리 손상 버그를 식별할 수 있습니다. Frida와 같은 도구를 사용하여 다양한 페이로드를 가진 URL을 열어 충돌을 모니터링하는 프로세스를 자동화할 수 있습니다. 이는 iGoat-Swift 앱에서 URL을 조작하는 것으로 예시됩니다.
참고 자료
Last updated