2017-08-16時点では、OpusTagsの処理をするのにogg_stream_packetout()を使ってパケットを一度に全てメモリに展開した上でパースをしています。そのパケットというのは無限にサイズが大きくなる可能性があり、また音声データと違ってデータサイズだけを見て異常かどうかを判断して捨てるという行動を採れないので、そこでDoSが成立します。
これを防ぐのであれば、パケット構築を待つのではなくてページを逐次処理していく方針に切り替えないといけないんだけど、それが嫌でライブラリ使ってんのになぁ……。
Opusパースを克服しても、タグのレコードを全部メモリに持ってる関係で巨大な編集入力でもDoSを受けるのでそれもよろしくない。
いずれにせよ、任意サイズデータをメモリに持っているのが原因なのでtmpfile()を使うように書き換えないといけないですね。
2017-08-16時点では、OpusTagsの処理をするのに
ogg_stream_packetout()を使ってパケットを一度に全てメモリに展開した上でパースをしています。そのパケットというのは無限にサイズが大きくなる可能性があり、また音声データと違ってデータサイズだけを見て異常かどうかを判断して捨てるという行動を採れないので、そこでDoSが成立します。これを防ぐのであれば、パケット構築を待つのではなくてページを逐次処理していく方針に切り替えないといけないんだけど、それが嫌でライブラリ使ってんのになぁ……。
Opusパースを克服しても、タグのレコードを全部メモリに持ってる関係で巨大な編集入力でもDoSを受けるのでそれもよろしくない。
いずれにせよ、任意サイズデータをメモリに持っているのが原因なので
tmpfile()を使うように書き換えないといけないですね。