Quasar Framework: 開発用TLSの秘密鍵が、ファイルシステムのアクセス権が過度に緩い状態でキャッシュされる。
`@quasar/ssl-certificate`という開発用ユーティリティは、生成された秘密鍵と証明書を組み合わせたPEMファイルを、ファイルシステムのアクセス権を明示的に制限せずにキャッシュします。 通常のプロセスにおけるumaskの設定では、このPEMファイルがローカルの他のユーザーによって読み取られる可能性があります。 ファイルシステムへのアクセス権を持つローカルの攻撃者が、この秘密鍵をコピーして再利用し、証明書を信頼する環境において、開発用TLSのエンドポイントになりすますことが可能です。
生成された証明書は、不要にCAとしての機能も備えており、ローカルホストのHTTPS用途を超えた広範な鍵の利用方法が含まれていました。 また、IPv6のループバックアドレスが、IPアドレスではなくDNS名としてエンコードされていました。
この問題の修正では、サポートされているプラットフォームにおいて、キャッシュされたPEMファイルへのアクセス権を所有者のみに制限し、CAではないサーバー認証用の証明書を生成し、鍵の利用方法を制限しています。 また、IPv6のループバックSANを修正し、キャッシュの有効期限をコンテンツの変更時刻に基づいて設定することで、アクセス権のメタデータ変更による証明書の有効期限の延長を防ぎます。 この問題は、それ自体では秘密鍵を外部に公開するものではありません。 攻撃には、別のローカルユーザーがキャッシュされたPEMファイルにアクセスできる必要があります。
影響を受けるパッケージ:
- npm (JavaScript) @quasar/ssl-certificate: 影響を受けるバージョンは2.0.0以下、2.1.0で修正済み
- npm (JavaScript) @quasar/cli: 影響を受けるバージョンは5.0.3以下、5.0.4で修正済み
- npm (JavaScript) @quasar/app-vite: 影響を受けるバージョンは3.2.0以下、3.3.0で修正済み