Parse Serverの独自認証が素通り、修正版あり
Parse Serverで、AuthAdapterを継承した独自の認証アダプターを使っていると、本来の検証処理が呼ばれず、どんな認証情報でも受け入れてしまう弱点が見つかりました。該当するのは独自の認証アダプターを組み込んだ環境で、8.6.102 より前の版と、9.0.0 以降 9.10.5-alpha.2 より前の版が対象です。修正版へ更新するとともに、自社のアプリが独自アダプターを使っているかを早めに確認してください。
急ぎ度: 早めに
認証なしでネットワーク越しに突破され得て、情報の漏えいと改ざんにつながりますが、対象は独自アダプターを使う構成に限られ、実際の攻撃で悪用されたという公表は現時点でないためです。
関係があるか
Parse Serverを自社のアプリやサービスのバックエンドに使い、AuthAdapterを継承した独自の認証アダプター(外部ログイン連携や追加の認証要素など)を組み込んでいる組織が影響を受けます。独自アダプターを使っていない環境が影響を受けるかどうかは、公表されている説明からは読み取れないため、ベンダーの告知で確認してください。
| 製品 | 影響を受ける版 | 直った版 |
|---|---|---|
| parse-server(8.x 系) | 8.6.102より前 | 8.6.102 |
| parse-server(9.x 系) | 9.0.0以降9.10.5-alpha.2より前 | 9.10.5-alpha.2 |
確かめ方
- 1アプリのリポジトリで
package.jsonと、package-lock.jsonなどのロックファイルを開き、parse-serverの版を確認します。 - 2ソースコードの中で
AuthAdapterを継承したクラス(extends AuthAdapterなど)がないかを検索し、独自アダプターの有無を確かめます。 - 3Parse Serverの起動設定にある
authの項目を見て、独自アダプターが有効になっているログイン方法を洗い出します。 - 4コンテナで動かしている場合は、イメージに入っているparse-serverの版を確認します。
何が起きたか
Parse Serverは、モバイルアプリやWebアプリの会員登録やログインなどを受け持つ、オープンソースのバックエンドです。この製品で、開発者が独自に作った認証アダプターが、本来行うはずの本人確認をしないまま通ってしまう弱点が見つかりました。修正前の版では、認証情報として何を送っても受け入れられるおそれがあります。
仕組みは次のとおりです。独自アダプターはAuthAdapterというクラスを継承して作ります。このとき、登録時・ログイン時・更新時の検証を行う validateSetUp、validateLogin、validateUpdate の各メソッドが、Parse Serverから呼び出されませんでした。代わりに、継承元が持つ「どんなauthDataでも受け入れる」既定の処理が使われます。開発者が検証を実装していても、その処理が動かない状態です。
攻撃者は任意のauthDataを送ることで、アカウントの新規登録、別のIDとの紐づけ、既存ユーザーとしてのログインができるとされています。独自に追加した多要素認証などの追加要素を、飛ばされるおそれもあります。
悪用の確認は公表されていません。CVSSはv3.1で7.4(高)、v4.0で9.1です。v3.1では攻撃の難しさが「高」と評価されており、環境によって悪用のしやすさが変わると考えられます。
攻撃の流れ
-
1
独自アダプター使用
アプリがAuthAdapterを継承した独自の認証アダプターでログインや登録を受け付けています。
-
2
検証が呼ばれない
アダプターに実装された検証メソッドがParse Serverから呼び出されません。
-
3
既定処理が受理
継承元のどんなauthDataでも受け入れる既定の処理が代わりに使われます。
-
4
不正な認証成立
登録、IDの紐づけ、既存ユーザーとしてのログイン、追加認証の回避が成立し得ます。
どう悪用されるか
悪用に必要なのは、対象のParse Serverにネットワーク経由で到達できることだけです。事前の認証や、利用者に何かをさせる操作は必要ありません。ただし、独自の認証アダプターを使っている構成が前提になります。v3.1の評価で攻撃の難しさが「高」とされているのは、こうした環境条件が影響していると考えられます。
悪用されると、他人のアカウントとしてログインされ、そのユーザーのデータの閲覧や書き換えが行われるおそれがあります。偽のアカウントが作られたり、既存アカウントに攻撃者のIDが紐づけられたりして、正規の利用者の認証をすり抜ける足がかりにされる可能性もあります。独自に追加した認証要素が、守りとして働かなくなる点にも注意が必要です。可用性への影響は、評価上は想定されていません。
今すぐやること
-
1
使っている版と独自アダプターの有無を確認する
parse-serverの版が対象範囲に入るか、AuthAdapterを継承したアダプターがあるかを、開発・運用担当と一緒に洗い出します。
npm ls parse-server -
2
修正版へ更新する
8.x系は8.6.102以降へ、9.x系は9.10.5-alpha.2以降へ更新します。9.x系の安定版がどの版から直っているかは、ベンダーの告知(GitHubのセキュリティアドバイザリ)で確認してください。更新後は、ログインや登録、追加認証の動作を検証環境で試してから本番に反映します。
-
3
不審なログインや登録がなかったか調べる
更新前の期間について、見覚えのない新規登録、IDの紐づけの変更、普段と違う場所からのログインがないかをログで確認します。追加認証を求めているはずなのに、それを経ずにログインした記録がないかも見ます。
-
4
疑わしいアカウントへの対応を決める
不審な形跡があれば、該当アカウントのセッションを無効にし、紐づけられた外部IDを見直します。必要に応じて利用者への連絡も検討します。
すぐ更新できないとき
ベンダーが公表した回避策は、現時点で確認できていません。すぐに更新できない場合は、独自アダプターによるログインや登録を一時的に止められないかを検討し、サーバーへ到達できる範囲を絞ってください。いずれも暫定の措置で、修正版への更新に代わるものではありません。
背景
Parse Serverは、ユーザー管理、データの保存、認証といったアプリの裏側の機能をまとめて提供するため、社内では顧客向けアプリや業務アプリの基盤として使われます。認証が破られると、保存されているユーザーデータ全体に影響が及びやすい位置にあります。外部サービスのアカウントでログインさせる連携も、アダプターという部品で拡張できます。
今回の弱点は、認証の不備を指すCWE-287に分類されています。拡張用の部品に「何でも通す」既定の動作が含まれていて、実装側の検証が呼ばれないと、そのまま素通しになる形です。このように、検証が働かないときに安全側ではなく許可側へ倒れる設計は、認証まわりで以前から繰り返し問題になってきた種類の弱点です。自前で拡張を書いている場合は、部品の内側だけでなく、呼び出し側の挙動も確認する必要があります。
よくある質問
Q.独自の認証アダプターを使っていなければ、対応は不要ですか。
Q.自社で追加の認証要素を実装していれば、守られているのではありませんか。
Q.すでに攻撃されているのですか。
まだ分かっていないこと
- 実際の攻撃で悪用されているかどうかは公表されていません。
- 9.x系で、安定版のどの版から修正が入っているかは、公表された情報だけでは明らかになっていません。9.10.5-alpha.2は先行版(alpha)の表記です。
- 独自アダプターを使っていない環境が影響を受けるかどうかは、現時点で明らかになっていません。
この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 直った版 |
|---|---|---|---|
| parse-community | parse-server |
8.6.102 未満 |
8.6.102 |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
Parse Server before 8.6.102 and 9.0.0 before 9.10.5-alpha.2 contains an authentication bypass because the validateSetUp, validateLogin, and validateUpdate methods of custom adapters subclassing AuthAdapter are never called, and an inherited default that accepts any authData is used instead. Attackers can supply arbitrary authData to sign up, link identities, log in as existing users, or skip custom additional authentication factors.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- advisory github.com
- advisory vulncheck.com
- advisory nvd.nist.gov
- advisory github.com
- web github.com