依赖项恶梦早晚会给每个人带来问题。
使用知名人工智能(AI)工具的那些人已被警告及/或被提醒务必要核查依赖的软件包,因为其中一些软件包存在豁然敞开的安全漏洞。
发出这份警告的是来自奇虎360安全研究实验室的肖奇雪(音译,下同)和张德跃、佐治亚大学的李康和弗吉尼亚大学的徐卫林,他们共同写道:“深度学习框架很复杂,高度依赖众多的开源软件包。”
三方在梳理TensorFlow、Caffe和Torch深度学习框架所使用的第三方软件包,并寻找那些软件包中任何敞开的漏洞后得出了这个结论。
他们发现了好几个漏洞,撰文道这些框架很容易遭到拒绝服务攻击、规避攻击或系统威胁。
他们最后在这三种框架中发现了总共15个安全漏洞,不过特别指出这项工作只是初步的研究(The Register预计,言外之意会爆出更多的漏洞)。
开源计算机视觉(OpenCV)代码库中发现的漏洞数量最多:共有11个CVE,很容易被上述三类攻击所利用。Caffe和Torch中都依赖opencv。
Caffe还依赖了易受攻击的libjasper图像处理代码库和OpenEXR图像查看器。
研究人员发现的这些漏洞存在一个令人关注的方面,那就是他们发现可以利用越界写入(out-of-bounds write)来欺骗AI(而不是托管或使用它用于远程执行代码):在opencv中,“数据指针可以被设置为readData函数中的任何值,然后指定的数据可以写入到数据指向的地址。所以它可能会覆盖分类结果。”
opencv这个例子如下所示。
bool BmpDecoder::readData( Mat& img )
{
uchar* data = img.ptr();
....
if( m_origin &=& IPL_ORIGIN_BL )
{
data += (m_height - 1)*(size_t)step; // result an out bound write
step = -step;
}
....
if( color )
WRITE_PIX( data, clr[t] );
else
*data = gray_clr[t];
....
}
index 3b23662..5ee4ca3 100644
--- a/modules/imgcodecs/src/loadsave.cpp
+++ b/modules/imgcodecs/src/loadsave.cpp
+
+static Size validateInputImageSize(const Size& size)
+{
+ CV_Assert(size.width > 0);
+ CV_Assert(size.width <= CV_IO_MAX_IMAGE_WIDTH);
+ CV_Assert(size.height > 0);
+ CV_Assert(size.height <= CV_IO_MAX_IMAGE_HEIGHT);
+ uint64 pixels = (uint64)size.width * (uint64)size.height;
+ CV_Assert(pixels <= CV_IO_MAX_IMAGE_PIXELS);
+ return size;
+}
@@ -408,14 +426,26 @@ imread_( const String& filename, int flags, int hdrtype, Mat* mat=0 )
// established the required input image size
- CvSize size;
- size.width = decoder->width();
- size.height = decoder->height();
+ Size size = validateInputImageSize(Size(decoder->width(), decoder->height()));
相比之下,TensorFlow的情况稍微好一点,只有两个Python软件包:numpy和wave.py容易遭到拒绝服务(DoS)攻击。
下面完整列出了研究人员详细描述的安全漏洞。
在一些情况下,如上表所示,这不是框架本身的过错,因为软件包开发人员还没有提供补丁。
要是一些人不先考虑安全性,就贸然试水AI,那还是足以会给他们带来麻烦。
文章来源:云头条
《OpenCV计算机视觉产品实战》本课程关注怎样运用OpenCV编写程序,解决实际项目问题,课程注重运用而非理论,因此即使你不具备基础知识,但是在一步一步的讲解中,按图索骥,也能够快速入门,并且建立起知识框架;对于具备一定基础的开发者来说,学习本门课程能够加速对图像处理程序的理解,并且逐渐积累起自己的开发框架。点击下方二维码报名课程