CVE-2021-47875GeoGebra CAS Calculator 6.0.631.0版本存在一个严重的拒绝服务漏洞,该漏洞允许未经认证的远程攻击者通过构造特制的输入数据使应用程序崩溃。GeoGebra是一款广受欢迎的数学软件,其CAS(计算机代数系统)计算器功能被全球数百万学生、教师和工程师使用。该漏洞源于应用程序在处理用户输入时缺乏适当的边界检查,当接收到超长字符串(特别是包含8000个重复字符的输入)时,会触发缓冲区溢出条件,导致应用程序立即崩溃。由于该软件常用于教育环境和专业计算场景,此漏洞可能对教学活动、工程计算和科研工作造成严重影响。攻击者无需任何特殊权限或用户交互即可触发此漏洞,只需将恶意载荷粘贴到计算器的输入字段中即可实现攻击。这使得该漏洞具有极高的利用便捷性和广泛的攻击面。
该漏洞的根本原因在于GeoGebra CAS Calculator对用户输入数据的验证不足。当用户在计算器的输入字段中输入超长字符串时,应用程序未能正确检查输入数据的长度,导致缓冲区溢出。具体而言,当输入包含约8000个重复字符的字符串时,应用程序会尝试将这个超长字符串写入固定大小的缓冲区,由于目标缓冲区容量不足以容纳全部数据,多余的数据会溢出到相邻的内存区域,覆盖关键的程序控制流数据或函数返回地址。这种内存损坏会导致应用程序进入未定义状态,最终引发崩溃。攻击者可以利用此漏洞构造简单的文本输入,通过任何支持文本粘贴的方式(如剪贴板、脚本注入或恶意网页)将8000个重复字符注入到计算器的输入字段中。成功利用后,应用程序会立即终止,用户可能会丢失未保存的工作数据。对于依赖GeoGebra进行实时计算的用户而言,这种突然的应用程序崩溃可能导致工作中断和数据丢失。