我正在开发一个ffmpeg
在后端用于处理用户上传的媒体文件的 Web 服务。我为用户提供了一些选项来自定义他们的视频处理方式,这本质上是参数化ffmpeg
命令。
我计划ffmpeg
在 Docker 环境中运行,每次执行可能使用一个新容器。无论如何,这个环境可以用来执行任意代码,并且可以访问我的一些秘密。
除了命令行注入之外,这里还有其他需要考虑的安全问题吗?
我在ffmpeg
禁用网络的 docker 容器中运行,并通过共享目录传递输入和输出文件。
下面的命令执行以下操作:
- 将输入文件放入与容器共享的目录中
ffmpeg
使用传递的任何选项在容器内运行- 将输出文件放入主机共享目录,然后主机将其复制到其最终存储位置
命令:
docker run -v <TEMP_DIR_ON_HOST>:/temp/ --network none \
jrottenberg/ffmpeg -stats \
-i /temp/<INPUT_FILE> \
<FFMPEG_OPTIONS> \
/temp/<OUTPUT_FILE>
几点注意事项:
TEMP_DIR_ON_HOST
是一次转换的一次性使用目录FFMPEG_OPTIONS
被擦洗,但可能含有注入- 我没有被锁定在
jrottenberg/ffmpeg
图像中,我可能会复制或至少锁定到特定版本。
我认为即使以某种方式注入恶意命令,禁用网络和限制外部文件访问也会大大降低风险。
除了资源浪费之外,是否还有其他重大风险?