RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 2061942 - Prevent port-shadow attacks in sample nat config
Summary: Prevent port-shadow attacks in sample nat config
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: nftables
Version: 8.7
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: rc
: 8.8
Assignee: Phil Sutter
QA Contact: Tomas Dolezal
Marc Muehlfeld
URL:
Whiteboard:
Depends On: 2061917 2061940 2211076
Blocks:
TreeView+ depends on / blocked
 
Reported: 2022-03-08 18:30 UTC by Phil Sutter
Modified: 2023-09-26 13:20 UTC (History)
6 users (show)

Fixed In Version: nftables-1.0.4-2.el8
Doc Type: Enhancement
Doc Text:
.Security improvement of the default `nftables` service configuration This enhancement adds the `do_masquerade` chain to the default `nftables` service configuration in the `/etc/sysconfig/nftables/nat.nft` file. This reduces the risk of a port shadow attack, which is described in link:https://access.redhat.com/security/cve/CVE-2021-3773[CVE-2021-3773]. The first rule in the `do_masquerade` chain detects suitable packets and enforces source port randomization to reduce the risk of port shadow attacks.
Clone Of: 2061940
Environment:
Last Closed: 2023-09-08 07:28:40 UTC
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker RHELPLAN-114876 0 None None None 2022-03-08 18:47:28 UTC

Description Phil Sutter 2022-03-08 18:30:12 UTC
+++ This bug was initially created as a clone of Bug #2061940 +++

+++ This bug was initially created as a clone of Bug #2061917 +++

The respective kernel commit is about to be reverted as it might break a corner-case:

https://lore.kernel.org/netfilter-devel/20220308125924.6708-1-fw@strlen.de/

Deploy an equivalent mitigation in user space so at least new setups are fine once the revert reaches distribution kernels:

@@ -18,13 +18,21 @@ table ip nftables_svc {
                elements = { 192.168.122.0/24 }
        }
 
+       # force port randomization for non-locally originated connections using
+       # suspicious port values to prevent port-shadow attacks, i.e.
+       # accidental matching of new inbound connections vs. existing ones
+       chain do_masquerade {
+               meta iif > 0 th sport < 16384 th dport >= 32768 masquerade random
+               masquerade
+       }
+
        # base-chain to manipulate conntrack in postrouting,
        # will see packets for new or related traffic only
        chain POSTROUTING {
                type nat hook postrouting priority srcnat + 20
                policy accept
 
-               iifname @masq_interfaces oifname != @masq_interfaces masquerade
-               ip saddr @masq_ips masquerade
+               iifname @masq_interfaces oifname != @masq_interfaces jump do_masquerade
+               ip saddr @masq_ips jump do_masquerade
        }
 }

--- Additional comment from Phil Sutter on 2022-03-08 18:22:30 UTC ---

For reference, this is about CVE-2021-3773:

https://access.redhat.com/security/cve/CVE-2021-3773
https://www.openwall.com/lists/oss-security/2021/09/08/3
https://breakpointingbad.com/2021/09/08/Port-Shadows-via-Network-Alchemy.html

Comment 1 Phil Sutter 2022-08-31 17:02:52 UTC
Missed RHEL8.7, proposing for RHEL8.8.

Comment 2 Phil Sutter 2023-02-22 08:55:39 UTC
Missed RHEL8.8, proposing for RHEL8.9.

Comment 4 Phil Sutter 2023-08-24 11:53:13 UTC
Required sample config changes inherited from package rebase, marking as TestOnly.

Comment 5 RHEL Program Management 2023-09-08 07:28:40 UTC
After evaluating this issue, there are no plans to address it further or fix it in an upcoming release.  Therefore, it is being closed.  If plans change such that this issue will be fixed in an upcoming release, then the bug can be reopened.

Comment 6 Phil Sutter 2023-09-08 16:56:26 UTC
Fixing closed reason to reflect that the change is there.

Marc, will this be picked up if I fill out the doc text? I don't think testing is really necessary (given that it's just about a default config), but it would be nice to document the improvements.

Comment 7 Marc Muehlfeld 2023-09-11 06:14:27 UTC
Yes. If this ticket needs a release note, please set the Doc Type, enter the relevant information in the Doc Text field, and I'll prepare a RN.

Comment 9 Phil Sutter 2023-09-19 11:37:02 UTC
Hi Marc,

The sentence "This reduces the risk of port shadow attacks." is kind of redundant given the following text. Maybe use it to define the attack and write it as "This reduces the risk of a port shadow attack as per CVE-2021-3773." and maybe link to the Access page: https://access.redhat.com/security/cve/CVE-2021-3773


Note You need to log in before you can comment on or make changes to this bug.