注目★★★★★GitHub Advisory
YesWiki の API に二次 SQL インジェクション、ページ削除時にタグ未エスケープで任意 SQL 実行可能
30秒で把握
- 1YesWiki の deletePage API にページタグ未エスケープの二次 SQL インジェクション脆弱性が存在
- 2認証済みユーザーが任意 SQL を実行・時間ベースのデータ流出が可能・INSERT 時エスケープは正常で読み出し時に欠落
- 3ページ削除権限の制限と最新版への早期更新を推奨・管理者は DB レベルのアクセス制御も検討
要約
YesWiki の `ApiController::deletePage()` メソッドがデータベースから取得したページタグを SQL クエリに直接埋め込み、エスケープを行わない二次 SQL インジェクション脆弱性がある。認証済みの低権限ユーザーは、シングルクォートを含む任意のタグを持つページを作成し、標準の `{{include}}` リンク機構で参照可能な状態にした後、削除 API を呼び出すことで、データベース上の任意テーブルから時間ベースのデータ流出を含む任意 SQL を実行できる。INSERT 時は正しくエスケープされるため、悪意あるタグは完全に保存されたまま検証を通過し、読み出し・再利用時にエスケープが欠落する典型的な二次インジェクションの構図である。
あなたへの影響
YesWiki を自社 Wiki やナレッジベースで運用する場合、認証設定の見直し (ページ削除権限の制限) と最新版への更新を早期に検討してください。
推奨:データベースレベルのアクセス制御 (削除権限の分離) も補助的対策になります。