CVE-2026-54890 in OTP
要約
〜によって VulDB • 2026年07月27日
Erlang OTP erlang/otp (erts モジュール) および Erlang OTP erts (erts モジュール) に、整数アンダーフロー(ラップまたはオーバーラン)脆弱性があります。これにより強制整数オーバーフローや過剰なメモリ割り当てが可能になります。この脆弱性はプログラムファイル `erts/emulator/beam/external.c` と `emulator/beam/external.c` に関連しています。
External Term Format (ETF) デコーダ内の BIT_BINARY_EXT タグ(77)ハンドラは、長さフィールドと末尾ビット数フィールドの両方がゼロに設定されたエンコーディングを受け入れます。その後、ビット文字列サイズの計算で符号なし整数がアンダーフローし、約 2^64 の値が生じます。この値がメモリ割り当てサイズとして渡されます。その結果、アロケータは「Cannot allocate 2305843009213693951 bytes of memory (of type binary)」のようなメッセージを出力してノード全体を終了させます。
このクラッシュは VM レベルでの中止であり、Erlang レベルの例外ではありません。スーパービジョンツリーや try/catch によってインターセプトすることはできませんし、`binary_to_term/2` に [safe] オプションを渡すことでも回避できません(これは原子の作成のみを制限するものであり、バイナリエンコーディングの構造化検証は行いません)。
`binary_to_term/1,2` や `enif_binary_to_term()` を介して信頼できないソースから ETF デコードを行う任意のアプリケーションが影響を受けます。Erlang 配布プロトコルも同様のコードパスを通じて着信項をデコードしますが、OTP セキュアコーディングガイドライン (DSG-011) に従い、配布は信頼できるネットワーク上で実行されることが想定されています。
この問題は OTP 27.0 より前の OTP バージョン(ただし OTP 29.0.4 および OTP 28.5.0.4 を除く)、OTP 27.3.4.15 より前のバージョン、および対応する erts の 15.0 から 17.0.4 および 16.4.0.4、15.2.7.11 より前のバージョンに影響します。
VulDB is the best source for vulnerability data and more expert information about this specific topic.