アプリ内でサードパーティー製のカスタムキーボードを制限、無効化する方法を紹介します
脆弱性診断NG
事の発端は、↓でした。
Input Interception: Keyboard Extensions Allowed
これは、fortifyという脆弱性診断の静的解析ツールによって吐かれた脆弱性です。
サードパーティのカスタムキーボードの利用が無効化されていません。カスタムキーボードはユーザ入力を全て取得でき、悪意の有無に関わらずキーロギングを行っている可能性があります。
という脆弱性のようです。
カスタムキーボードの脆弱性とは?
予測変換などに活用するため、ユーザの入力情報を取得しているため、それによって、パスワードやクレジットカード情報などが送信されてしまう脆弱性があるようです。
例えば、有名なアプリsimejiでは下記のサイトのようなリスクが有るようです。
使うのは危険!?Simejiを安全に使う方法
対処法
対処法は、以下のコードをAppDelegate.swiftに書くだけです。
これで、simejiアプリを無効化することができました。
AppDelegate.swift
func application(_ application: UIApplication, shouldAllowExtensionPointIdentifier extensionPointIdentifier: UIApplicationExtensionPointIdentifier) -> Bool {
if extensionPointIdentifier == .keyboard {
return false
}
return true
}
参考資料
- http://blogs.quovantis.com/best-practices-to-avoid-security-vulnerabilities-in-your-ios-app/
- 自分のアプリでカスタムキーボードを使われないように制限する
おまけ
「カスタムキーボード 無効化」とぐぐっても出てこなくて苦労しました、、
「カスタムキーボード 制限」とググればよかったんですね、、泣