地铁闸机口,维码一个穿卫衣的安全年轻人用手机扫了扫共享单车上的二维码,页面跳转,漏洞他输入手机号、维码验证码,安全然后单车“咔嗒”一声解锁。漏洞整个过程不到十秒。维码他不知道的安全是,刚才那个二维码如果被替换过,漏洞他的维码手机号、位置信息,安全甚至支付授权码,漏洞已经同步到了千里之外某个服务器上。维码
二维码不是安全新鲜事物,但它的漏洞安全漏洞比大多数人想象得严重得多。原理很简单:二维码本质上是把一串字符编码成图形,扫码的过程就是解码并执行内容的过程——问题是,执行什么内容,完全由二维码的制作者决定。一个恶意二维码可以指向钓鱼网站,可以触发支付请求,可以写入通讯录,甚至可以让你连接上一个伪装成免费Wi-Fi的恶意热点。
我做过一个实验。用一台旧手机和一台笔记本,五分钟内生成一个包含恶意链接的二维码,打印出来贴在便利店门口的促销海报上。放了两小时,有十一个人扫了。其中三个人输入了手机号,一个人甚至下载了“优惠券”APP——那是我打包的一个测试程序,能读取短信验证码。如果这是真实攻击,这三个人今天就会收到银行扣款短信。
更隐蔽的是“嵌套攻击”。二维码本身不直接指向恶意网站,而是先跳到正规平台(比如某大厂的短链接服务),再利用平台重定向漏洞,最终把你带到钓鱼页面。这种路径让普通用户根本无法通过预览URL来识别——你看到的是“https://dwz.cn/xxx”,安全得很,但最终落地页面是仿造的银行登录界面。仿造得几乎一模一样,连地址栏的小锁图标都有。
受害者往往不是技术小白。我认识一个做程序员的姑娘,她扫码买了一杯奶茶,事后发现支付宝被刷走了一笔陌生商户的免密支付订单。她复盘了半天,问题出在奶茶店收银台上的二维码——店主自己打印的,但被贴了一层薄薄的透明贴纸,肉眼几乎看不出色差。那种贴纸在电商平台几块钱就能买到一沓。
部分人会说:“那我用支付宝或微信自带的扫码功能不就行了?”这话只对了一半。大厂确实有恶意网址库拦截,但拦截率不是百分之百,而且拦截逻辑针对的是已知域名。攻击者可以注册新域名,或者利用一些允许用户生成页面的正规服务(比如某些表单工具),绕过黑名单。更别提那些需要扫码登录的第三方APP,它们的扫码逻辑完全由自己实现,安全水平参差不齐。
真正该改的是习惯。别见码就扫,尤其是贴在公共场所、没有任何官方标识的二维码。付款前看一眼收款方名称,和店名对不上就停手。扫码后如果跳转到了任何要求输入密码或验证码的页面,立刻关闭。别用“扫码领礼品”的诱惑去考验自己的判断力——那些地推摊位上印得花里胡哨的二维码,背后是谁在收数据,没人知道。
技术层面,别把二维码当身份凭证。它只是信息的载体,和一张写着网址的纸条没有本质区别。你看到纸条上的网址,会犹豫一下要不要点开;但看到二维码,却往往直接扫了。这种心理落差,就是漏洞存在的土壤。