<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://db.gcve.eu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Mon, 09 Nov 2026 17:53:50 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-99191 — calipso: keep BIG TCP payload_len in calipso_skbuff_setattr()</title>
      <link>https://db.gcve.eu/vuln/cve-2026-99191</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;calipso: keep BIG TCP payload_len in calipso_skbuff_setattr()&lt;/p&gt;
&lt;p&gt;calipso_skbuff_setattr() adjusts payload_len by the length of the
option it inserts or resizes:&lt;/p&gt;
&lt;p&gt;payload = ntohs(ip6_hdr-&amp;gt;payload_len);
	ip6_hdr-&amp;gt;payload_len = htons(payload + len_delta);&lt;/p&gt;
&lt;p&gt;GRO can build BIG TCP packets larger than IPV6_MAXPLEN, and stores
payload_len == 0 for them; ipv6_payload_len() then falls back to
skb-&amp;gt;len.  For such a packet forwarded to a destination mapped to
CALIPSO, the code above writes len_delta (or 65536 + len_delta when
shrinking) into payload_len, and ipv6_payload_len() no longer falls
back to skb-&amp;gt;len.  nf_tables, conntrack and sch_cake rely on it.&lt;/p&gt;
&lt;p&gt;The same arithmetic also wraps when a packet grows past IPV6_MAXPLEN,
and a BIG TCP packet that shrinks below IPV6_MAXPLEN should get its
real length back.&lt;/p&gt;
&lt;p&gt;Set payload_len from the skb length with ipv6_set_payload_len(), which
stores 0 above IPV6_MAXPLEN and the real length otherwise, as
ipv6_gro_complete() does.  The network header was just reset to
skb-&amp;gt;data, so skb-&amp;gt;len - sizeof(*ip6_hdr) is the payload length.&lt;/p&gt;
&lt;p&gt;Tested on one kernel (arm64, QEMU) with SELinux permissive, a minimal
mdp-generated policy (network_peer_controls=1), &amp;#34;netlabelctl calipso
add pass doi:16&amp;#34; and a NetLabel mapping of fd00:2::/64 to CALIPSO
DOI 16.  calipso_skbuff_setattr() was called through
netlbl_skbuff_setattr() from a test-only debugfs hook (not part of
this patch) adding a level-only…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;calipso: keep BIG TCP payload_len in calipso_skbuff_setattr()&lt;/p&gt;
&lt;p&gt;calipso_skbuff_setattr() adjusts payload_len by the length of the
option it inserts or resizes:&lt;/p&gt;
&lt;p&gt;payload = ntohs(ip6_hdr-&amp;gt;payload_len);
	ip6_hdr-&amp;gt;payload_len = htons(payload + len_delta);&lt;/p&gt;
&lt;p&gt;GRO can build BIG TCP packets larger than IPV6_MAXPLEN, and stores
payload_len == 0 for them; ipv6_payload_len() then falls back to
skb-&amp;gt;len.  For such a packet forwarded to a destination mapped to
CALIPSO, the code above writes len_delta (or 65536 + len_delta when
shrinking) into payload_len, and ipv6_payload_len() no longer falls
back to skb-&amp;gt;len.  nf_tables, conntrack and sch_cake rely on it.&lt;/p&gt;
&lt;p&gt;The same arithmetic also wraps when a packet grows past IPV6_MAXPLEN,
and a BIG TCP packet that shrinks below IPV6_MAXPLEN should get its
real length back.&lt;/p&gt;
&lt;p&gt;Set payload_len from the skb length with ipv6_set_payload_len(), which
stores 0 above IPV6_MAXPLEN and the real length otherwise, as
ipv6_gro_complete() does.  The network header was just reset to
skb-&amp;gt;data, so skb-&amp;gt;len - sizeof(*ip6_hdr) is the payload length.&lt;/p&gt;
&lt;p&gt;Tested on one kernel (arm64, QEMU) with SELinux permissive, a minimal
mdp-generated policy (network_peer_controls=1), &amp;#34;netlabelctl calipso
add pass doi:16&amp;#34; and a NetLabel mapping of fd00:2::/64 to CALIPSO
DOI 16.  calipso_skbuff_setattr() was called through
netlbl_skbuff_setattr() from a test-only debugfs hook (not part of
this patch) adding a level-only…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-99191</guid>
    </item>
  </channel>
</rss>
