FreeRDPは、リモートデスクトッププロトコルの無償実装です。バージョン3.20.0より前のWindowsプラットフォームにおいて、FreeRDPの証明書処理コードに脆弱性が存在していました。関数「freerdp_certificate_data_hash_」が、Microsoft固有の「_snprintf」関数を使用して証明書キャッシュのファイル名をフォーマットする際、切り捨てが発生した場合にNUL終端を保証していませんでした。Microsoftのドキュメントによれば、フォーマットされた出力が宛先バッファサイズを超える場合、「_snprintf」は終端のNULバイトを追加しません。そのため、攻撃者がホスト名値を制御可能な場合(例:サーバーリダイレクトや細工された.rdpファイル経由)、生成されたファイル名バッファがNUL終端されず、その後このバッファでストリング操作を行うと、割り当てられたメモリ領域の外まで読み込んでしまい、ヒープベースの境界外読み取りが発生する可能性がありました。デフォルト構成では通常、機密データが露出する前に接続が終了しますが、不意なメモリの読み取りやクライアントのクラッシュが特定条件下で発生する恐れがありました。バージョン3.20.0でこの問題に対する修正が適用されています。
|