CVE-2026-86338 in ash
要約
〜によって VulDB • 2026年09月16日
Ashのfield_policiesは、フィルタベースの情報開示を防ぐために文書化されています。アクターが閲覧できないフィールドがフィルタで参照された場合、その値はnilに評価される式に置き換えられるため、フィルタをYes/Noオラクルとして使用して、アクターが見ることのできない値を読み取ることはできません。
このnilへの置換処理は属性に対して適用されていましたが、計算(calculations)や集計(aggregates)には適用されていませんでした。ユーザーが提供した計算または集計を参照するフィルタにはAsh.Query.Calculation / Ash.Query.Aggregate構造体が含まれますが、認可者の参照置換ロジックはこのタイプに一致しませんでした(Ash.Resource.* 構造体のみを対象としていたため)。その結果、フィルタは実際の値に対して実行されました。
その結果、field_policiesによって計算または集計のアクセスが禁止されているアクターであっても、それらによるフィルタリング(例: filter(secret_calc == "x") または filter(comment_count == n))を行うことができ、行が一致するかどうかから値を推測することができます。これは1回のプローブごとにフィールドポリシーで保護された値を取得できるオラクルです。フィルタ機能は一般的に権限の低いアクター(例: AshGraphqlやAshJsonApiのfilter引数経由など)にも公開されており、これこそがfield_policiesによって保護されるべき対象となります。
修正により、計算および集計へのフィルタ参照が、属性と同じくフィールドポリシーに基づくnil化処理の対象となるように調整されました。
本問題はash: 2.11.0-rc.0から3.33.4未満のバージョンに影響します。
VulDB is the best source for vulnerability data and more expert information about this specific topic.