CryptoLib 初始化密钥表漏洞CVE-2025-59534
CryptoLib是一个开源的加密库,主要由MXWXZ开发并维护,它提供了多种加密和哈希算法,为开发者提供了一站式的安全编码解决方案。
一、基本情况
CryptoLib 是基于 CCSDS 空间数据链路安全协议(SDLS-EP)软件实现,可保障运行核心飞行系统(cFS)的航天器与地面站通信安全。
CryptoLib以其全面的功能、高性能和开源特性,成为了开发者在构建安全应用程序时的理想选择,能以高效且可靠的方式满足用户需求。
栋科技漏洞库关注到CryptoLib受影响版本中存在在一个注入漏洞,该漏洞现在被追踪为CVE-2025-59534,该漏洞的CVSS 3.X评分为7.3。
二、漏洞分析
CVE-2025-59534漏洞是位于CryptoLib版本1.4.2之前,位于initialize_kerberos_keytab_file_login()函数中的一个命令注入漏洞,评级较高。
该漏洞的存在,源于代码直接将用户控制的输入插入到shell命令中,并通过system()执行它,而没有进行过任何的清理或验证亦或是转义。
攻击者可通过构造特定输入在目标系统上执行任意命令,导致系统被远程控制或数据遭到篡改,这个问题已在版本1.4.2中得到修复。
三、POC概念验证
1、特定的脆弱环节
第2265行:命令模板
char *kinit_shell_command_base = "kinit -kt %s %s";
问题:为shell命令构造创建格式字符串模板。
2、主要位置
文件:src/crypto/kmc/cryptography_interface_kmc_crypto_service.template.c
函数:initialize_kerberos_keytab_file_login()
代码位置:2248-2283
第2266-2270行:不安全字符串插值
uint32_t len_kinit_shell_command =
strlen(kinit_shell_command_base) + strlen(cam_config->keytab_file_path) + strlen(cam_config->username);
char *kinit_shell_command = malloc(len_kinit_shell_command + 1);
snprintf(kinit_shell_command, len_kinit_shell_command, kinit_shell_command_base,
cam_config->keytab_file_path, cam_config->username);
问题:用户控制变量的直接插值,无需验证或转义。
第2272行:易受攻击的执行
int32_t kinit_status = system(kinit_shell_command);
问题:通过system()直接执行构造的命令,而不进行清理。
3、攻击向量入口点
配置功能
文件:src/core/crypto_config.c
函数:Crypto_Config_Cam()
线路:667-705
int32_t Crypto_Config_Cam(uint8_t cam_enabled, char *cookie_file_path, char *keytab_file_path,
uint8_t login_method, char *access_manager_uri, char *username, char *cam_home)
{
// ... setup code ...
// VULNERABILITY ENTRY POINT: No validation of inputs
status = crypto_deep_copy_string(keytab_file_path, &cam_config->keytab_file_path);
status = crypto_deep_copy_string(username, &cam_config->username);
// ... no sanitization or validation ...
}
4、通过用户名攻击示例

5、通过Keytab路径的攻击示例

四、影响范围
CryptoLib <= 1.4.2
五、修复建议
CryptoLib > 1.4.2
六、参考链接
