| タイトル | Stig (stigtsp)のNet::CIDR::Liteにおけるレングスパラメーターの不整合による処理に関する脆弱性 |
|---|---|
| 概要 | 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マップドアドレスを使用する場合に発生します。 |
| 想定される影響 | 当該ソフトウェアが扱う情報の一部が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う情報の一部が書き換えられる可能性があります。 さらに、当該ソフトウェアは停止しません。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 |
| 対策 | 正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。 |
| 公表日 | 2026年4月10日0:00 |
| 登録日 | 2026年4月23日10:16 |
| 最終更新日 | 2026年4月23日10:16 |
| CVSS3.0 : 警告 | |
| スコア | 6.5 |
|---|---|
| ベクター | 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 | 変更内容 | 変更日 |
|---|---|---|
| 1 | [2026年04月23日] 掲載 |
2026年4月23日10:16 |
| 概要 | 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. |
|---|---|
| 公表日 | 2026年4月11日7:16 |
| 登録日 | 2026年4月15日11:37 |
| 最終更新日 | 2026年4月22日3:49 |
| 構成1 | 以上 | 以下 | より上 | 未満 | |
| cpe:2.3:a:stigtsp:net\:\:cidr\:\:lite:*:*:*:*:*:perl:*:* | 0.23 | ||||
| 概要 | 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. |
|---|---|
| 公表日 | 2026年4月11日7:16 |
| 登録日 | 2026年4月15日11:37 |
| 最終更新日 | 2026年4月22日3:41 |
| 構成1 | 以上 | 以下 | より上 | 未満 | |
| cpe:2.3:a:stigtsp:net\:\:cidr\:\:lite:*:*:*:*:*:perl:*:* | 0.23 | ||||