一部のiOSモバイルアプリケーションでSSL Kill Switchを使用して証明書のピン留めを回避しようとしましたが、成功しました。 SSL Kill Switchがクライアント側の証明書検証プロセスを「強制終了」し、これが動作することを理解しています。しかし、開発者がこれをどうにかして防ぐことができる方法はありますか?これは、証明書のピン留めが正常に構成されなかったことを示していますか?
iOS SSL Kill Switchプロジェクトのgithub readme から:
ジェイルブレイクされたデバイスにインストールされると、iOS SSL Kill SwitchはSecure Transport API内の低レベルSSL機能にパッチを適用します
つまり、基本的には、「ルート化された/ジェイルブレイクされたデバイスでアプリがマルウェアに感染するのを防ぐにはどうすればよいですか?」という質問になります。 要するに、あなたはしません。これが、デバイスのルート権限を取得しない理由です
これを難しくするためにできる難読化のトリックがあります。たとえば、独自の社内SSL/TLSライブラリ(ひどい、ひどい考え、これを行わないでください!)を記述してから、この暗号をコンパイル済みプログラムに含めて、 OSの暗号ライブラリに依存しません。これで、OSの暗号化レイヤーでのハッキングの影響を受けなくなりましたが、攻撃者がアプリを明確に標的にしている場合、それらを阻止する方法はないので、このような攻撃を防ぐことはできず、さらに困難になります。
私が聞いたもう1つのトリックは、アプリがルート化されたデバイスで実行されているかどうかを検出し、実行されている場合は実行を拒否することです。とは言っても、「脱獄検出をバイパスする」とグーグルすると、ハッカーと開発者の間でハックルモグラの絶え間ないゲームが行われ、ハッカーが脱獄を隠すことにますます巧妙になってきていることがわかります。このゲームはお勧めしません。
これを防ごうとしても意味がありません。技術的には、独自の暗号化(SSL Kill SwitchがOS提供の暗号化機能を変更する)を実装することで攻撃者の速度を低下させることができると思いますが、十分な時間と労力をかけて最終的にはクラックされることになります。
ハードウェアを制御しないと、ソフトウェアにチャンスがありません。それと一緒に暮らして、人々に彼らがやりたいことを何でもさせてくださいtheirデバイス。