Progress 4GL Compiler是Progress应用程序编译器。 Progress 4GL编译器在编译.p文件时不正确处理用户定义的数据类型,本地攻击者可以利用这个漏洞触发缓冲区溢出,可能以高权限用户执行任意指令。 一般一个合法的数据类型为\"char\", \"integer\", \"date\"等,当编译器尝试解析非法数据类型时会显示如下信息: ** Invalid datatype -- sample types are: char, integer, date, logical (222) ** overflow.p Could not understand line 1. (196) 在显示信息后,用户按空格键会退出。 如果非法数据类型超过364字符,编译器由于不正确使用memmove()函数,会导致段错误。如下面的数据类型: def var andrew as AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA00001111 上面的0000就会覆盖EBP,1111会覆盖EIP。 精心构建非法数据类型,并诱使其他用户使用编译器处理.p文件,就可能以其他用户权限在系统上执行任意指令。
Progress 4GL Compiler是Progress应用程序编译器。 Progress 4GL编译器在编译.p文件时不正确处理用户定义的数据类型,本地攻击者可以利用这个漏洞触发缓冲区溢出,可能以高权限用户执行任意指令。 一般一个合法的数据类型为\"char\", \"integer\", \"date\"等,当编译器尝试解析非法数据类型时会显示如下信息: ** Invalid datatype -- sample types are: char, integer, date, logical (222) ** overflow.p Could not understand line 1. (196) 在显示信息后,用户按空格键会退出。 如果非法数据类型超过364字符,编译器由于不正确使用memmove()函数,会导致段错误。如下面的数据类型: def var andrew as AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA00001111 上面的0000就会覆盖EBP,1111会覆盖EIP。 精心构建非法数据类型,并诱使其他用户使用编译器处理.p文件,就可能以其他用户权限在系统上执行任意指令。