FreeBSD 'rlm_sql.c' Contains SQL Injection and Buffer Overflow Bugs
|
|
SecurityTracker Alert ID: 1013909
|
|
SecurityTracker URL: http://securitytracker.com/id?1013909
|
|
CVE Reference: CAN-2005-1454
, CAN-2005-1455
(Links to External Site)
|
Updated: Jun 14 2005
|
Original Entry Date: May 6 2005
|
Impact: Disclosure of system information, Disclosure of user information, Execution of arbitrary code via network, User access via network
|
Fix Available: Yes
Vendor Confirmed: Yes
|
Version(s): 1.0.2
|
Description: Two vulnerabilities were reported in FreeRADIUS. A remote authenticated user may be able to inject SQL commands. A remote user may also be able to execute arbitrary code on the target system.
The software makes a radius_xlat() function call to compose an SQL query based on user-supplied data but does not properly validate
the data. A remote authenticated user may be able to execute SQL commands on the underlying database.
A buffer overflow resides
in the sql_escape_func() function.
The flaws reside in '/src/modules/rlm_sql/rlm_sql.c'.
Primoz Bratanic reported this vulnerability.
|
Impact: A remote user may be able to execute SQL commands on the underlying database.
A remote user may be able to execute arbitrary code on the target system [however, code execution was not confirmed.]
|
Solution: The vendor has released a fixed version (1.0.3), available at:
ftp://ftp.freeradius.org/pub/radius/freeradius-1.0.3.tar.gz
The vendor's advisory is available at:
http://www.freeradius.org/security.html
|
Vendor URL: www.freeradius.org/ (Links to External Site)
|
Cause: Boundary error, Input validation error
|
Underlying OS: Linux (Any), UNIX (Any)
|
|
Message History:
This archive entry has one or more follow-up message(s) listed below.
|
Source Message Contents
|
Date: Fri, 6 May 2005 01:47:28 -0400
Subject: [none]
|
> In /src/modules/rlm_sql/rlm_sql.c there are few possible problems (IMHO).
> Please disregard the message if you disagree.
>
> In sql_escape_func (line 406) there is a loop with special break condition
> in line 414 ("if (outlen <= 1)"), which is fine unless we have three (3) or
> less characters available and input character needs escaping (with =XX). In
> this case this loop causes minor buffer overflow (few characters). As output
> buffer is huge, this should not be easily exploitable problem.
>
> The other three problems are in lines 520, 1152, 1196 where radius_xlat is
> called for generation of sql query for execution. It's called without escape
> function (NULL), which is afterwards replaced with simple copy. As this
> queries may contain reference to user supplied data (username ...), this may
> result in SQL injection. This is also hard to exploit as user has to be
> authenticated already before any of these sql statements can get executed.
|
|