注目★★★★★GitHub Advisory
ArcadeDB、SQL の DEFINE FUNCTION で認可を迂回・任意 JS 実行可能
30秒で把握
- 1ArcadeDB で SQL DEFINE FUNCTION が権限チェック回避・読み取り専用ユーザが JS 実行可能
- 2POST /api/v1/command で任意 JS コード送信可能・SSRF と DoS 攻撃に発展リスク
- 3DefineFunctionStatement と SQLQueryEngine に UPDATE_SECURITY 権限ゲート追加・IOAccess.NONE を設定で修正
要約
ArcadeDB の GHSA-48qw-824m-86pr セキュリティ対策が SQL ルート経由で迂回され、読み取り専用ロール含む DB アクセス権を持つユーザが任意の JavaScript を実行できる脆弱性が判明した。DEFINE FUNCTION 文で js 言語を指定すると checkPermissionsOnDatabase(UPDATE_SECURITY) ゲートをバイパスし、IOAccess.ALL により SSRF と CPU/メモリ枯渇攻撃が可能になる。DefineFunctionStatement と SQLQueryEngine の関数呼び出し経路に UPDATE_SECURITY 権限チェックを追加し、GraalPolyglotEngine に IOAccess.NONE / PolyglotAccess.NONE を設定する修正が必要。
あなたへの影響
ArcadeDB を本番環境で運用するチームは、当該脆弱性の有無をバージョン確認し修正版へのアップデートを検討すべき。
推奨:既存の DEFINE FUNCTION ステートメントログから無権限実行痕跡の監査も推奨される。