条形码作为攻击媒介?

信息安全 渗透测试 攻击 攻击预防 攻击向量
2021-08-21 01:08:12

几周前,我正在观看一段 defcon 视频,其中一个人正在演示条形码阅读器通常是如何很容易被黑客入侵的。他接着说,大多数系统的输入都没有经过净化(听起来类似于 SQL 注入),并且大多数系统都可以通过制造商轻松获得的条形码进行配置。再加上机器可以快速配置为读取所有类型的条形码,包括可以存储超过 1000 个字符的条形码,条形码是一个漏洞吗?怎么能阻止这种情况呢?

到目前为止,我可以看到的可能漏洞是 SQL 注入和缓冲区溢出。

4个回答

是的,条形码扫描仪存在潜在的漏洞。您需要以与防止来自任何输入向量(例如网络连接或键盘)的攻击相同的方式来防止来自该向量的攻击。

  1. 验证应用程序中的输入,而不是扫描仪。不要依赖将扫描仪配置为仅传送 12 位 UPC-A 条码。正如每个 Web 应用程序开发人员很快了解到的那样,信任客户端执行输入清理是一个巨大的安全漏洞。在应用程序中使用长度检查以确保缓冲区溢出不会被利用。执行白名单值检查以确保您没有越界字符(例如,如果您希望用户仅扫描产品 UPC-A 或 EAN-13 条形码,则应抛出异常如果输入检测到任何非数字值。)

  2. 防守代码。就像使用 Web 应用程序一样,您需要做出安全的编码选择,例如参数化 SQL。您应该已经这样做以防止键盘输入的 SQL 注入攻击;条形码在这里没什么特别的。

  3. 强化您的设备。 大多数条码扫描仪最初是通过扫描一系列制造商提供的特殊条码来配置的(您的扫描仪文档将描述这些符号。)阅读扫描仪文档以找到通过数据连接从主机配置扫描仪的方法。一旦您可以从计算机配置扫描仪,请执行此操作。在要设置的配置项中,您应该禁用扫描仪读取配置条码的能力。

许多条码扫描仪被操作系统视为一种键盘。这为他们提供了与在键盘上输入条形码信息的人完全相同的攻击面。作为一个极端的例子,一个能够理解字节模式 PDF 417二进制 QR 码的条码扫描器可以命令计算机退出当前程序,启动 Internet Explorer,从攻击者选择的网站下载一个程序,然后运行该程序。

条形码只是输入的表示。

条形码是一个漏洞吗?可以写成输入是漏洞吗?. 本身没有,但它是一种攻击媒介。

条形码通常对数字、字符串或二进制数据进行编码。除了如何将这些数据用于不同级别的利用(您提到缓冲区溢出,但它会沿着软件链向上 - 条形码可以包括由操作系统/浏览器解释的 URL,然后由服务器端的软件解释),还要考虑条形码本身的解析,它可能包含越界访问、溢出等。

预防?与往常一样,输入验证是一种卫生。

如果没有输入验证,一切都是可能的攻击向量。我什至听说过使用车牌作为输入源的 SQLI。在为测速相机编程时,没有人会想到这么疯狂的想法,这就是问题所在!