注目★★★★★GitHub Advisory
Dgraph の checkUserPassword に DQL インジェクション脆弱性、パスワード入力で任意クエリ実行可能
30秒で把握
- 1Dgraph の checkUserPassword GraphQL クエリに DQL インジェクション脆弱性・fmt.Sprintf でパスワードをエスケープなし埋め込み
- 2ダブルクォート含むペイロードで文字列リテラル脱出・任意 DQL クエリを追加実行可能・認証フロー経由でデータベース改ざんリスク
- 3query_rewriter.go と graphquery.go の入力検証を再確認・本番稼働中の Dgraph は早期にパッチ版への更新計画を立案
要約
Dgraph の checkUserPassword GraphQL クエリに DQL インジェクション脆弱性が存在する。パスワード値が fmt.Sprintf でエスケープなしにチェック関数に直接埋め込まれており、ダブルクォートを含むペイロードで文字列リテラルを脱出し任意の DQL クエリを追加実行できる。query_rewriter.go 約 364 行目の checkpwd() 関数構築とその後の graphquery.go での直列化が原因。
あなたへの影響
Dgraph を本番環境で動作させる場合。
推奨:checkUserPassword クエリの入力値検証ルールと脆弱性パッチの配信予定を確認し、デモ環境で挙動を検証した上で定期的なセキュリティアップデートを適用する必要がある。