web-dev-qa-db-ja.com

ユーザーが攻撃者のCA証明書をインストールすると、モバイルアプリはHTTPS MITM攻撃をどのように防止しますか?

偽の信頼できるCA証明書をインストールするモバイルアプリを使用しているため、他のアプリのHTTPSトラフィックをキャプチャできます。ほとんどの場合、このMITM攻撃は成功しています。

ただし、一部のアプリは他のアプリよりも安全であり、偽の信頼されたCA証明書によるMITM攻撃が行われている場合は、サーバーへの接続を拒否することに気付きました。

これらのアプリはどのようにMITM攻撃を検出しますか?これはクライアント側で発生していますか、それともサーバー側で発生していますか?

ユーザーが攻撃者の信頼できるCA証明書をインストールしている場合、HSTSおよび公開キーのピン留めを使用してMITMを防止できないようです。もしそうなら、どの技術ができますか?

2
user123540

これは、一部のアプリケーションがSDKの一般的なHTTPS APIを使用しないためです。それらのいくつかは独自のライブラリを実装し、独自のキーストアを持っています。

これらのアプリでは、接続に使用される証明書は通常ハードコーディングされているか、ルート証明書がハードコーディングされています。この場合、証明書を信頼するようにアプリケーションを変更しない限り、ユーザーまたはシステム証明書のインストールは機能しません。

3
ThoriumBR

公開キーのピン留め は、信頼できるCA証明書があってもMITMを完全に防ぐことができます。ピン留めの重要なポイントは、アプリケーションが期待する証明書(ハッシュ、発行者など)を正確に知っているということです。信頼できるCAはドメインの「有効な」証明書を生成できますが、それはアプリケーションが探している正確な証明書ではないため、拒否されます。

3
Mr. Llama

HSTSとHPKPはどちらもブラウザ用であり、一般的なモバイルアプリ用ではありません。 [〜#〜] rfc [〜#〜] に準拠しているブラウザは、HPKPに関係なく、手動で信頼された証明書との接続を許可できます。モバイルアプリはこれを行う必要はありませんが、HTTPを使用する必要さえありません。モバイルアプリでの証明書のピン留めはHPKPと似ていますが、実装は異なります。

2
AndrolGenhald

Androidデバイスについて話しているのは、Android 7以上では、アプリがユーザーがインストールしたルート証明書を信頼するかどうかを選択できるためです。インストールした証明書を単に信用しないだけです。
デバイスをルート化できる場合は、システムトラストストアにルートをインストールでき、アプリはそれを信頼します。

1
JemmyLoveJenny