[Pkg-freeradius-maintainers] Bug#1076022: Additional patch for bullseye's FreeRADIUS (was: Backport some security settings from upstream 3.2.5 release to mitigate BlastRADIUS)

Alan DeKok aland at freeradius.org
Wed Aug 21 18:58:25 BST 2024


  The patch looks good to me, thanks.

> On Aug 20, 2024, at 9:42 PM, Santiago Ruano Rincón <santiagorr at riseup.net> wrote:
> 
> Hi!
> 
> El 20/08/24 a las 15:14, Santiago Ruano Rincón escribió:
>> Hello Herwin,
>> 
>> Thanks a lot for testing the proposed packages!
>> 
>> El 15/08/24 a las 17:04, Herwin Weststrate escribió:
>>> On Wed, Aug 07, 2024 at 07:08:32AM -0300, Santiago Ruano Rincón wrote:
>>>> Regarding the version in bullseye: upstream has kindly shared with me a
>>>> set of patches. I've pushed them to:
>>>> https://salsa.debian.org/debian/freeradius/-/tree/wip/debian/blastradius/bullseye.
>>> 
>>> The setting `limit_proxy_state` appears to be ignored in the Bullseye
>>> version. The bug can be triggered with the following steps:
>>> * Install the freeradius packages with the instructions listed somewhere
>>>  else in this thread.
>>> * Enable the user `bob` in `/etc/freeradius/3.0/users`
>>> * Add an external client to `/etc/freeradius/3.0/clients`. We need an
>>>  external client because the `radclient` tool has been updated to
>>>  include the `Message-Authenticator` attribute, and we need a request
>>>  that does not include that.
>>> * (Re)Start freeradius
>>> * At the external client, install the `freeradius-utils` package from
>>>  the current Debian repository (doesn't matter if its Bullseye or
>>>  Bookworm, just don't use these new versions from salsa)
>>> 
>>> Now we can run the first request at the external client:
>>> 
>>>    echo 'User-Name = "bob", User-Password = "hello"' | radclient -x 10.0.0.1 auth testing123
>>> 
>>> This request should result in the following messages in
>>> `/var/log/freeradius/radius.log`:
>>> 
>>>    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>>    BlastRADIUS check: Received packet without Message-Authenticator.
>>>    Setting "require_message_authenticator = false" for client testclient
>>>    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>>    UPGRADE THE CLIENT AS YOUR NETWORK IS VULNERABLE TO THE BLASTRADIUS ATTACK.
>>>    Once the client is upgraded, set "require_message_authenticator = true" for this client.
>>>    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>>    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>>    BlastRADIUS check: Received packet without Proxy-State.
>>>    Setting "limit_proxy_state = true" for client testclient
>>>    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>>    The packet does not contain Message-Authenticator, which is a security issue.
>>>    UPGRADE THE CLIENT AS YOUR NETWORK MAY BE VULNERABLE TO THE BLASTRADIUS ATTACK.
>>>    Once the client is upgraded, set "require_message_authenticator = true" for this client.
>>>    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>> 
>>> The setting `limit_proxy_state = true` is supposed to forbid requests
>>> from containing a `Proxy-State` attribute. Now if we add this to the
>>> request:
>>> 
>>>    echo 'User-Name = "bob", User-Password = "hello", Proxy-State = 0x313233' | radclient -x 10.0.0.1 auth testing123
>>> 
>>> This packet gets accepted and you'll see an `Access-Accept` for the
>>> client. The same thing happens when you explicitly configure
>>> `limit_proxy_state = true` for the client, or set this as the global
>>> option.
>>> This settings works as expected in the Bookworm version of the packages.
>>> I've tried it with it with v3.0.x from the freeradius upstream
>>> repository as well, and that too works as expected.
>>> I guess the patches miss an essential part of the code to make it work.
>> 
>> Just FTR and completeness, I have been only able to reproduce the issue
>> when setting `limit_proxy_state = true` for the external client.
>> In this case, I see this in the radius.log produced by the proposed
>> package for bullseye:
>> 
>>    Error: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>    Error: BlastRADIUS check: Received packet without Message-Authenticator.
>>    Error: Setting "require_message_authenticator = false" for client example.org
>>    Error: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>    Error: UPGRADE THE CLIENT AS YOUR NETWORK IS VULNERABLE TO THE BLASTRADIUS ATTACK.
>>    Error: Once the client is upgraded, set "require_message_authenticator = true" for this client.
>>    Error: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>> 
>> Otherwise, without setting limit_proxy_state, the packet gets accepted,
>> and I see a similar error with any of the packages proposed for
>> bullseye, bookworm, or the packages produced by upstream:
>> 
>>    Error: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>    Error: BlastRADIUS check: Received packet without Message-Authenticator.
>>    Error: Setting "require_message_authenticator = false" for client example.org
>>    Error: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>    Error: UPGRADE THE CLIENT AS YOUR NETWORK IS VULNERABLE TO THE BLASTRADIUS ATTACK.
>>    Error: Once the client is upgraded, set "require_message_authenticator = true" for this client.
>>    Error: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>    Error: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>    Error: BlastRADIUS check: Received packet with Proxy-State, but without Message-Authenticator.
>>    Error: This is either a BlastRADIUS attack, OR
>>    Error: the client is a proxy RADIUS server which has not been upgraded.
>>    Error: Setting "limit_proxy_state = false" for client example.org
>>    Error: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>    Error: UPGRADE THE CLIENT AS YOUR NETWORK IS VULNERABLE TO THE BLASTRADIUS ATTACK.
>>    Error: Once the client is upgraded, set "require_message_authenticator = true" for this client.
>>    Error: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>> 
>> I am testing the external client with freeradius-utils 3.0.21+dfsg-2.2+deb11u1.
> 
> I have pushed an additional patch to the WIP bullseye branch:
> https://salsa.debian.org/debian/freeradius/-/commit/e320f4945e88a129d602aad586ac9a927cb344ea
> Alan, if you ever have some free time, would you be so kind to tell me
> if that additional patch (for 3.0.21) makes sense?
> 
> The built packages can be downloaded from:
> https://salsa.debian.org/debian/freeradius/-/jobs/6156291/artifacts/download,
> or via the repo as described at:
> https://debian.pages.debian.net/-/freeradius/-/jobs/6156294/artifacts/aptly/index.html
> Herwin, if possible, could you please give it a try?
> I think the behaviour matches the upstream's bookworm, but I would be
> great to have an extra pair of eyes :-)
> 
> Cheers,
> 
> -- Santiago

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: Message signed with OpenPGP
URL: <http://alioth-lists.debian.net/pipermail/pkg-freeradius-maintainers/attachments/20240821/469197e0/attachment.sig>


More information about the Pkg-freeradius-maintainers mailing list