{"api_version":"1","generated_at":"2026-08-17T17:40:10+00:00","cve":"CVE-2026-72247","urls":{"html":"https://cve.report/CVE-2026-72247","api":"https://cve.report/api/cve/CVE-2026-72247.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-72247","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-72247"},"summary":{"title":"netfilter: nf_conncount: fix zone comparison in tuple dedup","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: nf_conncount: fix zone comparison in tuple dedup\n\nThe \"already exists\" dedup logic in __nf_conncount_add() decides\nwhether a connection has already been counted and can be skipped instead\nof incrementing the connlimit count.  It compares the conntrack zone of a\nlist entry with the zone of the connection being added using\nnf_ct_zone_id() and nf_ct_zone_equal(), passing conn->zone.dir or\nzone->dir as the direction argument.\n\nThose helpers take enum ip_conntrack_dir values: IP_CT_DIR_ORIGINAL is 0\nand IP_CT_DIR_REPLY is 1.  However, zone->dir is a u8 bitmask:\nNF_CT_ZONE_DIR_ORIG is 1, NF_CT_ZONE_DIR_REPL is 2 and\nNF_CT_DEFAULT_ZONE_DIR is 3.  Passing that bitmask as the enum direction\nshifts the meaning of every non-zero value.  An ORIG-only zone passes 1\nand is tested as REPLY, while REPL-only and default zones pass 2 or 3 and\ntest bits beyond the valid direction range.  In those cases\nnf_ct_zone_id() can fall back to NF_CT_DEFAULT_ZONE_ID instead of using\nthe real zone id, so different zones can be treated as equal and dedup\ncollapses to tuple equality alone.\n\nnf_conncount stores and compares the original-direction tuple for a\nconnection.  If an skb already has an attached conntrack entry,\nget_ct_or_tuple_from_skb() explicitly copies\nct->tuplehash[IP_CT_DIR_ORIGINAL].tuple, regardless of the packet's\nctinfo.  Therefore the zone comparison in the tuple dedup path must use\nIP_CT_DIR_ORIGINAL as well; the zone direction bitmask describes where a\nzone id applies, not which direction this conncount tuple represents.\n\nFix the two dedup comparisons by passing IP_CT_DIR_ORIGINAL directly.\nDo not special-case NF_CT_DEFAULT_ZONE_DIR and do not compare raw zone\nids: using the existing helpers with IP_CT_DIR_ORIGINAL preserves the\ndirection-aware NF_CT_DEFAULT_ZONE_ID fallback.  A default bidirectional\nzone contains the ORIG bit, so it naturally returns the real zone id;\nreply-only zones continue to fall back for original-direction tuple\ncomparisons.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-08-15 06:21:51","updated_at":"2026-08-17 06:18:26"},"problem_types":[],"metrics":[{"version":"3.1","source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","score":"7.5","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","baseScore":7.5,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"HIGH"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"7.5","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","data":{"baseScore":7.5,"baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"}}],"references":[{"url":"https://git.kernel.org/stable/c/6ff07ac5405bea4d4ead3559fc123f987576424a","name":"https://git.kernel.org/stable/c/6ff07ac5405bea4d4ead3559fc123f987576424a","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/82fc35e0da9a91db9a034f8311f18f77a599ae3f","name":"https://git.kernel.org/stable/c/82fc35e0da9a91db9a034f8311f18f77a599ae3f","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/78b5d6dbc860776161f9e9206b06ff8a01f531ab","name":"https://git.kernel.org/stable/c/78b5d6dbc860776161f9e9206b06ff8a01f531ab","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/3cd9a5792cbea81139c24320986dd0db69e9b5d0","name":"https://git.kernel.org/stable/c/3cd9a5792cbea81139c24320986dd0db69e9b5d0","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/7bdc3c0985ecf17b957811fedcc684acdf698acc","name":"https://git.kernel.org/stable/c/7bdc3c0985ecf17b957811fedcc684acdf698acc","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/f62c41b4910e65da396ec9a8c40c1fe7fe82e449","name":"https://git.kernel.org/stable/c/f62c41b4910e65da396ec9a8c40c1fe7fe82e449","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/35a56e2a46b90e6bd4ca816b80e9cb8d20dfc3ce","name":"https://git.kernel.org/stable/c/35a56e2a46b90e6bd4ca816b80e9cb8d20dfc3ce","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/4f30a89c0ed2418719a1144881c2635b940b543d","name":"https://git.kernel.org/stable/c/4f30a89c0ed2418719a1144881c2635b940b543d","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-72247","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-72247","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 21ba8847f857028dc83a0f341e16ecc616e34740 82fc35e0da9a91db9a034f8311f18f77a599ae3f git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 21ba8847f857028dc83a0f341e16ecc616e34740 78b5d6dbc860776161f9e9206b06ff8a01f531ab git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 21ba8847f857028dc83a0f341e16ecc616e34740 4f30a89c0ed2418719a1144881c2635b940b543d git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 21ba8847f857028dc83a0f341e16ecc616e34740 7bdc3c0985ecf17b957811fedcc684acdf698acc git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 21ba8847f857028dc83a0f341e16ecc616e34740 35a56e2a46b90e6bd4ca816b80e9cb8d20dfc3ce git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 21ba8847f857028dc83a0f341e16ecc616e34740 3cd9a5792cbea81139c24320986dd0db69e9b5d0 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 21ba8847f857028dc83a0f341e16ecc616e34740 6ff07ac5405bea4d4ead3559fc123f987576424a git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 21ba8847f857028dc83a0f341e16ecc616e34740 f62c41b4910e65da396ec9a8c40c1fe7fe82e449 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 525e1dffed8711973f77412729621098a95238e5 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 75af3d78168e654a5cd8bbc4c774f97be836165f git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4.14.92 4.15 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 4.18","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 4.18 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.10.261 5.10.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.15.212 5.15.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.178 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.145 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.97 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.40 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1.5 7.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"72247","cve":"CVE-2026-72247","epss":"0.002100000","percentile":"0.115920000","score_date":"2026-08-16","updated_at":"2026-08-17 00:01:05"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["net/netfilter/nf_conncount.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"82fc35e0da9a91db9a034f8311f18f77a599ae3f","status":"affected","version":"21ba8847f857028dc83a0f341e16ecc616e34740","versionType":"git"},{"lessThan":"78b5d6dbc860776161f9e9206b06ff8a01f531ab","status":"affected","version":"21ba8847f857028dc83a0f341e16ecc616e34740","versionType":"git"},{"lessThan":"4f30a89c0ed2418719a1144881c2635b940b543d","status":"affected","version":"21ba8847f857028dc83a0f341e16ecc616e34740","versionType":"git"},{"lessThan":"7bdc3c0985ecf17b957811fedcc684acdf698acc","status":"affected","version":"21ba8847f857028dc83a0f341e16ecc616e34740","versionType":"git"},{"lessThan":"35a56e2a46b90e6bd4ca816b80e9cb8d20dfc3ce","status":"affected","version":"21ba8847f857028dc83a0f341e16ecc616e34740","versionType":"git"},{"lessThan":"3cd9a5792cbea81139c24320986dd0db69e9b5d0","status":"affected","version":"21ba8847f857028dc83a0f341e16ecc616e34740","versionType":"git"},{"lessThan":"6ff07ac5405bea4d4ead3559fc123f987576424a","status":"affected","version":"21ba8847f857028dc83a0f341e16ecc616e34740","versionType":"git"},{"lessThan":"f62c41b4910e65da396ec9a8c40c1fe7fe82e449","status":"affected","version":"21ba8847f857028dc83a0f341e16ecc616e34740","versionType":"git"},{"status":"affected","version":"525e1dffed8711973f77412729621098a95238e5","versionType":"git"},{"status":"affected","version":"75af3d78168e654a5cd8bbc4c774f97be836165f","versionType":"git"},{"lessThan":"4.15","status":"affected","version":"4.14.92","versionType":"semver"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["net/netfilter/nf_conncount.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"4.18"},{"lessThan":"4.18","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"5.10.*","status":"unaffected","version":"5.10.261","versionType":"semver"},{"lessThanOrEqual":"5.15.*","status":"unaffected","version":"5.15.212","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.178","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.145","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.97","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.40","versionType":"semver"},{"lessThanOrEqual":"7.1.*","status":"unaffected","version":"7.1.5","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.2","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.10.261","versionStartIncluding":"4.18","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.15.212","versionStartIncluding":"4.18","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.178","versionStartIncluding":"4.18","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.145","versionStartIncluding":"4.18","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.97","versionStartIncluding":"4.18","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.40","versionStartIncluding":"4.18","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.1.5","versionStartIncluding":"4.18","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2","versionStartIncluding":"4.18","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.14.92","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.14.92","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: nf_conncount: fix zone comparison in tuple dedup\n\nThe \"already exists\" dedup logic in __nf_conncount_add() decides\nwhether a connection has already been counted and can be skipped instead\nof incrementing the connlimit count.  It compares the conntrack zone of a\nlist entry with the zone of the connection being added using\nnf_ct_zone_id() and nf_ct_zone_equal(), passing conn->zone.dir or\nzone->dir as the direction argument.\n\nThose helpers take enum ip_conntrack_dir values: IP_CT_DIR_ORIGINAL is 0\nand IP_CT_DIR_REPLY is 1.  However, zone->dir is a u8 bitmask:\nNF_CT_ZONE_DIR_ORIG is 1, NF_CT_ZONE_DIR_REPL is 2 and\nNF_CT_DEFAULT_ZONE_DIR is 3.  Passing that bitmask as the enum direction\nshifts the meaning of every non-zero value.  An ORIG-only zone passes 1\nand is tested as REPLY, while REPL-only and default zones pass 2 or 3 and\ntest bits beyond the valid direction range.  In those cases\nnf_ct_zone_id() can fall back to NF_CT_DEFAULT_ZONE_ID instead of using\nthe real zone id, so different zones can be treated as equal and dedup\ncollapses to tuple equality alone.\n\nnf_conncount stores and compares the original-direction tuple for a\nconnection.  If an skb already has an attached conntrack entry,\nget_ct_or_tuple_from_skb() explicitly copies\nct->tuplehash[IP_CT_DIR_ORIGINAL].tuple, regardless of the packet's\nctinfo.  Therefore the zone comparison in the tuple dedup path must use\nIP_CT_DIR_ORIGINAL as well; the zone direction bitmask describes where a\nzone id applies, not which direction this conncount tuple represents.\n\nFix the two dedup comparisons by passing IP_CT_DIR_ORIGINAL directly.\nDo not special-case NF_CT_DEFAULT_ZONE_DIR and do not compare raw zone\nids: using the existing helpers with IP_CT_DIR_ORIGINAL preserves the\ndirection-aware NF_CT_DEFAULT_ZONE_ID fallback.  A default bidirectional\nzone contains the ORIG bit, so it naturally returns the real zone id;\nreply-only zones continue to fall back for original-direction tuple\ncomparisons."}],"metrics":[{"cvssV3_1":{"baseScore":7.5,"baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","version":"3.1"},"scenarios":[{"lang":"en","value":"AV:N - The bug is in __nf_conncount_add() on the netfilter packet path; remote peers drive it by sending traffic that hits xt_connlimit, nft_connlimit, or Open vSwitch conntrack zone-limit rules on internet-facing gateways and cloud hypervisors.\nAC:L - Once connlimit or OVS zone limits are deployed, an attacker can deterministically skew counts by opening many connections across conntrack zones; zone bitmask misuse makes different zones compare equal without races or victim-specific state.\nPR:N - Triggering requires only unauthenticated inbound packets matching existing connlimit rules; the attacker needs no credentials or capabilities on the target, only network reachability to the protected service.\nUI:N - Exploitation needs no action from any user or administrator beyond normal background connlimit deployment; the attacker autonomously sends connection traffic to provoke incorrect deduplication.\nS:U - Impact is confined to incorrect per-zone connection accounting inside the kernel netfilter/conntrack stack; it does not cross VM, container, or IOMMU security boundaries.\nC:N - This is a logic error in zone-aware tuple deduplication with no memory corruption, out-of-bounds access, use-after-free, or other information-disclosure primitive.\nI:N - No attacker-controlled kernel or application data is modified; only internal connection counters are wrong, with no memory writes or code-execution primitive.\nA:H - Undercounting lets attackers bypass per-zone connlimit/OVS limits and exhaust conntrack or service resources; overcounting can falsely hit limits and drop or reject legitimate new connections, causing sustained denial of service."}]}],"providerMetadata":{"dateUpdated":"2026-08-17T05:41:58.867Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/82fc35e0da9a91db9a034f8311f18f77a599ae3f"},{"url":"https://git.kernel.org/stable/c/78b5d6dbc860776161f9e9206b06ff8a01f531ab"},{"url":"https://git.kernel.org/stable/c/4f30a89c0ed2418719a1144881c2635b940b543d"},{"url":"https://git.kernel.org/stable/c/7bdc3c0985ecf17b957811fedcc684acdf698acc"},{"url":"https://git.kernel.org/stable/c/35a56e2a46b90e6bd4ca816b80e9cb8d20dfc3ce"},{"url":"https://git.kernel.org/stable/c/3cd9a5792cbea81139c24320986dd0db69e9b5d0"},{"url":"https://git.kernel.org/stable/c/6ff07ac5405bea4d4ead3559fc123f987576424a"},{"url":"https://git.kernel.org/stable/c/f62c41b4910e65da396ec9a8c40c1fe7fe82e449"}],"title":"netfilter: nf_conncount: fix zone comparison in tuple dedup","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-72247","datePublished":"2026-08-15T05:54:35.201Z","dateReserved":"2026-08-09T03:40:39.914Z","dateUpdated":"2026-08-17T05:41:58.867Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-15 06:21:51","lastModifiedDate":"2026-08-17 06:18:26","problem_types":[],"metrics":{"cvssMetricV31":[{"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","baseScore":7.5,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"NONE","availabilityImpact":"HIGH"},"exploitabilityScore":3.9,"impactScore":3.6}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"72247","Ordinal":"1","Title":"netfilter: nf_conncount: fix zone comparison in tuple dedup","CVE":"CVE-2026-72247","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"72247","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: nf_conncount: fix zone comparison in tuple dedup\n\nThe \"already exists\" dedup logic in __nf_conncount_add() decides\nwhether a connection has already been counted and can be skipped instead\nof incrementing the connlimit count.  It compares the conntrack zone of a\nlist entry with the zone of the connection being added using\nnf_ct_zone_id() and nf_ct_zone_equal(), passing conn->zone.dir or\nzone->dir as the direction argument.\n\nThose helpers take enum ip_conntrack_dir values: IP_CT_DIR_ORIGINAL is 0\nand IP_CT_DIR_REPLY is 1.  However, zone->dir is a u8 bitmask:\nNF_CT_ZONE_DIR_ORIG is 1, NF_CT_ZONE_DIR_REPL is 2 and\nNF_CT_DEFAULT_ZONE_DIR is 3.  Passing that bitmask as the enum direction\nshifts the meaning of every non-zero value.  An ORIG-only zone passes 1\nand is tested as REPLY, while REPL-only and default zones pass 2 or 3 and\ntest bits beyond the valid direction range.  In those cases\nnf_ct_zone_id() can fall back to NF_CT_DEFAULT_ZONE_ID instead of using\nthe real zone id, so different zones can be treated as equal and dedup\ncollapses to tuple equality alone.\n\nnf_conncount stores and compares the original-direction tuple for a\nconnection.  If an skb already has an attached conntrack entry,\nget_ct_or_tuple_from_skb() explicitly copies\nct->tuplehash[IP_CT_DIR_ORIGINAL].tuple, regardless of the packet's\nctinfo.  Therefore the zone comparison in the tuple dedup path must use\nIP_CT_DIR_ORIGINAL as well; the zone direction bitmask describes where a\nzone id applies, not which direction this conncount tuple represents.\n\nFix the two dedup comparisons by passing IP_CT_DIR_ORIGINAL directly.\nDo not special-case NF_CT_DEFAULT_ZONE_DIR and do not compare raw zone\nids: using the existing helpers with IP_CT_DIR_ORIGINAL preserves the\ndirection-aware NF_CT_DEFAULT_ZONE_ID fallback.  A default bidirectional\nzone contains the ORIG bit, so it naturally returns the real zone id;\nreply-only zones continue to fall back for original-direction tuple\ncomparisons.","Type":"Description","Title":"netfilter: nf_conncount: fix zone comparison in tuple dedup"}]}}}