一把钥匙打开了三道门。黑客用某位TVING开发者的访问密钥进入开发仓库;再用在那里找到的另一把钥匙进入负责服务运行的运营系统;随后又用拿到的账号和密码打开装有用户信息的数据库。整个过程只用了三天。
韩国科学技术信息通信部民官联合调查组3日公布了TVING入侵事故调查结果。黑客在5月29日至31日的三天里,仅凭一把开发者访问密钥,先后突破开发系统和运营系统,窃取了3954万个账号的信息。(图=Solution新闻AI图像使用)科学技术信息通信部民官联合调查组3日公布了TVING入侵事故调查结果。黑客在5月29日至31日的三天里,仅凭一把开发者访问密钥,先后突破开发系统和运营系统,窃取了3954万个账号的信息。(图=Solution新闻AI图像使用)
韩国科学技术信息通信部3日发布了TVING入侵事故民官联合调查组的调查结果。调查组对9台开发者终端进行取证分析,并对安全设备、数据库(DB)和系统接入记录逐一比对,复原了黑客五个阶段的行动路径。这个过程中,不仅是黑客手法令人震惊,更有多次本可以阻止事故发生的机会。
◆ 起点是CPU 100%警报
此次事故被发现的契机并不是入侵检测,而是服务器过载。5月30日下午6时,TVING数据库服务器的工作量突然激增,CPU使用率飙升至100%。异常迹象告警响起,TVING随即阻断了相关操作。
在排查原因时,TVING发现有未经授权的人进入了内部服务器并查询用户信息。6月1日公司向韩国互联网振兴院(KISA)报案,次日科学技术信息通信部现场调查,并于6月3日组成民官联合调查组。调查组回溯发现,黑客在警报响起前一天就已经接入了公司内部系统。
◆ 第1步,偷来的钥匙进入开发仓库
5月29日下午2时42分,黑客拿着TVING某位开发者的“开发环境访问密钥”进入了开发环境。
先解释一下术语:开发环境是存放源代码、供多名开发者协作修改的空间。若类比成建筑,就是堆放设计图纸的制图室。进入这里需要每位开发者发放的访问密钥。黑客事先偷到了这把钥匙。
进入后,黑客把可访问的361个开发项目全部打包带走,容量达30.35GB。起初只窃取了14个项目,第二次攻击时则全部搬空。项目中包含个性化内容推荐与搜索算法、会员管理和认证体系、支付管理、付费服务运营等支撑TVING运行的核心技术。
这里暴露出第一个问题。TVING给所有开发者开放了全部项目的访问权限。按原则应只开放工作所需的最小权限,但在TVING,一名开发者的钥匙就能看到全部361个项目。对黑客而言,一把钥匙就是万能钥匙。
◆ 第2步,源代码里嵌着43把“万能钥匙”
黑客细看带走的源代码后,又发现了更大的“宝藏”——能进入实际服务运行的“运营环境”的访问密钥。运营环境是在AWS等云服务上租用服务器的空间,不是制图室,而是真正的建筑物。
调查组统计发现,在这361个项目中,竟然包含了43个运营环境访问密钥。其中41个是直接写在源代码里的(硬编码),3个则以明文形式存放在程序配置值中,未做加密。为了开发方便,他们把钥匙直接写进代码里,却没有放进单独的保险箱。就像把家门钥匙放在门口花盆下面,结果连花盆一起被偷走。
TVING并非不知道硬编码存在问题。2024年的模拟黑客攻击中,相关访问密钥直接暴露在源代码里的问题就已被指出,但公司并未修正。调查组判断:“如果密钥管理体系完善,本可以阻断对开发环境的访问,也就无法进入运营环境。”
◆ 第3步,在运营系统里拿到数据库密码
5月29日下午3时15分。进入开发环境仅33分钟后,黑客就踏入了运营环境。
他逐一查看已获得的43个密钥权限,寻找能够窃取信息的通道。
调查组确认,黑客实际在攻击中使用了其中2个。一个是可处理大规模数据并访问云存储的密钥,另一个是可以新建虚拟服务器的密钥。两者都保存在开发者笔记本电脑中。
在运营环境中,黑客还获得了决定性的情报:存放用户信息的数据库管理员账号和密码,竟然以明文形式未加密保存。
◆ 第4步,第一次尝试被警报拦下
5月30日上午9时22分,黑客在云存储中植入了用于信息泄露的攻击工具,共20种自制脚本。他连接存储和数据库,开始抓取用户信息。
由于大量查询导致数据库服务器工作量暴增,下午6时CPU使用率飙升至100%。警报响起后,TVING中止了相关操作。黑客试图一次性窃取大量数据,结果把服务器逼入了过载状态。第一次尝试在这里被拦下。
问题在于,TVING并未把警报识别为黑客攻击。调查组指出,TVING只盯着CPU负载等单一指标,没有建立能够实时监测网络和数据流、识别异常行为的体系。也没有只允许授权IP访问或要求多重认证(MFA)的访问控制政策。公司看到了服务器“生病”的信号,却没能看清是谁、为何让它“生病”。
◆ 第5步,悄悄再来……CPU仅10%却搬走24GB
黑客并未退却。5月31日周日晚上7时,他换了方法再次返回。
这次他用了之前拿到的第二把密钥,也就是可创建虚拟服务器的密钥。他在运营环境内搭建了属于自己的虚拟服务器,并把那里作为外泄通道。他将数据库中的用户信息全部转移到那台服务器上,共24GB,然后发送到外部服务器。任务完成后,他删除虚拟服务器,抹去痕迹。整个过程从晚上7时到10时20分,共3小时20分钟。
这一次没有触发警报。调查组查看当时CPU占用率,发现一直维持在10%以内。调查组认为,黑客吸取前一天触发警报的经验,刻意把服务器负载压低,缓慢窃取数据,绕过了防御机制的上限。他摸清了防护体系的边界,并在其下方潜行穿过。信息最终被转移到外部服务器。
◆ 第一把钥匙是怎么偷来的……仍未查明
在五个阶段中,起点——也就是开发者访问密钥究竟如何被偷走的——最终仍未查明。
调查组围绕五种情景进行了细致调查:查看该开发者的公司与个人邮箱,确认是否收到钓鱼邮件;对9台开发者终端(8台笔记本、1台PC)进行取证,寻找恶意代码;调查软件开发和发布过程中是否混入恶意代码(供应链攻击);检查员工之间是否存在擅自共享访问密钥的情况;以及是否存在VPN设备漏洞被攻破的迹象。结果均未得到确认。
原因是证据不足。TVING的VPN接入记录仅保留6天,这与日志管理政策没有在新采购设备上得到妥善落实有关。虽然开发环境接入记录保留了90天,但如果密钥被盗发生在更早之前,痕迹早已消失。没人知道黑客究竟从何时开始掌握这把钥匙。
取证过程中还发现,8名开发者的终端中保存着37个开发环境访问密钥和52个运营环境访问密钥,且均未加密。还确认存在通过公司内部即时通讯工具传递密钥的迹象。调查组指出,公司根本没有关于密钥发放、使用、变更、注销以及定期检查的管理流程。
◆ 泄露了什么
泄露规模为3954万个账号,其中包括2206万个可登录的活跃账号、850万个一年以上未登录的休眠账号、887万个依法保留的已注销账号,以及11万个测试账号。
按账号状态划分(来源=科学技术信息通信部)一个人可注册多个账号,因此存在重复数据,最多一人拥有13个账号。按注册方式来看,Naver、Kakao、Apple等SNS快捷注册账号最多,为2247万个;CJ ONE联合会员为863万个;TVING自有注册账号为726万个。
按注册方式划分(来源=科学技术信息通信部)泄露信息共20类、70种,包括ID、姓名、出生日期、性别、手机号、邮箱、实名认证信息(CI)、昵称、支付记录、合作服务信息等。CI是代替居民身份证号用于识别个人的唯一值,在付费或成人认证时生成。
拥有CI的账号1904万个(去重后1324万个)平均泄露了11项信息;没有CI的账号2040万个则平均泄露5项信息。没有CI的账号中,也存在姓名以数字填写、邮箱填写错误等不准确数据。
加密情况决定了损失的不同。会员密码采用不可逆的一次性加密,黑客无法解开;退款账户号码和个人资料锁定号码也以加密状态泄露。相反,手机号后四位和邮箱用户名部分虽然已加密,但连可解密的密钥也一起泄露。调查组认为,这与明文泄露几乎没有区别。锁虽然上了,却把钥匙挂在了锁旁边。
截至目前,尚未发现利用这些泄露信息进行二次犯罪的案例,也未发现暗网交易迹象。不过,调查组认为电话号码和邮箱可能被用于短信诈骗、语音诈骗或在暗网上交易,因此已加强实时监控。准确的个人信息泄露规模将由个人信息保护委员会另行公布。
◆ 为什么没拦住……4人、14小时、被搁置的警报
调查组指出,根本原因不在技术,而在人员和体系。
TVING有265名员工,其中开发人员149名。负责信息保护的专职人员(不含外包)仅约4人,几乎相当于每37名开发者配1名安全人员。调查组认为,仅凭这样的人手,难以同时承担常态安全监控、漏洞检查和异常行为监测。
危机应对也很迟缓。5月30日下午6时出现异常征兆后,直到31日上午10时10分,才将情况通报给负责统筹入侵事故应对的信息保护专职组织和首席信息安全官(CISO),前后相隔约14小时。其间黑客已经在准备第二轮攻击。调查组指出,部门间信息传递和协作机制不足。
连工作用电脑的杀毒软件安装和最新版管理等基本安全检查也被忽视,而这些本就是TVING内部信息保护指南所规定的内容。
◆ 报告也晚了……罚款,以及即将变化的法律
违规事实也已确认。韩国信息通信网法规定,发现入侵事故后应在24小时内报告。TVING申报的发现时间是5月31日下午3时9分,但调查组认定,真正的发现时间应是同日上午10时10分,也就是信息已传达到信息安全团队的时点。实际报告是在6月1日下午3时8分,已超过24小时,属于最高3000万韩元罚款对象。
科学技术信息通信部要求TVING在9月内提交再发防止执行计划,并在10月至12月期间核查落实情况,自明年1月开始检查是否执行不力。如有不足,将下达整改命令。
制度也将改变。自9月11日起施行的修订版《个人信息保护法》允许对反复发生或因故意、重大过失导致的大规模泄露,处以最高相当于全年营业额10%的惩罚性罚款。
10月1日施行的修订版《信息通信网法》将要求主要企业扩充安全人员和预算,并允许政府在掌握黑客迹象后,即使企业尚未申报,也可先行启动调查;若对再发防止措施执行不力,还将处以履行强制金。
◆ TVING的道歉与补偿
TVING代表崔珠熙(音)同日举行说明会表示:“对给客户带来巨大担忧和不安,深表歉意。我们将诚恳接受调查结果,彻底落实整改措施和再发防止对策。”
补偿内容包括:1年期黑客与网络钓鱼安心保险(每人最高300万韩元)、5000韩元TVING积分、升级为高级观看环境,以及可选择Wavve或CGV折扣券。7日至30日接受申请,次月6日起生效。TVING还宣布,到2030年将把信息保护投资扩大到近5年水平的4倍,把今年30亿韩元的安全支出提升至约120亿韩元,并在5年内将安全人员扩充至原来的3倍。
◆ 其他企业应记住的五点
TVING事故在技术层面并没有什么新东西。反过来看调查组的指出,就正好是预防措施。
访问密钥必须放在代码外。钥匙应存入单独的保险箱(密钥管理工具),代码里只保留打开保险箱的流程。密钥要定期更换,并留下谁在何时使用过的记录。
权限必须只给必要范围。若一名开发者能查看全部项目,一把钥匙就会变成万能钥匙。若按项目、按角色拆分访问权限,即使一处被攻破,损失也能被限制在局部。
监控不应只看负载,而应看流向。只盯CPU使用率,就会在黑客放慢速度时漏掉异常。要建立能识别频繁大规模查询、陌生IP访问、新建虚拟服务器等异常行为的体系,并通过限定授权IP和多重认证提高门槛。
记录要保存得更久。只有6天的接入记录,无法查明事故原因。调查和防止再发,都从日志开始。
警报之所以是警报,是因为要被修正。若把2024年模拟黑客攻击发现的漏洞当时就修好,事故会是另一种样子。必须建立将发现漏洞与修复漏洞作为一体管理的机制。
◆ 用户现在该做什么
虽然密码是以不可逆方式泄露的,但姓名、手机号码、邮箱和出生日期也一并外泄,足以让诈骗分子发送定制化短信。不要点击打着“TVING补偿申请”“账户安全检查”名义发来的短信或邮件链接,补偿申请应直接通过TVING应用或官方网站进行。
如果你在其他服务中也使用了与TVING相同的密码,最好尽快更改。另外,建议开启通信运营商和金融机构的防止冒名开通服务,以帮助阻止利用泄露信息进行的开卡或贷款尝试。