
EagleEyes Lite Androidアプリケーションにおける機密情報の平文送信
EagleEyes Lite(バージョン2.0.0)では、GetHttpsResponse() メソッドが、アカウントID、パスワード、デバイストークン、内部サーバーURLなどの機密情報を、HTTPSリクエストのクエリ文字列に直接含めて送信します。
これらの認証情報とトークンは、リクエストボディに安全に配置される代わりにURLに埋め込まれるため、MITM攻撃を実行するあらゆる攻撃者によって簡単に抽出される可能性があります。
接続は名目上HTTPSを使用しているにもかかわらず、URL内の平文でこのような機密パラメータが露出すると、認証情報の漏えいやAVTECH CCTVシステムへの不正アクセスのリスクが大幅に増加します。
この弱点はユーザーデータの機密性を損ない、信頼できないネットワーク上で動作する場合にアプリケーションを特に脆弱にします。
デバイスがAndroid 8.0未満で動作している場合、つまり SDK_API_26 が false に設定されている場合、メソッドは GetHttpsUrlResponse() を返しません。
代わりに、try ブロック内の脆弱なロジックを実行します。
public static String GetHttpsResponse(String str) {
if (SDK_API_26) {
return GetHttpsUrlResponse(str);
}
try {
...
HttpResponse execute = new DefaultHttpClient(
new SingleClientConnManager(defaultHttpClient.getParams(), schemeRegistry),
defaultHttpClient.getParams()
).execute(new HttpPost(str));
...
}
...
}
ここで、パラメータ str には、account_id や password などの機密情報をクエリ文字列に直接埋め込んだ完全なリクエストURLが含まれます。
その結果、ユーザーの認証情報がURL内で平文として露出し、MITM攻撃によって傍受されたり、中間システムによって記録されたりすると、漏えいしやすくなります。
Fridaフックスクリプト hook.js を実行することで、GetHttpsResponse() メソッドが呼び出され、生成されたリクエストURLに account_id や password などの機密情報が平文で含まれていることを確認しました。
脆弱な GetHttpsResponse() 実装の詳細な分析については、CVE-2025-46408 を参照してください。
アプリケーションは、アカウントID、パスワード、認証トークンなどの機密情報をURLクエリパラメータに含めるべきではありません。
その代わりに、認証情報はPOSTパラメータを使用してHTTPSリクエストボディ内で安全に送信する必要があります。これにより、URL、ログ、中間システムで機密値が露出するのを防ぐことができます。