LearnDash における API 経由の機密情報漏えい。認証されていない訪問者は、関連コースに受講登録していなくてもクイズとクイズの問題を閲覧できます。
認証されていない訪問者を含む誰もが、LearnDash のすべてのクイズとクイズの問題を閲覧できます。クイズの問題が公開されているため、受講者の知識を確認するために使用することはできません。
LearnDash は WordPress 用の Learning Management System(LMS)プラグインです。2 種類のクイズタイプをサポートしています。古いクイズタイプは sfwd-quiz と呼ばれ、リンクされた問題(sfwd-question)に依存しています。新しいクイズタイプは、クイズとその問題を ld-exam 投稿として保存します。
LearnDash には 3 つの REST API(/wp/v2/、/ldlms/v1/、/ldlms/v2/(現在ベータ版))があります。ベータ版 API を含むすべての API がデフォルトで有効になっています。/ldlms/v1/ および /ldlms/v2/ API は、learndash_rest_api_enabled フィルタを使用して特定の投稿タイプに対して無効にできます(class-ld-rest-api.php を参照)。
影響を受けるバージョンの LearnDash(<=4.10.2)は、認証されていない訪問者に対してすべてのクイズとクイズの問題を公開します。訪問者は /wp/v2/ REST API 経由で sfwd-question および ld-exam のエンドポイントを呼び出すことで、すべての問題を閲覧(読み取り)できます。この API はデフォルトで有効です。
https://example.com/wp-json/wp/v2/sfwd-question
https://example.com/wp-json/wp/v2/ld-exam
訪問者は /ldlms/v1/ API 経由で sfwd-quiz エンドポイントを呼び出すことで、すべてのクイズを閲覧(読み取り)することもできます。この API はデフォルトで有効です。
https://example.com/wp-json/ldlms/v1/sfwd-quiz
訪問者は、クイズの投稿 ID(単なる連番の整数)を知っていれば、/ldlms/v2/ API 経由でクイズにアクセスすることもできます。
/ldlms/v1/ および /ldlms/v2/ API は learndash_rest_api_enabled フィルタを使用して無効にできますが、これにより新たなデータ漏えいが発生します。管理者がいずれかの投稿タイプに対して /ldlms/v1/ および /ldlms/v2/ API を無効にすると、LearnDash はレッスンやトピックを含む REST API でアクセス可能なすべての LearnDash コンテンツを /wp/v2/ API 経由で認証されていない訪問者に公開します。
LearnDash 4.10.2 は 2024-01-08 にリリースされました。このバージョンではデータ漏えいは修正されませんでしたが、/wp/v2/ API 経由でさらに多くの情報を公開することなく /ldlms/v1/ および /ldlms/v2/ API を無効にすることが可能になりました。
LearnDash 4.10.3 は 2024-01-31 にリリースされ、これらの脆弱性に対処しました。
LearnDash は脆弱性レポートに適切に対応し、90 日間の責任ある開示期間内に脆弱性に対処しました。