研究者らは、macOSのtextutilやKeePassXCなどの広く信頼されているローカルツールが、自動化ワークフロー内で使用される場合に予期しないセキュリティリスクをもたらす可能性があると警告しています。
この問題は、メモリ破損やコード実行などの伝統的な脆弱性ではなく、攻撃者が制御できる入力に晒される場合に通常の機能がどのように動作するかという点です。
多くのエンジニアリングチームは組み込みユーティリティを安全で予測可能なものとして扱います。これらのツールはスクリプト、CIパイプライン、バックエンドプロセッサ、データインポートシステムでよく実行されます。
ローカルで成熟しているため、オフライン、制御下にあり、リスクが低いと想定されています。しかし、信頼できない入力が導入されると、この仮定は崩れ落ちる可能性があります。
この研究は重要な考えを強調しています:ツールは設計通りに機能していても、不適切な文脈では依然としてセキュリティに関連したものになる可能性があるということです。
macOS textutilと隠れたネットワークアクティビティ
報告書によると、macOS textutilはHTMLをプレーンテキストに変換するなど、ファイルを変換するために一般的に使用されています。完全にオフラインで動作すると想定されていることがよくあります。
しかし、HTMLは単なる静的コンテンツではなく、画像やスタイルシートなどの外部リソースへの参照を含めることができます。
テストの結果、Textutilがリモートリンクを含むHTMLを処理する場合、それらのリソースをネットワーク経由で自動的に取得する可能性があることが示されました。
例えば、外部画像を含むHTMLファイルは変換中にHTTPリクエストをシステムに送信させますが、リモート参照がない単純なHTMLファイルは送信しませんでした。
これは潜在的なサーバーサイドリクエストフォージェリ(SSRF)形式のリスクを生じさせます。攻撃者がHTML入力を制御でき、システムがネットワークアクセスを持っている場合、変換プロセスは信頼されたインフラストラクチャから外向きのリクエストをトリガーする可能性があります。

実際のシナリオでは、アップロードされたHTMLファイルを変換するバックエンドサービスが、知らないうちに内部サービスをプローブしたり、制限されたエンドポイントにリクエストを送信するために使用される可能性があります。
簡単な対策は、textutilで-noflagフラグを使用することであり、これは外部リソースのロードを防ぎます。追加の保護には、変換プロセスのサンドボックス化と外向きネットワークアクセスの制限が含まれます。
KeePassXCと攻撃者が制御できるCPU消費
人気のあるパスワードマネージャーであるKeePassXCは、パスワードクラッキングをより困難にするために鍵導出関数(KDF)を使用しています。このプロセスは意図的に計算量が多いです。
しかし、研究によると、データベースファイル(KDBX)内に保存されているKDFパラメータは操作される可能性があります。

極度に高いKDF設定を使用した作成されたデータベースは、テスト中に処理時間を約0.06秒から7秒以上に大幅に増加させ、100倍以上の速度低下がありました。
これは暗号化の欠陥ではありません。代わりに、リソース消費の問題です。バッチ検証やセキュリティスキャンなどで自動的にそのようなファイルが処理される場合、パフォーマンスが低下したり、サービス拒否条件を引き起こす可能性があります。
例えば、複数のパスワードデータベースをスキャンする自動化されたシステムは、極度のKDF値を持つ複数の作成されたファイルに遭遇する場合、劇的に遅くなる可能性があります。
推奨される保護措置には、受け入れ可能なKDFパラメータに対する制限の設定、異常に高い値に対する警告の追加、実行時間またはリソース上限の実施が含まれます。
両方のケースは同じパターンに従います:
- ツールは正しく動作します。
- 入力は攻撃者によって制御されます。
- ツールは自動化された信頼されたシステム内で実行されます。
- セキュリティ上の影響は統合レベルで現れます。
一方のケースでは、入力がネットワークアクティビティをトリガーします。もう一方では、CPU使用率を高めます。どちらも古典的な脆弱性ではありませんが、自動化パイプライン内に配置されると、どちらも強力なプリミティブになります。
翻訳元: https://gbhackers.com/researchers-warn-macos-textutil/