Mullvad VPNは5月3日(現地時間)、「DNS traffic can leak outside the VPN tunnel on Android|Mullvad VPN」において、Androidの仮想プライベートネットワーク(VPN: Virtual Private Network)接続にDNSトラフィックを漏洩する不具合が存在すると伝えた。
トラフィック漏洩の条件
発見された不具合は次のいずれかの条件を満たした場合に、システムが提供するAPI(Application Programming Interface)関数のgetaddrinfoを使用すると発生するという。
- DNSサーバが構成されていない状態でVPN接続を有効にする
- VPNアプリがトンネルを再構成している間、または強制的に停止している間の短期間
Android APIのDnsResolverのみを利用したアプリは不具合の影響を受けない。Google Chromeはgetaddrinfoを使用しており、不具合の影響を受けるとされる。
なお、この不具合はAndroid設定の「常時接続VPN」および「VPN以外の接続のブロック」を有効にしているか否かに関係なく発生する。Mullvad VPNはこの不具合を「OSの予期しない動作であるため、OSのアップストリームで修正する必要があり、アプリ側で対策する問題ではなくAndroidの修正が必要」と指摘している。
回避策
Mullvad VPNによると、同社が提供するVPNアプリは回復不可能な方法でトンネルの構築に失敗すると、トラフィックの送信をブロックする状態になるという。この状態ではDNSサーバが設定されないため、上記の「DNSサーバが構成されていない状態でVPN接続を有効にする」に該当する状態となり、「VPN以外の接続のブロック」を有効にしていてもDNSトラフィックを漏洩する可能性があるとしている。
Mullvad VPNはこの不具合の回避策としてトンネル構築の失敗時に、偽のDNSサーバを設定するVPNアプリをリリース予定としている。しかしながら、上記「不具合の条件」の後者に該当する条件については回避策が見つかっておらず、DNSトラフィックの漏洩を完全に防止できないとしている。
BleepingComputerはこの件についてGoogleに問い合わせ、その回答を得ている。それによると、Googleの広報担当者は「Androidのセキュリティとプライバシーは最優先事項だ。われわれはこの報告を認識しており、調査を行っている」との声明を発表したという。この不具合はVPNアプリの修正では完全に対策することは困難とみられており、Googleによる修正パッチのリリースが待ち望まれている。