본문으로 바로가기

과도한 권한 취약점 이란?

- 과도한 권한(Excessiv Permissions) 또는 불필요한 권한 취약점은 앱 권한을 잘못 사용할때 발생하는 취약점으로, 개발자는 앱 기능상 꼭 필요한 기능만 사용하여야하며 해당 기능을 사용에 대한 문구를 작성하여 사용자에게 알려야한다.

- 앱은 접근 권한이 필요한 UsageDescription 키를 Info.plist 파일에 저장하고 있음.

- Info.plist 파일에 저장된 UsageDescription 키에 대한 접근 권한이 필요한 경우, 시스템에서 앱 대신 권한을 요청함.

 

대응방안

- 주어진 권한이 앱에서 반드시 필요한 것인지 확인 후, 불필요하거나 과도한 권한일 경우 삭제.
- 해당 권한을 왜 사용하여야 하는지 문구를 상세히 작성.

 

UsageDescription 키에 대한 자세한 내용은 아래의 사이트에서 확인 할 수 있음.

Protected resources | Apple Developer Documentation

 

Apple Developer Documentation

 

developer.apple.com

 

 UsageDescription 키 종류

분류 항목 설명
블루투스
(Bluetooth)


NSBluetoothAlwaysUsageDescription 앱이 블루투스에 액세스해야 하는 이유를 사용자에게 알려주는 메시지
NSBluetoothPeripheralUsageDescription
앱이 Bluetooth 주변 장치에 연결하는 기능을 요청하는 이유를 사용자에게 알려주는 메시지
일정 및 미리 알림
(Calendar and
reminders)
NSCalendarsUsageDescription 앱이 사용자의 일정 데이터에 대한 액세스를 요청하는 이유를 사용자에게 알려 주는 메시지
NSRemindersUsageDescription 앱이 사용자의 미리 알림에 대한 액세스를 요청하는 이유를 사용자에게 알려주는 메시지
카메라 및 마이크
(Camera and
microphone)
NSCameraUsageDescription 앱이 장치의 카메라에 대한 액세스를 요청하는 이유를 사용자에게 알려 주는 메시지
NSMicrophoneUsageDescription 앱이 장치의 마이크에 대한 액세스를 요청하는 이유를 사용자에게 알려 주는 메시지
연락처
(Contacts)
NSContactsUsageDescription 앱이 사용자의 연락처에 대한 액세스를 요청하는 이유를 사용자에게 알려 주는 메시지
얼굴 인식
(Face ID)
NSFaceIDUsageDescription 앱이 Face ID로 인증하는 기능을 요청하는 이유를 사용자에게 알려주는 메시지
파일 및 폴더
(Files and folders)
NSDesktopFolderUsageDescription 앱이 사용자의 데스크톱 폴더에 액세스해야 하는 이유를 사용자에게 알려 주는 메시지
NSDocumentsFolderUsageDescription 앱이 사용자의 문서 폴더에 액세스해야 하는 이유를 사용자에게 알려 주는 메시지
NSDownloadsFolderUsageDescription 앱이 사용자의 다운로드 폴더에 액세스해야 하는 이유를 사용자에게 알려 주는 메시지
NSNetworkVolumesUsageDescription 앱이 네트워크 볼륨의 파일에 액세스해야 하는 이유를 사용자에게 알려 주는 메시지
NSRemovableVolumesUsageDescription 앱이 이동식 볼륨의 파일에 액세스해야 하는 이유를 사용자에게 알려 주는 메시지
NSFileProviderDomainUsageDescription 앱이 파일 공급자가 관리하는 파일에 액세스해야 하는 이유를 사용자에게 알려 주는 메시지
게임 센터
(Game center)
NSGKFriendListUsageDescription 앱이 Game Center 친구 목록에 액세스해야 하는 이유를 사용자에게 알려주는 메시지
건강
(Health)
NSHealthClinicalHealthRecordsShareUsageDescription 앱이 임상 기록을 읽을 수 있는 권한을 요청한 이유를 설명하는 사용자에게 보내는 메시지
NSHealthShareUsageDescription 앱이 HealthKit 스토어에서 샘플을 읽을 수 있는 권한을 요청한 이유를 설명하는 사용자에게 보내는 메시지
NSHealthUpdateUsageDescription 앱이 HealthKit 스토어에 샘플을 저장할 수 있는 권한을 요청한 이유를 설명하는 사용자에게 보내는 메시지

(Home)
NSHomeKitUsageDescription 앱이 사용자의 HomeKit 구성 데이터에 대한 액세스를 요청하는 이유를 사용자에게 알려주는 메시지
위치
(Location)


NSLocationAlwaysAndWhenInUseUsageDescription 앱이 항상 사용자의 위치 정보에 대한 액세스를 요청하는 이유를 사용자에게 알려주는 메시지
NSLocationUsageDescription 앱이 사용자의 위치 정보에 대한 액세스를 요청하는 이유를 사용자에게 알려 주는 메시지
NSLocationWhenInUseUsageDescription 앱이 포그라운드에서 실행되는 동안 앱이 사용자의 위치 정보에 대한 액세스를 요청하는 이유를 사용자에게 알려 주는 메시지
NSLocationAlwaysUsageDescription 앱이 항상 사용자 위치에 대한 액세스를 요청하는 이유를 사용자에게 알려주는 메시지
미디어 플레이어
(Media Player)
NSAppleMusicUsageDescription 앱이 사용자의 미디어 라이브러리에 대한 액세스를 요청하는 이유를 사용자에게 알려 주는 메시지
움직임
(Motion)
NSMotionUsageDescription 앱이 장치의 동작 데이터에 대한 액세스를 요청하는 이유를 사용자에게 알려주는 메시지
NSFallDetectionUsageDescription 낙상 감지 이벤트 데이터에 액세스할 수 있는 권한에 대한 앱의 요청을 설명하는 사용자에게 보내는 메시지
네트워킹
(Networking)


NSLocalNetworkUsageDescription 앱이 로컬 네트워크에 대한 액세스를 요청하는 이유를 사용자에게 알려 주는 메시지
NSNearbyInteractionUsageDescription 주변 장치와의 상호 작용 세션을 시작하기 위한 사용자에게 권한 요청을 보내는 메시지
NSNearbyInteractionAllowOnceUsageDescription
주변 장치와의 상호 작용 세션을 시작하기 위한 사용자 권한에 대한 일회성 권한 요청을 보내는 메시지
NFC NFCReaderUsageDescription 앱이 장치의 NFC 하드웨어에 대한 액세스를 요청하는 이유를 사용자에게 알려 주는 메시지
사진
(Photos)
NSPhotoLibraryAddUsageDescription 앱이 사용자의 사진 라이브러리에 대한 추가 전용 액세스를 요청하는 이유를 사용자에게 알려 주는 메시지
NSPhotoLibraryUsageDescription 앱이 사용자의 사진 라이브러리에 대한 액세스를 요청하는 이유를 사용자에게 알려 주는 메시지
보안
(Security)
NSUserTrackingUsageDescription 앱이 사용자 또는 장치를 추적하기 위해 데이터를 사용할 수 있는 권한을 요청하는 이유를 사용자에게 알리는 메시지
NSAppleEventsUsageDescription 앱이 Apple 이벤트를 보내는 기능을 요청하는 이유를 사용자에게 알려 주는 메시지
NSSystemAdministrationUsageDescription 앱이 시스템 구성 조작을 요청하는 이유를 사용자에게 알려주는 macOS의 메시지
센서
(Sensors)
NSSensorKitUsageDescription 앱 연구 조사의 목적에 대한 간단한 설명
시리
(Siri)
NSSiriUsageDescription 앱이 Siri에게 사용자 데이터를 보내도록 요청하는 이유를 사용자에게 알려주는 메시지
음성
(Speech)
NSSpeechRecognitionUsageDescription 앱이 Apple의 음성 인식 서버로 사용자 데이터를 보내도록 요청하는 이유를 사용자에게 알려주는 메시지
TV NSVideoSubscriberAccountUsageDescription 앱이 사용자의 TV 제공업체 계정에 대한 액세스를 요청하는 이유를 사용자에게 알려주는 메시지
지갑
(Wallet)
NSIdentityUsageDescription 앱이 ID 정보를 요청하는 이유를 사용자에게 알려 주는 메시지

 

DVIA-v2 앱을 통한 실습

과도하거나 불필요한 권한이 부여되어 있는지 확인하기 위해 DVIA-v2 앱을 실행.

 

메인메뉴 좌측 상단 메뉴 클릭 > Excessive  Permissions 클릭

 

CAMERA PERMISSION 클릭 > 앱을 대신하여 시스템이 해당 권한이 왜 필요한지를 알리는 문구와 함께 접근 여부를 확인하고 있다.

 

3uTools Files 실행 > /private/var/mobile/Containers/Data/Application/$uuid/DVIA-v2.app 경로로 이동 > Info.plist 더블클릭

 

아래와 같이 사용중인 UsageDescription 키와 설명 문구를 확인할 수 있음.

 

다른 방법으로 디바이스의 설정 앱을 통해 아래와 같이 설치된 앱과 그 앱이 무슨 권한을 필요로 하는지 알 수 있음.