パスコード(パスワード)は連続で複数回間違えると、一定時間が経過するまで再入力不可能という状態になります。 ですが、条件により、この制限を回避出来てしまう脆弱性が報告されています。
以前から知られていた物なのか分からないのですが、これを利用した総当たり攻撃(Brute force attack)のデモも公開されていましたので、一緒にご紹介。用心しましょう。
ちなみに、今回の話は脱獄には無関係です・・・!!
影響のある範囲について
*iPhone、iPad共にiOS 6.1.2 & iOS 6.1.3で再現可能でした。(他のバージョンでも再現できるかもしれません)
今回報告された手法ではロック画面のパスコード入力は影響範囲外です。ロック解除のためのパスコードは影響を受けないようなので、とりあえずこの点は安心。
ではどこが影響を受けるのか?という事ですが、設定アプリの「パスコードロック」項目・「機能制限」項目などが影響範囲内となっています。
パスコードロックの設定・機能制限の設定へアクセスするには機能をオンにした際のパスコード入力が必要ですが、今回の手法を使うとパスコード入力に何度失敗しても連続で挑戦できると言う事になります。
条件
また、影響を受ける範囲内だとしても、簡単なパスコードを使っている事が条件です。
簡単なパスコードとは『数字キーのみで構成されたパスコード』です。英数字キーボードを使うパスコードは影響を受けません。
パスコード入力回数制限
これらの項目にアクセスする際には設定しておいたパスコードを入力する必要がありますが、連続6回間違えると1分間再入力が出来ないペナルティが課せられます。
1分後にもう一度間違えると5分間のペナルティ、5分後にもう一度間違えると15分間のペナルティ、15分後にもう一度間違えると60分のペナルティが課せられ、それ以降は1度間違える度に60分のペナルティとなります。
要するに、10回目以降は1時間に1回しかパスコードを入力する機会が与えられないと言う事です。
今回はこの制限を回避して、連続で何回もパスコード入力が出来る様になってしまう脆弱性の話。
回避手法について
Un lapin Nabaztag氏によると、今回の手法はBluetoothキーボードなど、外部キーボードを使用するとのこと。
ということで、早速試してみる!外部キーボードにはMac miniで使っていたApple Wireless Keyboardを使用。
売り上げランキング: 307
試す
設定アプリ > 一般 > 「パスコードロック」・「機能制限」のどちらでも良いので、6回連続でパスコード入力を失敗させます。これで「1分後にやり直してください」となり、キーをタップしても一切入力が出来ない状態となります。
この状態で外部キーボードから数字を入力してみましょう。はい、1分間のペナルティ中にもかかわらず入力が出来てしまいました!あら、不思議。
もちろん正解のパスコードを入力すれば、設定画面へアクセスすることができます。そうなれば正解のパスコードも把握出来ていますので、パスコードを変更したり設定を変更したり、機能制限を解除したい…やりたい放題。ナンテコッタ!
また、外部キーボードから間違えたパスコードを入力し続けたとします。その場合は5分・15分・60分とペナルティ表示はある物の、何も影響されること無くパスコード入力は続行可能。
更に、1度外部キーボードから入力&パスコード入力に失敗した後は、画面のキーをタップして入力も有効になってしまいます。
下記の画像をご覧ください。パスコード入力に1001回失敗した時の画像です。今回は色々とズルをしたため速くなっていますが、順番に入力し続けたとしても約10分弱で1000通りのパスコードを試すことが出来たと言う状況です。
「0000 ~ 9999」まで1万通りを試せばいつかは正解のパスコードに当たるわけですから、がんばれば数時間で解除出来ちゃうと言うことに。
総当たり攻撃のデモ
「0000 ~ 9999」まで全ての順番に試していく総当たり攻撃(Brute force attack)のデモをUn lapin Nabaztag氏が公開していますので見てみましょう。
このデモでは「Apple iPad Camera Connection Kit」を使って「Teensy 3.0」という開発ボードをiPadに接続し、自動で0000 ~ 9999まで入力させています。
入力はゆっくり行われていますので、9999に到達するまでには13~15時間程度でしょうか。
対策方法!
今回の手法ではロック画面上でのパスコード入力回数制限は回避出来ませんので、その点は大丈夫だと思います。
ただし、ロックを解除した状態だとこの手法が使えてしまいますので、対策が必要です。
今回の条件は「簡単なパスコード(数字)」であるということですので、数字キーボードを使用したパスコードではなく、英数字キーボードを使用したパスコードにしましょう。(機能制限って出来るのかな?)
〆
パスコードを使用していない私には、なんの関係も無かった! でも、面白かったです。
コメント
使用してないんかい!
記事とは別ですが、IOS7に摸倣したフォントがあります。
日本語だけを細字に出来ないでしょうか?
Fonteeで細字にすることは可能なのですが、全てのフォントに反映されてしまいますので、日本語だけとなりますと日本語のフォント自体を自身で差し替える必要が出てくるかなと思います。
https://tools4hack.santalab.me/jbapp-ws-hbang-fontee.html
今まで機能制限パスコードを忘れた場合には、iOSの復元しかなかったので、一部の人には朗報かも。
ただし、ロック画面パスコードは分かっているか、していないこと。
さらに、ブルートゥースキーボードを持っていないと、買いに行かないといけないですが。
簡単なパスワードで無いときに数字だけを設定していると、
任意の桁の数字暗証番号となってテンキーが表示されるのですがその場合は使えるのでしょうか。
あ!それがありましたね・・・検証し忘れていました・・・
その場合では数字キーボードとなりますので、今回の対象範囲内となります。これは桁数に関係無く、外部キーボードから連続入力が可能となってしまいます。
僕も機能制限パスワードをわすれてしまってこれを実践してみたいと思うのですが
この方法はIOS7.0.2でも使えますか?
ちなみに、iOS7.0.3(iPadmini Retina)では出来ませんでした。
iOS7.1.2で可能でしょうか?
いえ、以前のアップデートで対策されたかと思います
外部キーボードとはBluetoothキーボード以外の普通のpcのキーボードではダメなのでしょうか?
6.1.2で所定回数を超えてロックされたものを何とかデータを回収したいのですが無理ですか?
そのバージョンであれば、すでに信頼されているPCであれば接続できたかと思います。
それもない、もしくはうまく接続出来ない場合は、時間経過を待ち、正常なパスコードを入力するのが早いのかな…と思います。