口令漏洞
2019年,口令漏洞某电商平台的口令漏洞安全团队做了一次内部演练。他们用一套自动化脚本,口令漏洞在三天内尝试登录了约两万个用户账号,口令漏洞结果成功进入了一千三百多个。口令漏洞成功率接近7%。口令漏洞原因不复杂——这些账号的口令漏洞口令是“123456”“abc123”“qwerty”这类东西。更让人意外的口令漏洞是,其中相当一部分账号在连续输错三次后并没有触发锁定,口令漏洞因为系统只对同一IP的口令漏洞失败尝试计数,而脚本每试三次就换一个代理。口令漏洞 这就是口令漏洞口令漏洞的典型面貌。它不是口令漏洞某个高深的技术缺陷,而是口令漏洞一个被反复利用的惯性缺口。你几乎可以在任何一次大规模数据泄露事件里找到它的口令漏洞影子。2012年LinkedIn泄露的650万条口令中,排名第一的是“linkdin”,第二是“123456”。2016年Dropbox泄露事件里,超过一半的口令长度不足8位。攻击者不需要破解加密算法,他们只需要猜——而人类在设置口令这件事上,出奇地好猜。 我见过一个真实的案例。某中型企业的内部OA系统被入侵,安全人员排查了三天,最后发现入口是一个离职员工的账号。那个账号的口令是“公司名+123”。离职员工没有及时被注销权限,而口令规则又只要求“至少6位,包含字母和数字”。这套规则看起来有要求,实际上等于没有——它没有阻止任何弱口令,只是让用户多按了一次键盘。 口令漏洞的根源不在技术,在人的行为惯性。大多数人把口令当成一道不得不跨过去的门槛,而不是一扇需要认真上锁的门。他们会在十几个网站用同一个口令,因为记不住那么多不同的组合。他们会在口令里嵌入自己的生日、手机号后六位、宠物的名字。这些东西在社交媒体上翻一翻就能找到。攻击者甚至不需要技术手段,他们可以做“社会工程学”攻击——直接打电话给客服,冒充员工,说“我忘了口令,能帮我重置一下吗”。很多客服在身份验证环节只问“你的工号是多少”,而工号往往就印在员工卡上。 另一个常被忽略的点是口令的存储方式。有些系统把口令明文存在数据库里。一旦数据库被拖走,所有口令直接暴露。稍微好一点的做法是存哈希值,但如果没用加盐(salt)或者用了过时的哈希算法(比如MD5),攻击者用彩虹表几分钟就能还原出原始口令。我见过一个开源论坛程序,它的用户表里直接存着明文口令,开发者还在文档里写“方便管理员查看用户密码”。这种设计思路本身就是漏洞。 那怎么办?强制复杂度规则?很多安全标准已经不推荐了。因为强制“大小写字母+数字+符号”的结果,往往是“Password1!”这种看似复杂实则规律明显的口令。更有效的做法是:第一,检查口令是否出现在已知泄露库中,如果是,直接拒绝;第二,推行多因素认证,让口令不再是唯一防线;第三,对连续失败尝试做全局速率限制,而不是只盯IP。最后一条尤其重要——很多系统至今还在用IP计数,而攻击者早就在用分布式代理池绕过它。 说到底,口令漏洞不是靠用户“提高安全意识”就能解决的。把责任推给用户,等于承认系统设计者放弃了责任。一个真正安全的系统,应该假设用户会设置弱口令,然后在这个前提下仍然能保护账号。做不到这一点,再复杂的口令规则也只是纸糊的锁。
-
上一篇
-
下一篇