やはり特権常駐プロセスは危険だ
#degdet
TL;DR
System Network Extensionという拡張機能を用いることで、特権なしでドメインブロックできそうだが、ドキュメントや実装例が乏しいために実装コストが高いと判断し、この手法はやめとこうと判断。
また、特権daemonを使って/etc/hostsを操作する方向に持っていこうとしたけど、特権daemonをPCに常駐させるのはやはり危険だとなり、特権daemonでブロッキングするのも断念。
sandboxやentiltementsなどで、常駐daemonも最小権限化ができればよかったが、むずそうだと判断。
もっと調べば何かやり方があるかもしれないが、それでも自分のセキュリティ知識・スキルだとリスクが高い。
なので、特権を使う方法は諦めることとする。
hr.icon
Mac Appのdaemonの最小権限化はやり方がありそう。
https://developer.apple.com/documentation/xcode/signing-a-daemon-with-a-restricted-entitlement
root権限を使うなら一層気をつけたいねl
sandboxとdaemonの例
https://developer.apple.com/forums/thread/761249
アプリに特権daemonが存在するのがまだ少し不安要素なので、他に方法がないか最後の一押し入れておく。
https://developer.apple.com/app-extensions/
https://developer.apple.com/jp/documentation/sirikit/structuring_your_code_to_support_app_extensions/
https://developer.apple.com/forums/thread/665029?answerId=643029022#643029022
App Extensionsはagentなどのcommand line toolから呼び出されることは想定されてないonigiri.w2.icon
https://developer.apple.com/documentation/sirikit/structuring-your-code-to-support-app-extensions
アプリ拡張機能は、アプリに代わって機能し、サービスの提供やシステムへの情報提供などを行うエージェントです。
コード不要なコマンドみたいな感じかな?
常駐プロセスにできないのかな?
https://developer.apple.com/documentation/Technotes/tn3134-network-extension-provider-deployment
https://developer.apple.com/documentation/networkextension/content-filter-providers
Appleの開発ドキュメント読みにくすぎてビビる。なんやこれonigiri.w2.icon
情報アーキテクチャの設計終わってるやろ。コードのサンプルすらないの何?
わざと新規参入者の障壁高くしてるんか?
https://developer.apple.com/documentation/driverkit/debugging-and-testing-system-extensions
システム拡張機能のデバッグ方法
伝家の宝刀:github
https://github.com/objective-see/DNSMonitor
https://github.com/emanuele-em/MitmproxyApple
https://github.com/cntrump/SimpleFirewall
こいつを読めばいい。ここに詰まってる。
Forumも見ていけ
https://developer.apple.com/forums/thread/725805
https://developer.apple.com/forums/thread/659021
ちょっと制御できなさそうな感じある。
特権を使わなくていいのは良いのだけど。
少しリスクがある。
1. ドキュメントが弱くて、制御し切れるか心配。バグ対応とか面倒くさそう。
2. 設定が結構面倒くさい。
特権使わないとしてもこの方法では開発効率が落ちるし、バグも入ってくるだろうな...
特権を使いたくないなら、Cold Turkey方式、Focus方式をいい感じにまぜてUX体験を極力よくしようとする方が良さそうですね。
やはり、いくらなんでもパンピー開発者が、特権の常駐プロセスを扱うアプリを配布するのは危険すぎるな。
セキュリティの専門資格・経験持ってて、ヘッジできてるとかならまだしも。
セキュリティ知識がほぼ皆無の開発者がroot権限を扱うプロセス持つアプリを配布するのはウイルス配布に等しい気がしてきた。
特権常駐プロセスはやめよう。危ない。