PHP Session_Regenerate_ID函数双释放内存破坏漏洞

- AV AC AU C I A
发布: 2025-04-13
修订: 2025-04-13

PHP是一款广泛使用的WEB开发脚本语言。 PHP Session_Regenerate_ID函数存在双释放内容破坏问题,远程攻击者可利用此漏洞对应用程序进行拒绝服务攻击,可能导致任意指令执行。 session_regenerate_id()函数最先会释放旧的会话识别器,然后马上分配由会话识别生成器生成的新值: PHP_FUNCTION(session_regenerate_id) { ... if (PS(id)) { ... efree(PS(id)); } PS(id) = PS(mod)->s_create_sid(&PS(mod_data), NULL TSRMLS_CC); PS(send_cookie) = 1; php_session_reset_id(TSRMLS_C); RETURN_TRUE; } RETURN_FALSE; } 但是此分配操作不是一个原子操作。因此可被如内存限制冲突操作来中断,另外,根据PHP配置,生成器可触发PHP错误也可导致一个中断。 PHPAPI char *php_session_create_id(PS_CREATE_SID_ARGS) { ... switch (PS(hash_func)) { ... default: php_error_docref(NULL TSRMLS_CC, E_ERROR, "Invalid session hash function"); efree(buf); return NULL; } ... if (PS(hash_bits_per_character) < 4 || PS(hash_bits_per_character) > 6) { PS(hash_bits_per_character) = 4; php_error_docref(NULL TSRMLS_CC, E_WARNING, "The ini setting hash_bits_per_character..."); } ......

0%
暂无可用Exp或PoC
当前有0条受影响产品信息