10月5日、mitmproxyは「mitmproxy 11」をリリースした。この新バージョンは、HTTP/3の完全サポートを導入し、透明およびリバースプロキシモードでの利用が可能となった。また、DNSの機能改善が数多く行われている。
mitmproxyとは
mitmproxyは、オープンソースで開発されているHTTPSの対話型プロキシである。HTTPS通信を解析・監視・変更することができ、主にHTTP/HTTPSトラフィックのプロキシとして利用される。セキュリティ研究者や開発者にとっては、通信内容を可視化し、アプリケーションの動作を調査するための有用なツールである。また、リバースプロキシや透過プロキシとして動作し、特定の通信経路を経由する全てのデータを傍受し、改変することも可能だ。
HTTP/3サポート
mitmproxy 11では、HTTP/3がリバースプロキシモードで動作する。mitmproxyのインスタンスはTCPおよびUDPの両方のパケットをリッスンし、すべてのHTTPバージョンを処理する。以下のようにコマンドを実行することで、HTTP/3対応のリバースプロキシが利用できる。
$ mitmproxy --mode reverse:https://http3.is
透明プロキシモードでもHTTP/3がサポートされ、以下のようなコマンドで利用可能だ。
$ mitmproxy --mode wireguard
$ mitmproxy --mode local
$ mitmproxy --mode transparent
このサポートにより、FirefoxやChrome、さまざまなcURLビルドなどでのテストが行われ、互換性の問題が解決された。ただし、Chromeではユーザーが追加した証明書認証局をQUICに対して信頼しないという制限があり、Let’s Encryptのような公的に信頼された証明書を提供する必要がある。また、Firefoxはこうした問題に悩まされることはない。
DNSの改善
mitmproxyのDNS機能も大幅に強化されている。主な改良点は以下の通り。
- A/AAAA以外のクエリタイプのサポート
- /etc/hostsファイルのスキップ機能
- DNS-over-TCPのサポート
- Encrypted Client Hello (ECH)キーの除去
特に、Hickory DNSライブラリを使用して、新たにA/AAAA以外のクエリにも対応している。以下のコマンドでカスタマイズ可能だ。
$ mitmdump --mode dns --set dns_name_servers=8.8.8.8
また、/etc/hostsファイルを無視する設定が追加され、特定のドメインに対して透明なリダイレクトが可能となっている。
$ mitmdump --mode dns --set dns_use_hosts_file=false
おわりに
このリリースは、2022年から進められてきたQUICとHTTP/3対応の集大成であり、インターネット上で急速に普及しているプロトコルに対応する重要な進展である。今後もネットワークセキュリティや通信解析の分野において、mitmproxyは大きな役割を果たしていくことだろう。
詳細は[Mitmproxy 11: Full HTTP/3 Support]を参照していただきたい。