Missing User-Name attribute causing a segfault in attr_rewrite
Dennis Skinner
dskinner at bluefrog.com
Fri Apr 28 20:03:03 CEST 2006
Hello,
I finally got around to upgrading our RADIUS servers to FR 1.1.1.
Everything is working well except we seem to have a customer somewhere
who is able to attempt to auth without sending a User-Name attribute and
a blank User-Password. I'm not sure at this point if it is an attempted
exploit or just a badly coded client.
Here is an attempt:
--- Walking the entire request list ---
Cleaning up request 1 ID 88 with timestamp 44512aa3
Nothing to do. Sleeping until we see a request.
rad_recv: Access-Request packet from host xxx.xxx.xxx.xxx:21674, id=218,
length=203
Framed-Protocol = PPP
User-Password = ""
Calling-Station-Id = "##########"
Called-Station-Id = "##########"
NAS-Port-Type = Async
Cisco-NAS-Port = "Async172"
NAS-Port = 172
Connect-Info = "28800/26400 V34+/V44/LAPM (53333/26400)"
Cisco-AVPair = "v92-info=V.92 QC MOH/QC Full Train Success/0/0"
Service-Type = Framed-User
NAS-IP-Address = xxx.xxx.xxx.xxx
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 2
rlm_realm: Proxy reply, or no User-Name. Ignoring.
modcall[authorize]: module "suffix" returns noop for request 2
rlm_attr_rewrite: Could not find value pair for attribute Realm
modcall[authorize]: module "fix_realm" returns noop for request 2
The very next line is the segfault. Here is my "fix_realm" module:
attr_rewrite fix_realm {
attribute = Realm
searchin = packet
searchfor = "blue.*$$"
replacewith = "bluefrog.com"
ignore_case = yes
new_attribute = no
max_matches = 1
append = no
}
(we used to use both bluefrognet.net and bluefrog.biz, so this attempts
to normalize everyone since the username in the db is always
user at bluefrog.com)
I think the fact that there is no realm may be causing the segfault.
Unfortunately, I have no idea how to recreate the situation myself and I
have yet to try to track down the customer. I didn't see this problem
listed on bugs.freeradius.org and don't recall seeing mention of it on
the list.
The other thing I changed in the authorize section of the config file is
that I moved the suffix (and fix_realm) higher in the list (as you can
probably tell from the debug output). Here is my authorize section:
authorize {
suffix
fix_realm
preprocess
chap
mschap
eap
files
redundant {
# slave first
sql2
sql1
handled
}
}
My old config wasn't using huntgroups, so I didn't need to fix_realm
before preprocessing. I need to do that now, hence suffix and fix_realm
are at the top.
I will continue to dig at this problem from my end, but I thought maybe
Alan or someone could modify radclient to send a packet like above and
see if they can recreate the bug (or better yet, have a look at the code
and go, "oh yeah, that is why that happened"). My C coding skills have
all but rusted solid at this point.
Let me know if you need any more information.
Thanks!
--
Dennis Skinner
Systems Administrator
BlueFrog Internet
http://www.bluefrog.com
More information about the Freeradius-Users
mailing list