注目★★★★★Hacker News
FFmpeg VPK Demuxerにゼロ除算、21バイトでクラッシュ
30秒で把握
- 1FFmpegのVPK Demuxerでチャンネル数0のゼロ除算が発生
- 2細工した21バイト入力でSIGFPE、影響はFFmpeg利用アプリのDoS
- 3vpk_read_packetにゼロ判定を追加しINVALIDDATA返却を提案
要約
FFmpegのVPK Demuxerに、チャンネル数0の入力で整数ゼロ除算が起きるバグが見つかった。細工した21バイトのVPK入力を開くと、vpk_read_packetがSIGFPEでFFmpegベースのアプリケーションをクラッシュさせる。原因は、par->ch_layout.nb_channelsが0か確認せず、last_block_sizeとblock_alignを割り算していたことにある。悪用による任意読み書きは確認されておらず、影響はDoSに限定される。修正案はゼロチャンネル時にAVERROR_INVALIDDATAを返し、クラッシュを防ぐガードを追加することだ。
あなたへの影響
FFmpegでVPK形式を受け付ける日本の開発チームは、修正版の有無を確認し、未対応の場合は不正VPK入力の受け入れ制限とクラッシュ監視を行ってください。
推奨:VPK DemuxerはVPKコンテナを解析して音声パケットを取り出す処理です。