3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

記事投稿キャンペーン 「2024年!初アウトプットをしよう」

class.upload.php の XSS 脆弱性について

Last updated at Posted at 2024-01-07

先日、CVE-2023-6551 として PHP のファイルアップロードライブラリ「class.upload.php」のクロスサイトスクリプティング脆弱性が発表されたので、使用しているプログラムを今一度確認しました。
幸い、外部ユーザーがアップロードする箇所では使用していなかったし、ちゃんと検証していたので、特に問題はありませんでした。

この脆弱性は、MIME タイプを評価するクラスが適正に機能しないことがあるというものです。

例えば、

$handle = new Upload($file, 'ja_JP');
$handle->allowed = array('image/gif');

と設定していても、中には悪意のあるファイルが通過してしまうことがあります。
.html などがアップロードされてしまうと、開いたときに中に書いてあるスクリプトが実行されてしまう可能性があります。
※ プログラムはまだ読んでいません(おい)

対処法

まだ詳細は調査中とのことですが、とりあえず記載されていた対策をまとめておきます。

レスポンスに想定される MIME タイプを指定する

「.html」で保存されたファイルは通常 HTML ファイルとしてレスポンスされますが、システム側で Content-Type ヘッダーで「image/png」を送っておけば、ブラウザではスクリプトが実行されずに済みます。

アップロードできる拡張子を限定する(軽減策)

$handle->allowed = array('png');

と直接拡張子を指定すると、それ以外の拡張子では保存されなくなります。

参考(順不同)

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?