LearnDashにおける課題経由の機密情報漏洩。認証されていない訪問者はアップロードされた課題を閲覧・ダウンロードできます。
誰でも(認証されていない訪問者を含む)アップロードされたすべてのLearnDash課題を閲覧できます。課題が公開されているため、この脆弱性を知っている誰でもアップロードされた文書を読むことができ(潜在的なGDPRインシデントを引き起こします)。この脆弱性は、ウェブサイトにアカウントを持っていなくても悪用可能です。
LearnDashはWordPress用の学習管理システムプラグインです。
影響を受けるバージョンのLearnDash(<=4.10.1)は、アップロードされた課題ファイルをアクセス保護のないフォルダに保存します。ユーザーが課題ファイルをアップロードすると、LearnDashはそのファイルを /wp-content/uploads/assignments/ に配置します。ファイルは元の名前を保持しますが、アップロード元の投稿IDとUnixタイムスタンプが接頭辞として付加されます。
LearnDashには3つのREST APIがあります: /wp/v2/, /ldlms/v1/, /ldlms/v2/(現在ベータ版)。ベータAPIを含むすべてのAPIがデフォルトで有効になっています。/ldlms/v1/ および APIは、 フィルタを使用して特定の投稿タイプに対して無効にできます( を参照)。
/ldlms/v2/learndash_rest_api_enabledclass-ld-rest-api.php誰でも(認証されていない訪問者を含む)ファイル名を知っていれば、アップロードされた任意の課題ファイルをダウンロードできます。
LearnDashはすべてのアップロードファイル名にタイムスタンプを追加して推測を困難にしていますが、タイムスタンプはブルートフォース可能です。残念ながら、アップロードされた課題を読みたい認証されていない訪問者は、ファイル名をブルートフォースする必要すらありません。影響を受けるバージョンのLearnDash(<=4.10.1)は、認証されていない訪問者に対して、送信されたすべての課題をREST API経由で公開します。訪問者は /wp/v2/ REST API経由で sfwd-assignment のエンドポイントを呼び出すだけで済みます。応答にはアップロードされたファイルへのパスが含まれており、訪問者はサインインせずにそれらをダウンロードできます。
https://example.com/wp-json/wp/v2/sfwd-assignment
LearnDash 4.10.2 は2024-01-08にリリースされました。REST APIを介した課題ファイルパスの漏洩問題に対処しました。CVE-2024-1208およびCVE-2024-1210は存続しました。
LearnDash 4.10.3 は2024-01-31にリリースされました。ファイルの保存場所を保護されたフォルダに移動し、動的ダウンロードリンクを導入して不正アクセスを禁止しました。
LearnDashは脆弱性報告に適切に対応し、90日間の責任ある開示期間内に脆弱性に対処しました。