NFS の問題点と弱点を洗い出す:ミスコンフィグを特定する Sec Tool とは?

Is Your Network at Risk? New Report Highlights Network File System Vulnerabilities

2024/12/31 SecurityOnline — Network File System (NFS) プロトコルの、見過ごされがちな脆弱性にフォーカスする洞察に富んだレポートが、HvS-Consulting GmbH から発表された。各種のプラットフォーム上で NFS が多用されるのは、柔軟なリモート・ファイル・アクセスを提供するからである。しかし、ミスコンフィグレーションやセキュリティ機能の不適用などが原因となり、意図しないセキュリティ上の課題が生じている。

このレポートが概説するのは、研究チームによる脆弱性調査の結果であり、NFS のセキュリティにおける特性や、多発するミスコンフィグに目を向け、それらの弱点を悪用する方法を考察するものだ。研究者たちが強調するのは、プロトコルの意図された機能に根ざした問題が存在することで、不適切なコンフィグによりリスクが大幅に増大する点である。このレポートで指摘されているように、NFS は家庭/企業の環境で普及しているが、ミスコンフィグを引き起こしやすいため、重要なデータが不正にアクセスされる可能性が生じる。

研究者たちは、「最新の研究開発データに対する未認証のアクセスから、十分に強化された環境に配置された仮想マシンのバックアップにいたるまでの、さまざまな事例を見てきた」と述べている。

このレポートでは、NFS プロトコルにおける、主要セキュリティの機能と課題について取り上げていく。

  • 認証方法:NFS のデフォルトでは AUTH_SYS がサポートされる。その一方で、Kerberos などの複数の認証フレーバーもサポートされている。AUTH_SYS はコンフィグが簡単だが、暗号検証がないため、未検証の UID/GID に依存することになる。その点で、Kerberos 認証は遥かに安全だが複雑であるため、特に Linux 環境では十分に活用されていない。
  • エクスポート設定:”/etc/exports” ファイルにおいて、エクスポートが適切にコンフィグされていない場合には、ディレクトリが不正にアクセスされる可能性が生じる。具体的に言うと、”no_root_squash” の有効化や、クライアント・アクセス制限の無効化といったミスコンフィグにより、セキュリティ・リスクが増大していく。
  • サブツリー・チェックの誤用:Linux システムでデフォルトとして多用される “subtree_check” を無効化すると、特に ext4/xfs/btrfs などの共有ファイル・システムにおいて、意図したエクスポート・ディレクトリの外側に置かれたファイルへのアクセスが、誤って許可される可能性がある。

このレポートでは、NFS の脆弱性を悪用する攻撃者の手口についても概説していく。

  • UID/GID スプーフィング:適切な認証メカニズムが存在しない場合において、ユーザーまたはグループを装う攻撃者は、ファイルへのアクセスを可能にする。
  • 権限の昇格:”no_root_squash” などのミスコンフィグを突く攻撃者は、昇格した権限でバイナリをアップロードして実行することが可能になる。
  • ディレクトリ・エスケープ:エクスポートのミスコンフィグにより、サブツリー・チェックが無効化された場合において、攻撃者はエクスポートされたディレクトリ外のファイル (/etc/shadow などの機密ファイルを含む) をトラバースしてアクセスできる。

NFS のミスコンフィグ構成を特定して悪用する専用ツールを、HvS-Consulting は開発している。このツールの機能には、以下のものが含まれる。

  • fuse_nfs:UID と GID を透過的にマッピングし、認証メカニズムをバイパスすることで、ファイルへのアクセスを達成する、NFS 用の FUSE ドライバー。
  • nfs_analyze:サーバ・コンフィグを評価し、”no_root_squash” などのミスコンフィグを特定し、”/etc/shadow” などの機密ディレクトリへのアクセスをテストするツール。

一連の脆弱性を軽減するために、このレポートが推奨するのは、以下の項目である。

  • 定期的な監査:NFS コンフィグを継続的に確認/更新し、ベスト・プラクティスへの準拠を確認する。
  • アクセスの制限:NFS エクスポートを特定のクライアントに制限し、厳密なネットワーク・セグメンテーションを実装する。
  • 認証の有効化:クライアント/サーバ間のセキュアな通信のために、Kerberos/RPC-with-TLS などの新しいプロトコルを使用する。
  • エクスポート・コンフィグの最適化:”no_root_squash” を有効化せず、可能な場合には “all_squash” を使用することで、ココのファイル・システムごとにエクスポートが分離されていることを確認する。