
OpenEMRプロジェクトにおけるパストラバーサルおよびDoS脆弱性
ファイル内の脆弱な関数: /openemr/custom/ajax_download.php
条件:
影響を受けるバージョン: 5.0.2未満、5.0.2で修正済み。
この関数内の脆弱な変数: fileName。これは攻撃者によって制御可能であり、これに対するフィルタリングや検証は一切行われません。
攻撃者はサーバーストレージから任意のファイル(www-dataユーザーが読み取り可能なファイル)を ダウンロードできます。
要求されたファイルがwww-dataユーザーにとって書き込み可能であり、
ディレクトリ /var/www/openemr/sites/default/documents/cqm_qrda/
が存在する場合、そのファイルはサーバーから削除されます。
存在しないディレクトリは大きな問題ではありません。攻撃者がそれを作成できるためです。アップロード関数 /openemr/controller.php?document&upload 内の変数 "higher_level_path" により、ファイルが保存されるディレクトリ名を指定できます。このディレクトリが存在しない場合(かつ "patient_id" 変数が数値で0より大きい場合)、"700" 権限で作成され、所有者は "www-data" ユーザーになります。
攻撃者はサーバーから一部の設定ファイルやPHPスクリプトを削除できるため、DoSを引き起こす可能性があります。
情報漏えい。
サービス拒否。
追伸: 迅速な対応とパッチを提供してくださったOpenEMRチームのBrady G. Miller氏に特別に感謝します