源码泄露后的口令存储、TLS兼容与账户防护
某在线协作文档服务商拥有约480万注册用户,其中约12万为企业付费客户。一次代码仓库配置错误,导致后端源码在公网可访问约30小时,随后被安全研究者下载并公开了部分截图。公司自查发现:用户口令表中口令字段为32位十六进制字符串,采用MD5直接计算且未加盐,表中虽有salt列但值全部为空;登录接口的调试日志里保留了最近7天的明文口令;对外开放的API同时支持TLS 1.0、1.1和1.2,并允许RC4-SHA等弱套件,原因是约2,000家客户的嵌入式打印终端只支持TLS 1.0;系统尚未部署多因素认证,登录失败次数不作限制,会话令牌有效期为30天且用户注销后仍然有效。公司已通过ISO/IEC 27001认证,客户合同中承诺“采取行业标准的安全措施”。安全团队共6人,需在48小时内向CEO提交处置方案。CTO认为“没有证据表明源码已被实际利用”,主张先观察;运维反馈强制重置口令会带来大量客服工单。合规部门提醒,该服务在中国境内有大量用户,所涉信息属于个人信息。公司尚未建立漏洞响应流程,也没有对外披露安全事件的先例,法务只有1名兼职人员。
1. 针对当前口令存储现状,给出处置方案,并判断是否应当强制全部480万用户重置口令。
Read the worked answer
先认清技术约束:口令以MD5无盐存储,没有明文就无法离线批量重算成更强的哈希,所谓“后台全部重算”不可行;只能在用户下次登录、口令明文短暂存在于内存时,用Argon2id(例如m=64MiB、t=3、p=4)重新计算并写回,同时为salt列填入随机值。
再判断风险:MD5无盐意味着攻击者可离线高速爆破、彩虹表可直接命中常见口令、相同口令在不同用户间可被识别。源码已在公网暴露30小时,应假定口令表已被下载。因此“下次登录弹窗提示”远远不够--攻击者可以拿着已破解的口令直接登录,根本不会看到提示。
分层处置:
- 立即让全部会话令牌失效,缩短有效期,修复注销后不失效的缺陷。
- 管理员账号、企业付费客户的管理员、近期有异常登录的账号强制重置并强制启用MFA。
- 其余用户在下一次登录时强制改密(而非提示),新口令做长度校验和弱口令库比对。
- 长期不活跃账号锁定,经邮箱验证后重置。
- 全量开启登录失败限速、异地/异常登录检测与告警,并对日志中的明文口令立即停止记录、清理历史日志。
判断依据:强制全量重置的收益是彻底消除已泄露口令的可用性,成本是客服压力和部分用户流失;但在源码已公开的前提下,拖延导致的撞库与跨站复用损失远大于重置成本。同时按合同与法规评估是否需要主动通知客户和监管方。
2. 如何下线TLS 1.0/1.1与RC4,同时不影响2,000家只支持TLS 1.0的嵌入式客户?请给出分阶段方案和判断依据。
Read the worked answer
分三步走,核心思路是把老协议隔离到独立端点,而不是让主站长期兼容。
第一步(0~2周):服务端禁用RC4及CBC类弱套件,关闭不安全的重协商与压缩,默认套件改为ECDHE+AEAD;在网关/WAF上统计仍在使用TLS 1.0的客户端类型、来源IP和调用接口,拿到真实的受影响清单,而不是直接采信“2,000家”这一估算。
第二步(1~3个月):为老终端建立独立的遗留端点,例如单独域名legacy.example.com、单独IP和端口、源IP白名单,只暴露打印所需的少量接口,使用独立证书,并施加更严格的限速、日志与告警,把它当作已知风险下的补偿控制;同时逐家联系客户,提供固件升级或设备替换方案,给出明确下线日期。
第三步(到期):关闭遗留端点,并在监控中确认无残留调用。
判断依据:不能让480万用户的主站为了少数设备长期停留在TLS 1.0,也不能一夜之间让客户打印机全部报废,所以用“隔离+补偿+时间表”把风险限制在可控范围。同时要检查证书链、HSTS、API与网页端配置是否一致,避免只在入口关闭而内部服务仍接受弱协议。
3. 从会话管理和登录防护角度,列出与口令问题同等优先级的补救措施,并说明理由。
Read the worked answer
这些措施之所以与口令存储同优先级,是因为即使口令哈希修复了,当前配置仍让攻击者可以用“撞库+无限次尝试+长期有效令牌”绕过口令强度。
- 会话令牌治理:注销后令牌仍有效、有效期30天,意味着一旦令牌泄露,改密也无法把攻击者踢下线。应立即实现服务端会话吊销、改密即失效所有会话、缩短有效期并引入刷新令牌轮换。
- 登录失败限速与锁定:目前失败次数不限,等于开放在线爆破。应按账号+IP双维度做指数退避、验证码和异常地理位置告警,同时对同一IP撞库多个账号的行为做阻断。
- 多因素认证:优先覆盖管理员、企业客户管理员和高权限API调用,再逐步向普通用户推广;这是对抗撞库最有效的手段。
- 停止日志记录明文口令:口令字段一旦进入日志,等于把防线降为零,应立刻修改日志脱敏规则、清理历史日志并限制日志访问权限。
- 异常检测:基于设备指纹、登录时间、常用地点建立基线,对异常登录强制二次验证。
优先级依据是“攻击者拿到口令后还能走多远”:限速和MFA决定在线攻击成本,会话吊销决定事后能否止损,三者与口令哈希迁移应并行推进,不能排队。