squid does not accept WCCP of Cisco router since 3.5.27-1ubuntu1.12
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Squid |
Unknown
|
Unknown
|
|||
squid (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned | ||
Bionic |
Invalid
|
Undecided
|
Unassigned | ||
Impish |
Won't Fix
|
Undecided
|
Unassigned | ||
Jammy |
Confirmed
|
Undecided
|
Unassigned | ||
squid3 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Bionic |
Confirmed
|
Undecided
|
Unassigned | ||
Impish |
Invalid
|
Undecided
|
Unassigned | ||
Jammy |
Invalid
|
Undecided
|
Unassigned |
Bug Description
WCCP peering between squid and CIsco IOS 15.8(3)M2 stopped as of
Start-Date: 2021-10-07 06:27:37
Commandline: /usr/bin/
Upgrade: squid-common:amd64 (3.5.27-
1) The release of Ubuntu you are using: 18.04
2) The version of the package you are using: 3.5.27-1ubuntu1.12
3) What you expected to happen:
Unattended upgrade will not break working setup. Valid wccp packets from the router continue to get accepted and processed by squid.
4) What happened instead
The squid cache.log is logging a loop of ERROR messages:
ERROR: Ignoring WCCPv2 message: ntohl(wccp2_
ERROR: Ignoring WCCPv2 message: !security_info
ERROR: Ignoring WCCPv2 message: !security_info
ERROR: Ignoring WCCPv2 message: !security_info
Router logged Oct 7 04:28:45.918: %WCCP-1-
Since then debug wccp logs periodically WCCP-EVNT:IPv4:S0: HIA from x.x.x.x with bad rcv_id 0 (expected yy)
wccp service detail shows: WCCP Client information: State: NOT Usable (initializing)
CVE References
Changed in squid (Ubuntu): | |
status: | New → Invalid |
Changed in squid (Ubuntu Bionic): | |
status: | New → Invalid |
Changed in squid3 (Ubuntu): | |
status: | New → Invalid |
Changed in squid3 (Ubuntu Bionic): | |
status: | Incomplete → Confirmed |
Changed in squid3 (Ubuntu): | |
status: | Invalid → Confirmed |
Thank you for taking the time to file a bug report.
I noticed that the latest update of the squid3 package on Bionic was a security fix that touched exactly the WCCP code:
squid3 (3.5.27- 1ubuntu1. 12) bionic-security; urgency=medium
* SECURITY UPDATE: information disclosure via OOB read in WCCP protocol patches/ CVE-2021- 28116.patch: validate packets better in
- debian/
src/wccp2.cc.
- CVE-2021-28116
-- Marc Deslauriers <email address hidden> Mon, 04 Oct 2021 08:32:25 -0400
I'm trying to understand here how to reproduce this bug. I don't have access to Cisco hardware, and I'm not an expert on WCCP (far from it).
Given the description of the changelog entry above, I would double check to see if your Cisco hardware is properly configured and running the latest version of its firmware/software.
Based on the logs you posted, the following is one of the assertions that is failing on squid:
Must( ntohl(wccp2_ i_see_you. type) == WCCP2_I_SEE_YOU);
This means that the packet received by squid don't have the expected type, apparently. This check wasn't here before the patch.
This is another assertion that is failing:
case WCCP2_SECURITY_ INFO:
Must( !security_ info); // <----- THIS ASSERTION HERE
SetField( security_ info, itemHeader, itemHeader, itemSize,
"security definition truncated");
break;
This case statement has been rewritten, and the assertion is now in place there.
In fact, this whole function has been overhauled and is quite different than what it was before this latest squid3 version. I am not sure if what you're seeing is in fact a bug in squid, or is actually squid being more careful regarding what it accepts as WCCP packets.
Either way, I would need a way to reproduce this error locally in order to further investigate it. Could you please provide some help in this regard? It would also be great if could try squid from newer Ubuntu releases to see if you can reproduce this problem.
I am setting this as Incomplete for now.