| Title | Stig (stigtsp)のNet::CIDR::Liteにおけるレングスパラメーターの不整合による処理に関する脆弱性 |
|---|---|
| Summary | Perl用のNet::CIDR::Liteバージョン0.23未満では、IPv4マップドIPv6アドレスの処理に誤りがあり、これによりIP ACLをバイパスできる場合があります。_pack_ipv6()は、::ffff:192.168.1.1のようなIPv4マップドアドレスのパック表現を作成する際に、_pack_ipv4()からのセントネルバイトを含んでいます。そのため、17バイトではなく18バイトの値が生成され、アドレスのIPv4部分がずれてしまいます。この長さの誤りは、マスク操作やPerlの文字列比較を使用する関数で誤った結果を引き起こし、find()が誤ってアドレスにマッチしたり、マッチしなかったりする可能性があります。例えば、my $cidr = Net::CIDR::Lite-new("::ffff:192.168.1.0/120"); $cidr-find("::ffff:192.168.2.0"); は誤ってtrueを返します。この問題は、有効なRFC 4291 IPv4マップドアドレスを使用する場合に発生します。 |
| Possible impacts | 当該ソフトウェアが扱う情報の一部が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う情報の一部が書き換えられる可能性があります。 さらに、当該ソフトウェアは停止しません。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 |
| Solution | 正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。 |
| Publication Date | April 10, 2026, midnight |
| Registration Date | April 23, 2026, 10:16 a.m. |
| Last Update | April 23, 2026, 10:16 a.m. |
| CVSS3.0 : 警告 | |
| Score | 6.5 |
|---|---|
| Vector | CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N |
| Stig (stigtsp) |
| Net::CIDR::Lite 0.23 未満 |
| No | Changed Details | Date of change |
|---|---|---|
| 1 | [2026年04月23日] 掲載 |
April 23, 2026, 10:16 a.m. |
| Summary | Net::CIDR::Lite versions before 0.23 for Perl does not validate IPv6 group count, which may allow IP ACL bypass. _pack_ipv6() does not check that uncompressed IPv6 addresses (without ::) have exactly 8 hex groups. Inputs like "abcd", "1:2:3", or "1:2:3:4:5:6:7" are accepted and produce packed values of wrong length (3, 7, or 15 bytes instead of 17). The packed values are used internally for mask and comparison operations. find() and bin_find() use Perl string comparison (lt/gt) on these values, and comparing strings of different lengths gives wrong results. This can cause find() to incorrectly report an address as inside or outside a range. Example: my $cidr = Net::CIDR::Lite->new("::/8"); This is the same class of input validation issue as CVE-2021-47154 (IPv4 leading zeros) previously fixed in this module. See also CVE-2026-40199, a related issue in the same function affecting IPv4 mapped IPv6 addresses. |
|---|---|
| Publication Date | April 11, 2026, 7:16 a.m. |
| Registration Date | April 15, 2026, 11:37 a.m. |
| Last Update | April 22, 2026, 3:49 a.m. |
| Configuration1 | or higher | or less | more than | less than | |
| cpe:2.3:a:stigtsp:net\:\:cidr\:\:lite:*:*:*:*:*:perl:*:* | 0.23 | ||||
| Summary | Net::CIDR::Lite versions before 0.23 for Perl mishandles IPv4 mapped IPv6 addresses, which may allow IP ACL bypass. _pack_ipv6() includes the sentinel byte from _pack_ipv4() when building the packed representation of IPv4 mapped addresses like ::ffff:192.168.1.1. This produces an 18 byte value instead of 17 bytes, misaligning the IPv4 part of the address. The wrong length causes incorrect results in mask operations (bitwise AND truncates to the shorter operand) and in find() / bin_find() which use Perl string comparison (lt/gt). This can cause find() to incorrectly match or miss addresses. Example: my $cidr = Net::CIDR::Lite->new("::ffff:192.168.1.0/120"); This is triggered by valid RFC 4291 IPv4 mapped addresses (::ffff:x.x.x.x). See also CVE-2026-40198, a related issue in the same function affecting malformed IPv6 addresses. |
|---|---|
| Publication Date | April 11, 2026, 7:16 a.m. |
| Registration Date | April 15, 2026, 11:37 a.m. |
| Last Update | April 22, 2026, 3:41 a.m. |
| Configuration1 | or higher | or less | more than | less than | |
| cpe:2.3:a:stigtsp:net\:\:cidr\:\:lite:*:*:*:*:*:perl:*:* | 0.23 | ||||