安全研究人员在德国使用的电子ID (eID)卡系统主干中发现了一个漏洞。这个漏洞在被利用时,允许攻击者使用eID身份验证选项欺骗另一个德国公民的身份。攻击者在滥用这一漏洞之前需要克服一些障碍,但发现这一漏洞研究人员表示,他们的eID欺骗黑客技术完全可行。
这个漏洞并不是嵌入在德国eID卡的射频识别(RFID)芯片中,而是存在于希望支持eID认证的网站所实现的软件包中。这个易受攻击组件名为Governikus Autent SDK,是德国网站(包括政府门户网站)使用SDK之一,用于添加对基于eID的登录和注册过程的支持。发现这个SDK缺陷的德国网络安全公司SEC Consult表示,他们已经向CERT-Bund(德国计算机应急响应团队)报告了这个问题,CERT-Bund已于今年8月与供应商Governikus合作发布了一个补丁--Autent SDK v3.8.1.2。
SEC Consult今天在一份报告中称,所有使用Autent SDK 3.8.1及之前版本的网站都很容易受到他们发现的漏洞的影响。SEC Consult建议网站所有者,如果他们还没有更新他们的Autent SDK到最新版本中,那么他们应该更新他了。
漏洞是如何工作的?
根据该公司的报告,漏洞存在于网站如何处理从试图通过eID系统验证用户那里收到的回复过程中。在正常情况下,此认证过程要经过以下步骤:
・网站会看到用户启动eID card身份验证过程,并请求用户做出特殊响应。
・用户将其eID卡插入读卡器,或将eID卡放在功能强大的手机附近。用户在安装在个人电脑或智能手机上的eID客户端应用程序中输入银行卡密码。
eID
・eID客户端应用程序连接到众多授权的eID服务器之一,以验证登录请求并生成密码验证签名,以便将响应转发回网站。
・eID客户端应用程序向初始网站发送eID响应(签名和用户个人数据),完成基于eID的认证流程。
・如果用户使用电子卡在网站上注册,该网站会记录用户,或创建一个新帐户。
根据SEC咨询专家说法,使用较旧版本的Autent SDK网站接受eID客户端响应,这些响应包含一个加密签名,但多个SAML参数包含用户的数据。
美国证券交易委员会咨询专家解释说:“签名将根据参数最后一次出现进行验证,而进一步处理的SAML响应将从第一次出现时获得。”要利用这个漏洞,攻击者至少需要一个由身份验证服务器签名有效查询字符串。查询字符串签名是由哪个公民或在什么时候发出的,都无关紧要。
这听起来是个不可克服问题,但事实并非如此。SEC Consult表示,多个eID服务器会在线公开日志,攻击者只需抓取一个旧签名响应,并在中间插入他们被欺骗的eID数据。SEC Consult发布了一段YouTube视频,展示利用这一漏洞的攻击是如何进行。
但SEC Consult表示,这种漏洞不适用于所有支持eID认证的网站。专家表示,选择使用“假名”(而不是通过每次身份验证请求发送实际用户数据)的门户网站并不容易受到攻击。假名是外观随机的字符串,与用户名类似,存储在网站和eID card的RFID芯片中。除非攻击者能够以一致的方式猜测假名,否则他们将无法利用这个漏洞来欺骗其他用户的身份。
此外,由于所有eID身份验证响应都被记录下来,网站可以查看日志,并检测攻击者何时以及是否利用过这个漏洞。这也意味着可以实时检测到攻击,阻止攻击者在登录之前试图欺骗他们的身份。好消息是,SEC Consult在今年夏天私下披露了这一漏洞,直到今天才向公众披露,这让德国网站提前三个月开始更新易受攻击的、非常受欢迎的Autent SDK。坏消息是,Autent SDK被用于一个演示应用程序中,许多德国网站可能已经下载了这个应用程序,并将其用作构建自己的eID认证系统的示例,这意味着这个问题可能在德国的在线空间中相当普遍。
SEC Consult发现的这个问题,没有哪个地方像2017年在逾75万张爱沙尼亚eID卡中发现类似的问题。爱沙尼亚政府被迫更换所有受影响的卡,以防止政府网站上的欺诈活动。斯洛伐克的一些eID卡片也受到了影响,但程度较轻。今年秋天,爱沙尼亚起诉eID卡片制造商金雅拓公司。