Amazon Linux 2023:perl-Net-IDN-Encode(ALAS2023-2026-3190)

critical Nessus プラグイン ID 365261

概要

リモートの Amazon Linux 2023 ホストに、セキュリティ更新プログラムがありません。

説明

したがって、ALAS2023-2026-3190 のアドバイザリに記載されている複数の脆弱性の影響を受けます。

Perlの 2.590 より前のNet::IDN::P unycodeバージョンでは、encode_punycodeのデルタアキュムレータの整数オーバーフローによる領域外読み取りが起こる可能性があります。

XS バックエンドは、punycode デルタと、そこから派生した数字インデックスを符号付き整数型に保持します。累積 'delta += (m-n) * (h+1)' にはオーバーフローチェックがないため、十分な大きさのコードポイントがデルタをラップし、桁インデックスは 36 エントリの桁テーブルの範囲を外れます。最終テーブルアクセスの前の境界は、36を超えるインデックスに対してのみテストされるため、負のインデックスが渡され、36自体も同様です。Perl文字列はUnicodeの範囲を超えたコードポイントを保持し、そのようなコードポイントの1つがそれ自体で累積をオーバーフローします。有効な入力の場合、たとえば 1927 ASCII 文字の後に U+10FFFF が続く場合もラップされます。変換関数は、ラベルの長さをチェックする前にラベルをエンコードするため、長いラベルは文書化された API を介してエンコーダーに到達します。

影響を受けるのは XS バックエンドのみです。

攻撃者が指定した文字列をエンコードすると、数値テーブルの外側からバイトがエンコードされた結果にコピーされるか、プロセスをクラッシュします。(CVE-2026-74765)

Perl用に2.590する前の2.301のNet::IDN::P unycodeバージョンでは、decode_punycodeの出力バッファを再割り当てするデコードされたコードポイントを使用した、ヒープのメモリ解放後使用(Use After Free)が可能になります。

XS バックエンドは、デコードされた各コードポイントを、返されるスカラーの文字列バッファに挿入します。
decode_punycode は最初に挿入ポインターを計算し、コードポイントが収まらない場合にのみバッファを増大します。growth はバッファを再割り当てし、挿入ポインターを除くすべてのポインターを更新するため、その後の移動とコードポイントの書き込みは解放されたポインターを通過します。バッファはラベルの長さの 2 倍で始まり、U+FFFF より上のコードポイントは出力で 4 バイトを占めるため、そのようなコードポイントのラベルはそれを超過し、再割り当てを強制します。

CVE-2016-15059 の修正であるバージョン 2.301 では、この不具合が導入されました。影響を受けるのは XS バックエンドのみです。

攻撃者が指定したpunycodeラベルをデコードすると、解放されたヒープメモリが読み書きされます。(CVE-2026-74766)

2.590 用の 2.302 からの Net::IDN::P unycode のバージョンによりPerl decode_punycode内の拒否されるすべてのラベルで出力バッファが漏洩します。

XS バックエンドは、入力を検証する前に返されるスカラーを割り当て、バッファのサイズを入力の長さの 2 倍にします。スカラーは成功パスでのみリリースされるため、ラベルを拒否する 3 つの鳴き声はそれぞれ、スカラーとそのバッファを割り当てたままにします。63 バイトの DNS 制限は ASCII に変換するときにのみチェックされるため、Unicode に対する方向のラベルの長さを制限するものは何もありません。

影響を受けるのは XS バックエンドのみです。

無効なラベルを提供する送信者は、拒否された呼び出しごとにラベルの長さの 2 倍ずつプロセスを成長させ、正常な呼び出しは必要ありません。(CVE-2026-87078)

Perl用に 2.590 より前の Net::IDN::P unycode バージョンでは、decode_punycode で長いラベルをデコードする際に二次挿入コストによる CPU 消耗が発生する可能性があります。

XS バックエンドは、デコードされた各コードポイントを UTF-8 バッファに挿入し、最初からそのバッファを一度に 1 文字ずつスキャンすることで挿入ポイントを見つけます。スキャンは、これまでに構築された出力に対してコードポイントごとに 1 回実行されるため、ラベルの長さのコストは 2 乗になります。pure-Perl バックエンドは substr が直接インデックスできるように入力をバイトにダウングレードしますが、ダウングレード前に作業コピーを取得するため、入力に UTF-8 フラグがある場合、コピー上のすべての substr は最初から同じ二次コストでスキャンします。

Unicode 変換方向のラベルの長さを制限するものはありません。63バイトのDNS制限はASCIIに変換するときにのみチェックされるため、domain_to_unicodeとuts46_to_unicodeは攻撃者が指定した任意の長さのラベルをデコーダーに渡します。(CVE-2026-87079)

Perl用に 2.590 される前の Net::IDN::P unycode::P P は、切り捨てられたラベルを、decode_punycode でエンコードされたことのない文字を含む名前にデコードします。

pure-Perlデコーダーは、4引数のsubstrで一度に1桁ずつ読み取り、入力の終わりを検出するために定義された結果をテストします。substr を使い果たした文字列で undef ではなく空の文字列を返すため、デコードは最後まで続きます。空の文字列は範囲より下の桁数に変換され、アキュムレータは減少し、デコーダーはそこから 1 つの追加のコードポイントとその位置を導き出します。結果は決定論的です。XS バックエンドは同じラベルを拒否します。

Net::IDN::P unycode は、XS がビルドしない場所ならどこでもこのバックエンドを使用します。

2 つのバックエンドは、そのようなラベルの意味について意見が一致しないため、送信者は、1 つのインストールが名前に解決し、別のインストールが拒否するラベルを選択できます。(CVE-2026-87080)

Perlの2.590より前のNet::IDN::UTS46バージョンでは、to_asciiの長さチェックの前に、過度に長いラベルの二次punycodeエンコーディングによりCPU消耗が発生する可能性があります。

to_ascii punycodeは各ラベルをエンコードしてから、63バイトのDNS制限を適用します。両方のバックエンドのencode_punycodeは、RFC 3492 のサンプル実装に従います。その外側のループは、個別の非 ASCII コードポイントごとに 1 回実行され、各ラウンドで入力全体をスキャンするため、異なる非 ASCII 文字のラベルは、制限が拒否される前にその長さの 2 乗のコストを支払います。ディストリビューションのすべての ASCII 変換は、domain_to_ascii と email_to_ascii を含めて、to_asciiを経ます。(CVE-2026-87081)

Perl の 2.590 より前の Net::IDN::P unycode のバージョンにより、encode_punycode の検証されない無効な形式の UTF-8 を介して、ハングアップ、クラッシュ、または間違ったラベルが返されます。

いずれのバックエンドも、入力が有効な形式の UTF-8 であるかどうかをチェックしません。そのため、:utf8 PerlIO レイヤーが無効な形式の入力から生成するため、無効な形式のバイトに UTF-8 フラグが設定された文字列は、チェックせずにエンコーダーに到達します。perl 5.32 以降では、XS バックエンドが長さが「(STRLEN)-1」の無効な形式のシーケンスをレポートします。このため、スキャンが順にではなく 1 バイト戻って終了しません。以前の Perl では、XS は別の名前に対して有効なラベルを返します。pure-Perl バックエンドは、フラグ付き文字列上で正規表現を実行します。
バイトによっては、perl 5.28 以降での SIGBUS によって中止したり、パニックで停止したり、または間違ったラベルを返すことがあります。

文書化された変換関数は、最初にラベルを Unicode プロパティと照合し、そして一致する関数はそのような文字列で消滅するため、encode_punycode への直接の呼び出しのみが不具合に到達します。デコーダーは影響を受けません。

攻撃者が指定したバイトをエンコーディングする直接呼び出し元が、ハングアップ、クラッシュ、または入力が保持したことのない名前のラベルを取得します。(CVE-2026-87082)

Tenable は、前述の記述ブロックをテスト済み製品のセキュリティアドバイザリから直接抽出しています。

Nessus はこれらの問題をテストしておらず、代わりにアプリケーションが自己報告するバージョン番号にのみ依存していることに注意してください。

ソリューション

「dnf update perl-Net-IDN-Encode --releasever 2023.12.20261012」または「dnf update --advisory ALAS2023-2026-3190 --releasever 2023.12.20261012」を実行してシステムを更新してください。

参考資料

https://alas.aws.amazon.com//AL2023/ALAS2023-2026-3190.html

https://alas.aws.amazon.com/faqs.html

https://explore.alas.aws.amazon.com/CVE-2026-74765.html

https://explore.alas.aws.amazon.com/CVE-2026-74766.html

https://explore.alas.aws.amazon.com/CVE-2026-87078.html

https://explore.alas.aws.amazon.com/CVE-2026-87079.html

https://explore.alas.aws.amazon.com/CVE-2026-87080.html

https://explore.alas.aws.amazon.com/CVE-2026-87081.html

https://explore.alas.aws.amazon.com/CVE-2026-87082.html

プラグインの詳細

深刻度: Critical

ID: 365261

ファイル名: al2023_ALAS2023-2026-3190.nasl

バージョン: 1.1

タイプ: Local

エージェント: unix

公開日: 2026/10/12

更新日: 2026/10/12

サポートされているセンサー: Frictionless Assessment AWS, Frictionless Assessment Agent, Nessus Agent, Agentless Assessment, Continuous Assessment, Tenable Cloud Security, Tenable Self-Hosted Container Security, Nessus

リスク情報

VPR

リスクファクター: Medium

スコア: 4.9

パーセンタイル: 58.47

CVSS v2

リスクファクター: High

基本値: 9.4

現状値: 7

ベクトル: CVSS2#AV:N/AC:L/Au:N/C:C/I:N/A:C

CVSS スコアのソース: CVE-2026-87080

CVSS v3

リスクファクター: Critical

基本値: 9.1

現状値: 7.9

ベクトル: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H

現状ベクトル: CVSS:3.0/E:U/RL:O/RC:C

脆弱性情報

CPE: cpe:/o:amazon:linux:2023, p-cpe:/a:amazon:linux:perl-net-idn-encode-debuginfo, p-cpe:/a:amazon:linux:perl-net-idn-encode-debugsource, p-cpe:/a:amazon:linux:perl-net-idn-encode

必要な KB アイテム: Host/local_checks_enabled, Host/AmazonLinux/release, Host/AmazonLinux/rpm-list

エクスプロイトの容易さ: No known exploits are available

パッチ公開日: 2026/10/12

脆弱性公開日: 2026/9/22

参照情報

CVE: CVE-2026-74765, CVE-2026-74766, CVE-2026-87078, CVE-2026-87079, CVE-2026-87080, CVE-2026-87081, CVE-2026-87082