依赖项恶梦早晚会给每个人带来问题。
使用知名人工智能(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)攻击。
下面完整列出了研究人员详细描述的安全漏洞。
框架 |
软件包 |
CVE |
威胁 |
已修复? |
TensorFlow |
numpy |
CVE-2017-12852 |
DoS |
未 |
TensorFlow |
wave.py |
CVE-2017-14144 |
DoS |
未 |
Caffe |
libjasper |
CVE-2017-9782 |
Heap |
未 |
Caffe |
openEXR |
CVE-2017-12596 |
Crash |
是 |
Caffe/Torch |
opencv |
CVE-2017-12597 |
Heap |
是 |
Caffe/Torch |
opencv |
CVE-2017-12598 |
Crash |
是 |
Caffe/Torch |
opencv |
CVE-2017-12599 |
Crash |
是 |
Caffe/Torch |
opencv |
CVE-2017-12600 |
DoS |
是 |
Caffe/Torch |
opencv |
CVE-2017-12601 |
Crash |
是 |
Caffe/Torch |
opencv |
CVE-2017-12602 |
DoS |
是 |
Caffe/Torch |
opencv |
CVE-2017-12603 |
Crash |
是 |
Caffe/Torch |
opencv |
CVE-2017-12604 |
Crash |
是 |
Caffe/Torch |
opencv |
CVE-2017-12605 |
Crash |
是 |
Caffe/Torch |
opencv |
CVE-2017-12606 |
Crash |
是 |
Caffe/Torch |
opencv |
CVE-2017-14136 |
Integer |
是 |
在一些情况下,如上表所示,这不是框架本身的过错,因为软件包开发人员还没有提供补丁。
要是一些人不先考虑安全性,就贸然试水AI,那还是足以会给他们带来麻烦。
相关阅读:
23种深度学习库排行榜:TensorFlow最活跃、Keras最流行
横向对比三大分布式机器学习平台:Spark、PMLS、TensorFlow