丹麦本土人口约 600 万。2026 年 10 月 5 日,丹麦 CPR 管理机构公告:全国人口登记库中约 880 万条记录遭到未授权访问,泄露字段包括姓名、地址和 CPR 号码。记录数比人口还多,因为 CPR 系统一共收录约 1100 万条记录,在世居民之外,还有已移居海外者和已去世者。
整个事件里找不到一道被攻破的防火墙。攻击者手里握着一家丹麦私营企业依法获得的查询权限,在这家企业被允许看到的字段范围内批量查询。异常从 9 月开始,到 10 月初才被发现。
国家级身份登记系统最大的攻击面在合法授权的第三方查询接口:拿到一个有权限的账号,整库数据就能以正常业务查询的形式被搬走。 CPR 号码又是丹麦数字社会的认证根,它一旦全量外流,就没有「重置」这个选项。
880 万条记录覆盖了登记库八成
880 万除以 1100 万,约等于 80%。这个覆盖率已经接近全表导出,针对某个人群的定向查询解释不了这样的规模。攻击者要的是整库,而接口允许了这件事。
被拉走的记录里有相当一部分属于已移居海外者和已去世者。已故者不会察觉自己的身份被冒用,移居海外的人大概率也看不到丹麦本地媒体的提醒。泄露通知是数据事故后最常规的补救手段,对这两类人基本失效。
官方确认的字段是姓名、地址、CPR 号码,外加一句「及其他信息」。CPR 登记库本身还可能存有婚姻状况、出生登记、亲属关系、丹麦国教会隶属关系以及法律上无行为能力等信息。官方尚未逐项列明「其他信息」的范围;如果亲属关系和婚姻状况也在其中,拿到数据的人就能拼出家庭关系图,冒充亲属或机构的诈骗话术会更难识破。
图:丹麦媒体报道此次事件时使用的资料照片。事件本身没有可供拍摄的「被攻破现场」,攻击流量在系统看来与日常业务查询无异。来源:The Copenhagen Post(Jonas Skovbjerg Fogh / Ritzau Scanpix)
一个 §38 查询账号,绕开了全部边界防御
丹麦 CPR 法第 38 条允许「具有正当利益」(berettiget interesse)的私营企业查询 CPR 信息,通常是需要核验客户身份或地址的企业。这次被利用的,就是某家丹麦企业依此条款获得的合法权限。攻击者的查询全部落在私营企业可访问的信息范围之内。
从网络层看,这些请求来自一个已认证的客户端,调用的是设计好的接口,返回的是授权范围内的字段。防火墙和入侵检测这类边界设施,没有任何理由拦截它。访问控制回答了「这个账号能不能查这个字段」,却没有回答「这个账号一个月该查多少人」。
有一个细节能把问题定位得更准。选择了「姓名与地址保护」(navne- og adressebeskyttelse)的居民,其姓名和地址不在这次未授权访问的范围内。私营企业本来就看不到这部分数据,泄露里也就没有它。字段级权限控制在这次事件里按设计生效了。
CPR 系统管住了「能查什么」,没有管住「能查多少」。 对一个单条查询返回完整身份信息的接口来说,后者才决定了一个失窃账号能造成多大的损失。
异常持续了整个 9 月,10 月 2 日才被发现
时间线很短,检测窗口却很长。9 月期间系统里出现「异常行为」;10 月 2 日周五晚间,CPR 管理机构发现问题;周末确认了规模,关闭了该公司的访问权限并封堵漏洞。从异常出现到被发现,中间隔了数周。
MLex 报道称,丹麦数据保护局(Datatilsynet)正在调查有关「大量自动化搜索以识别有效个人身份号码」的报告。CPR 号码共 10 位,前 6 位是出生日期,后 4 位是序号。丹麦自 2007 年起已不再要求所有新号码满足模 11 校验,校验位挡不住枚举。
如果 MLex 的描述准确,攻击路径就很清楚了:每个出生日期最多 1 万个候选号码,查询接口本身充当了验证器,号码有效就返回记录。这种查询模式的特征很明显。正常业务查询的对象是已有客户,命中率高;枚举会产生大量无效号码请求,命中率低、频率高、时间分布平坦。
官方还没有公布攻击者的查询频率,也没有说明最终是哪条信号触发了告警。可以确定的是,一家企业的正常业务量大致可预期,按账号设定查询配额、监控命中率,都是成熟手段。数周的检测延迟,给了批量导出足够的时间。
号码泄露之后,没有「重置」这个按钮
CPR 号码接入了丹麦几乎所有的公共和商业服务:数字邮政、银行、医疗、MitID。密码泄露了可以改,信用卡泄露了可以换卡,CPR 号码却是出生时分配、终身不变的。880 万条记录一旦流出,就会一直在外面。
CPR 管理机构在公告里专门提醒:任何人都不应在电话、邮件等场景中交出密码或其他机密信息,即使对方似乎已经知道你的姓名、地址和 CPR 号码。这条提醒把话说得很直白:知道你 CPR 号码的人,不再能被默认是可信方。
在不少客服和业务流程里,「报出 CPR 号码」一直被当作核验身份的一步。这次事件之后,这一步的验证价值归零了。MitID 这类需要设备或动态码的认证仍然有效,薄弱环节转移到了人:电话里的「银行客服」报出你的全名、住址和 CPR 号码,再索要验证码,可信度比以往高得多。
图:欧洲媒体对此次泄露的报道配图。事件迅速从丹麦本地新闻扩散为欧洲范围的报道,受影响者中包括已移居其他国家的人。来源:Euronews
关掉一个账号,还要审查剩下的全部授权
处置动作已经展开。涉事企业的访问权限在周末被关闭,事件已上报丹麦数据保护局(该局周日收到通报),警方和相关机构立案侦查。目前尚不清楚幕后是谁,公开信息也没有说明这家企业的权限是如何被攻击者利用的。
CPR 管理机构将其定性为「严重安全事件」(alvorlig sikkerhedshændelse)。研究与教育及数字化大臣 Christina Egelund(温和党)称之为「极其严重的事件」(dybt alvorlig hændelse),已向议会商业与数字化委员会通报,并要求对 CPR 系统做一次全面安全审查。
关掉一个账号,堵住的是这一条路径。同样的结构存在于每一家依 §38 获得授权的企业。每个账号都能在授权字段内查询,凭据也都可能落到别人手里。安全审查的价值取决于范围:只看这一个账号,还是覆盖所有第三方账号的配额、行为基线和凭据保护。
身份系统得假设合法账号会被滥用
丹麦 CPR 系统的网络边界没有失守,字段级权限也按设计生效了。880 万条记录依然出去了。缺口在信任模型里。系统默认持有授权的查询方只会按业务需要查询,没有为「授权账号落入他人之手」设计用量上限和行为监控。
一个国家把身份号码当认证根,就得按「凭据终将失守」来设计每一个第三方查询接口。按业务规模设配额,监控命中率,对批量模式实时告警。这些都算不上新技术,缺的是把它们当作必选项。
CPR 号码已经不能再当秘密用了。丹麦接下来要补的,是所有仍然把它当秘密的流程。
参考链接:
- CPR 管理机构公告:Omfattende uautoriseret adgang til borgeres CPR-oplysninger(2026-10)
- The Copenhagen Post 报道(2026-10-05)
- Euronews 报道(2026-10-05)
- MLex 关于丹麦数据保护局调查的报道