CVE-2025-68619Signal K Server是一款运行在船只中央集线器上的服务器应用程序,广泛应用于船舶自动化和监控系统。在2.19.0版本之前,Signal K Server的appstore接口存在严重的安全漏洞,允许具有管理员权限的用户通过REST API安装npm包。攻击者可以利用npm包管理器对版本参数的处理灵活性,通过构造恶意版本说明符从攻击者控制的源安装带有恶意postinstall脚本的npm包,从而在服务器上执行任意代码。该漏洞的CVSS评分为7.2,属于高危漏洞,攻击复杂度低,无需用户交互,但需要管理员权限。成功利用此漏洞可能导致服务器完全沦陷,攻击者可以窃取敏感数据、植入后门或对船舶系统进行进一步攻击。官方已在2.19.0版本中修复了此问题。
该漏洞的根本原因在于Signal K Server对npm版本参数的安全验证不足。在appstore的REST API端点中,虽然代码会验证包名是否存在于npm官方注册表,但version参数可以被设置为任意的npm版本说明符格式。npm包管理器支持多种非标准版本来源,包括:1) git仓库地址(如git+https://github.com/attacker/malicious.git);2) GitHub简写语法(如github:attacker/malicious-package);3) HTTP/HTTPS URL指向的tarball压缩包。当npm安装这些来源的包时,会自动执行package.json中定义的postinstall、preinstall等生命周期脚本。攻击者只需创建一个包含恶意postinstall脚本的npm包,并将其托管在攻击者控制的服务器或git仓库中,然后通过REST API的版本参数指定该来源即可触发代码执行。由于Signal K Server通常以高权限运行在船舶系统的核心位置,成功利用此漏洞可能导致整个船舶网络被攻击者控制。