一位教师出身的前员工爆料,自己曾供职的教育科技公司,其产品存在一个极其严重的远程代码执行漏洞。这个漏洞一旦被利用,攻击者可以完全控制安装了该软件的学校电脑,而这一切竟源于创始人对自己30年前编写的C语言解释器的执念。
据这位化名为Jared B的爆料人介绍,该公司由一位机械工程教授Harry创立,核心业务是基于C语言为K-12学生提供数学和计算机科学课程。Harry在90年代开发了一个C语言解释器,30年后他依然坚信这是未来的技术,并围绕它打造了整个教育产品体系。
“Run Locally”按钮背后的致命设计
起初,Harry编写了一本使用本地安装版解释器和定制IDE教授编程的教材,这虽然有点自恋,但并无大碍。随着Chromebook在学校普及,他又开发了网页版IDE,让学生可以在浏览器中编写和运行C代码。
然而,Harry始终无法完全放弃他那个Windows版的C解释器IDE。于是,他在网页版中加了一个“Run Locally”按钮,方便那些仍在使用Windows的学校电脑。这个功能的设计是这样的:本地安装解释器和IDE时,会同时安装一个开机自启的守护进程,并运行一个WebSocket服务器。这个服务器有一个接口,接受C代码字符串作为参数,然后直接传给本地解释器执行。
问题就出在这里:这个本地WebSocket服务器完全没有身份验证。只要知道协议格式,任何网站都可以连接到localhost:12345/execute_c_program,发送任意代码执行。更讽刺的是,Harry对自己C实现的完整性颇为自豪,包括支持execv()这类系统调用——这意味着攻击者可以执行任何系统命令,而不仅仅是运行C代码。
漏洞不止于此:局域网内任意设备均可攻击
更糟的是,Jared B发现服务器绑定在0.0.0.0上,这意味着只要安装了Harry的软件(或者说恶意软件),同一网络内的任何电脑都可以向它发送任意C代码执行,完全不需要经过用户交互。也就是说,只要你在学校机房,隔壁电脑就能悄无声息地控制你的机器。
这些漏洞在公司成立前几年就已存在。在此期间,Harry只雇佣自己的研究生作为软件开发人员,而他们竟然没有一个人注意到这个问题。到Jared B入职时,该软件已安装在全州数千台学校电脑上。
漏洞已修复,但风险远未解除
Jared B将漏洞整理成文档并演示给Harry看。Harry确实发布了新版本修复了问题,并在发布说明中提到了“安全改进”,但从未主动联系学校或学区的IT负责人,告知他们更新软件的重要性。这意味着,即使修复版本已经发布,大量学校可能仍在运行存在漏洞的旧版本,暴露在风险之中。
Jared B认为,Harry可能因潜在涉及学校和未成年人数据泄露而面临严重法律后果,但他已经离职,不再追究此事。这场由技术自负引发的安全危机,最终以沉默收场——没有公开披露,没有紧急通知,只有一句轻描淡写的“安全改进”。
热门跟贴