我正在解决一个安全问题,我正在尝试识别恶意图像。我必须从图像中挖掘属性(很可能来自元数据),这些属性可以输入到 Weka 以运行各种机器学习算法,以检测恶意图像。
由于图像元数据可能以各种不同的方式被破坏,我发现很难识别要在图像元数据中查看的特征,我可以为学习算法量化这些特征。
我之前曾使用 ImageJ 等工具使用像素信息等信息来帮助我对图像进行分类,但是我正在寻找一种更好的方法(关于安全性)来识别和量化图像/图像元数据中的特征。
对工具和功能有什么建议吗?
我正在解决一个安全问题,我正在尝试识别恶意图像。我必须从图像中挖掘属性(很可能来自元数据),这些属性可以输入到 Weka 以运行各种机器学习算法,以检测恶意图像。
由于图像元数据可能以各种不同的方式被破坏,我发现很难识别要在图像元数据中查看的特征,我可以为学习算法量化这些特征。
我之前曾使用 ImageJ 等工具使用像素信息等信息来帮助我对图像进行分类,但是我正在寻找一种更好的方法(关于安全性)来识别和量化图像/图像元数据中的特征。
对工具和功能有什么建议吗?
如前所述,这不是一个学习问题。
问题是一个漏洞利用与另一个漏洞利用不*相似*。他们利用各个不同(!)库中的各个单独错误,例如缺少边界检查。它与其说是文件的属性,不如说是使用它的库。10 个图书馆中有 9 个不在乎。一个人会因为编程错误而行为不端。
检测此类文件的最佳方法是编写您能想到的最迂腐、同时也是最强大的格式验证器,并拒绝任何不 1000% 符合规范的图像。假设库在处理实际有效的图像时没有错误。
我强烈建议您从调查这些漏洞的实际工作方式开始。了解您正在尝试“学习”的内容可能会引导您以某种方式检测它们(或理解为什么无法进行一般检测......)。
下面是一个简单的例子,说明其中一个或两个漏洞如何起作用:
假设我们有一个非常简单的文件格式,比如 BMP。对于压缩,它支持简单的运行长度编码,因此可以将相同的像素有效地存储为 ( count x color
pair)。不适用于照片,但对于线条艺术来说非常紧凑。考虑以下图像数据:
Width: 4
Height: 4
Colors: 1 = red, 2 = blue, 3 = green, 4 = black
Pixel data: 2x1 (red), 4x2 (blue), 2x3, 5x1, 1x0, 4x1
您发现文件中有多少错误?它们可能会导致一些信任库代码失败,但是任何现代库(在了解这种攻击并且知道文件可能由于传输和硬盘错误而损坏的情况下编写)都应该跳过它,甚至可能产生部分图片。看,也许这不是攻击,而只是生成图像的程序中的编程错误......
哎呀,即使不是每次越界使用都必须是攻击。想想CD。有时,每个人都使用“过度刻录”来在 CD 上放入比规范所指的更多的数据。是的,某些驱动器可能会因为您过度刻录 CD 而崩溃。但我不会认为所有超过 650 MB 的 CD 都是攻击,因为它们违反了黄皮书关于 CD 的规范。