2ドルの広告ブロッカーが成長
USBメモリほどの大きさのESP32-C3ボードに収まる2ドルの広告ブロッカーが、目に見えて成熟しました。今夏公開されたesp32-c3-adblockプロジェクトのバージョンは、すでに最大53万7,000ドメインを保持できました。
現行ビルドでは、セットアップがより簡単になりました。さらに、管理パネルの保護も大幅に強化されています。
DNSフィルターの仕組み
このフィルターはDNSレベルで動作します。ESP32-C3は長いアドレス一覧をRAMに保持するのではなく、40ビットのFNV-1aハッシュをフラッシュメモリに保存します。そのうえで、二分探索で一致するものを探します。
数値は控えめです。
- 約14万ドメインで、容量は約0.7MBです。
- 動作時のRAM使用量は約50KBです。
- 1回の検索にかかる時間は約10ミリ秒です。
ドメインが一致すると、ボードはアドレス0.0.0.0で応答します。それ以外のクエリはすべて、通常のDNSサーバーに転送します。
初回リリース以降の新機能
開発者は、最初の公開以来、プロジェクトを大きく改良してきました。Wi-Fiはローカルのポータルから設定できるようになりました。ブロックリストとファームウェアは、OTA(Over-the-Air)で更新できます。加えて、パネルにはクライアントごとの統計も表示されます。
パネルのセキュリティを強化
制御リクエストには、HTTP Basic認証と別のOTA用パスワードが必要になりました。開発者は、格納型XSSの経路も塞ぎました。さらに、デバイスはクロスサイトリクエストフォージェリ(CSRF)への耐性も備えました。
これらの修正以前は、ローカルネットワーク上の誰もが認証なしでブロックリストを変更したり、ボードを書き換えたりできる状態でした。
公開されたコードと短いデモ
現行のプロジェクトコードは、MITライセンスで公開されています。小さなフィルターが動作する様子は、短いデモ動画で確認できます。
ただし、課題は残っています。Webパネルは依然として平文のHTTPを使用しています。そのため、ローカルの通信をすでに傍受できる攻撃者に対しては、Basic認証では防御できません。
Pi-holeに似た仕組み、限界も同じ
原理としては、このデバイスはPi-holeとほぼ同じように動作します。DNSフィルタリングにより、テレビやIoT機器を含むネットワーク全体で、広告やトラッキング用のドメインを遮断できます。
しかし、メインコンテンツと同じドメインからサービスが配信する広告は、除去できません。
翻訳元: https://meterpreter.org/esp32-c3-ad-blocker-2/