Erlang・Elixirの脆弱性対応では、Erlang/OTP本体、Elixir本体、Hexの依存、配備したリリースに含まれる実行環境を分けて確かめます。ここでは悪用が確認された脆弱性と2026年の主なもの、自分の環境が対象かを確かめる方法をまとめます。
- OTPのSSHサーバーのCVE-2025-32433はKEVに載っています。SSHサーバーを使っていれば、各系列の最新へ上げます。
- OTPの修正は最新の3系列だけに出ます。11月2日時点では29.1.2・28.5.0.8・27.3.4.19です。
mix releaseのリリースは実行環境を含むため、OTPを上げたあとビルドし直して配備します。
01Erlang・Elixirで今確かめたい脆弱性
2026年に公表されたもののうち、Erlang/OTP本体、Elixir本体、よく使われるHexのパッケージで確かめておきたいものです。米CISAのKEV(悪用が確認された脆弱性の一覧、10月30日版)に載っているErlang/OTPの項目は、SSHサーバーのCVE-2025-32433の1件です。[1]
| 脆弱性・問題 | 主な対象・条件 | 修正・対応 |
|---|---|---|
| Erlang/OTP(ssh) CVE-2025-32433 | OTPのSSHサーバーを動かす構成。認証の前に任意のコードを実行されるおそれ。提供元の評価でCVSS 3.1の10.0(緊急)。KEVに2025年6月9日追加 | OTP-27.3.3・26.2.5.11・25.3.2.20で修正。今は下の表の各系列の最新へ[2] |
| Erlang/OTP(ssl) CVE-2026-89422 | OTP 22.2以降のTLS 1.3のクライアント。サーバーが送る想定外の事前共有鍵で、証明書の検証を飛ばして接続が成立する。既定の設定でも成立し、httpcのHTTPSも対象。CVSS 4.0の9.3(緊急) | 29.1.1・28.5.0.7・27.3.4.18。上げるまではTLS 1.2に限るのが提供元の回避策[3] |
| Erlang/OTP(ssl) CVE-2026-55953 | (D)TLS 1.2のクライアントで、サーバー証明書の検証を回避されるおそれ。CVSS 4.0の9.1(緊急) | 29.0.4・28.5.0.4・27.3.4.15[4] |
| Erlang/OTP(inets) CVE-2026-73812 ほか | 組み込みのWebサーバーhttpd(一部はHTTPクライアントのhttpc)を使う構成。9月1日(日本時間)にリクエストスマグリング、mod_authの認証の回避、サービス停止など10件以上が公表 | 29.0.6・28.5.0.6・27.3.4.17(inets 9.7.2・9.6.2.3・9.3.2.7)[5] |
| Elixir本体 CVE-2026-109821 ほか | URI.parse/1・JSON.decode/1に大きな値を渡すとCPU・メモリを使い切るおそれ。深刻度は中 | 1.18.6・1.19.7・1.20.5(10月30日)[6] |
| grpc(Hex) CVE-2026-48853 | 0.4.0以上1.0.0未満で、既定では無効のErlpackのコーデックを有効にしたサーバー。任意のコード実行やBEAMの停止のおそれ。CVSS 4.0の9.2 | 1.0.0以上[7] |
| ash_authentication CVE-2026-49757 | OAuth2・OIDCのログインで、メールアドレスで利用者を照合するためにアカウントを乗っ取られるおそれ。CVSS 4.0の9.2 | 4.14.0以上(5.0系は5.0.0-rc.10)[8] |
| phoenix CVE-2026-56811 | 1つの接続で参加できるチャンネルの数に上限がなく、少ない接続でサービスを止められるおそれ。CVSS 4.0の8.7 | 1.5.15・1.6.17・1.7.24・1.8.9[9] |
| plug CVE-2026-54892 | 1.15.0以降。入れ子のクエリ・本文のパラメータの解析に時間がかかり、サービスを止められるおそれ。CVSS 4.0の8.7 | 1.15.5〜1.19.3(系列ごとに異なる)[10] |
KEVのCVE-2025-32433の項目は、Cisco・NetApp・SUSEなど、Erlang/OTPのSSHサーバーを組み込んだ製品も対象になりうると書いています。[1] 自社で書いたコードでなくても、Erlangで動く製品や機器は提供元の告知を確かめます。
02Erlang/OTPとElixirのサポート期限と更新先
Erlang/OTPがセキュリティの更新と修正を出すのは、最新の3つのメジャー版です。[11] 11月2日時点では29・28・27の3系列で、10月15日(日本時間)に各系列の最新版が出ています。[12]
| 系列 | 状態 | 今上げる先 |
|---|---|---|
| OTP 29 | サポート対象(最新) | 29.1.2 |
| OTP 28 | サポート対象 | 28.5.0.8 |
| OTP 27 | サポート対象 | 27.3.4.19 |
| OTP 26以前 | サポート外。7月以降のアドバイザリに修正版の記載がない | 27以降の最新へ |
Elixirは、不具合の修正を最新のマイナー版だけに、セキュリティの修正を最近の5つのマイナー版(1.16〜1.20)に出す方針です。[13] ただし10月30日の3件の修正版は1.18.6・1.19.7・1.20.5で、1.17以前の修正版はアドバイザリに記載がありません。[6] Elixirの版ごとに使えるOTPは決まっていて、1.20は27〜29、1.19は26〜28、1.18は25〜27です。[13] OTPを上げるときは、Elixirも合わせて上げます。
03Hexの依存関係の脆弱性を確かめる方法
Elixir(Mix)では、Hexのmix hex.auditを使います。Hex 2.5(6月29日)からは、取り下げられた版に加えて、セキュリティのアドバイザリがある依存も一覧に出し、見つかればゼロ以外の終了コードを返します。[14][15] mix deps.getでもアドバイザリのある版に印が付きますが、ビルドは止まりません。CIではmix hex.auditを実行します。
mix local.hex --force
mix hex.audit
mix deps.tree
mix deps.update plug対象外と判断したアドバイザリは、mix.exsのhexのignore_advisoriesにCVEかGHSAの番号を書いて除けます。[15]
rebar3には、アドバイザリを調べるコマンドが組み込まれていません。有志のプラグインrebar3_auditは、rebar.lockの版をGitHub Advisory Databaseと照らし合わせます。OTP 27以上が必要です。[16]
%% rebar.config
{project_plugins, [rebar3_audit]}.
rebar3 audit
rebar3 tree
rebar3 upgrade cowboyOSV-Scannerはmix.lockを読めますが、rebar.lockには対応していません。[17]
04Erlang・Elixirの脆弱性の確認の進め方
- OTPの版は細かい番号まで見る:
erlang:system_info(otp_release)で分かるのは29のようなメジャー版だけです。開発環境ではreleases/<メジャー版>/OTP_VERSIONのファイルに29.1.2のような版が書かれています。[18] - 本番のリリースでは、アプリケーションの版を見る:OTPのツールで作ったリリースには
OTP_VERSIONのファイルが置かれません。[18] リモートコンソールでapplication:which_applications().(ElixirはApplication.spec(:ssl, :vsn))を実行し、ssl・ssh・inetsの版をアドバイザリに書かれたアプリケーションの版と比べます。 - リリースを作り直す:Elixirの
mix releaseは、既定でERTS(実行環境)をリリースに含めます。ホストのOTPを上げても、動いているリリースは変わりません。新しいOTPでビルドし直して配備します。 - SSHサーバーとhttpdを使っているか:CVE-2025-32433はSSHサーバー、9月のinetsの件はhttpdを使う構成が対象です。コードで
ssh:daemonやinets:start(httpd, …)を呼んでいるかを探し、使っていれば各系列の最新へ上げます。提供元は、上げるまでSSHサーバーを止めるか、ファイアウォールで接続を絞るよう案内しています。[2] - TLSのクライアント:CVE-2026-89422は、外部のAPIやデータベースに
ssl:connectでつなぐ側が対象です。サーバーとして動かしていなくても、HTTPSで外に出るなら確かめます。
よくある質問
SSHサーバーを使っていなければ、CVE-2025-32433は関係ありませんか?
提供元のアドバイザリが対象にしているのは、Erlang/OTPのSSHサーバーを動かしている環境です。自社のコードで使っていなくても、Erlangで動く製品や機器がSSHサーバーを組み込んでいることがあり、KEVの項目もCisco・NetApp・SUSEの製品に触れています。製品の提供元の告知も確かめます。
mix hex.auditで何も出なければ十分ですか?
mix hex.auditが調べるのは、mix.lockに書かれたHexの依存です。Erlang/OTPとElixir本体の版は、上の表と各提供元のアドバイザリで別に確かめます。
Elixir 1.17を使っています。セキュリティの修正は出ますか?
Elixirの方針では1.17もセキュリティの修正の対象ですが、10月30日に公表された3件の修正版は1.18.6・1.19.7・1.20.5で、1.17以前の修正版は記載がありません。1.18.6以上に上げ、使っているOTPの版が合うかも確かめます。
出典・参考資料
- CISA:Known Exploited Vulnerabilities Catalog2026-10-30版 / Erlang/OTPの項目がCVE-2025-32433の1件で、2025年6月9日に追加されたこと、組み込んだ製品への言及
- Erlang/OTP:GHSA-37cp-fgq5-7wc2(CVE-2025-32433)2025-04-17 / SSHサーバーの対象・修正版・CVSS・回避策
- Erlang/OTP:GHSA-rgxr-4g4w-j875(CVE-2026-89422)2026-09-22 / TLS 1.3のクライアントの対象・条件・修正版・回避策・CVSS
- Erlang/OTP:GHSA-c6cw-pr89-w882(CVE-2026-55953)2026-07-27 / (D)TLS 1.2の証明書の検証の回避と修正版
- Erlang/OTP:Security advisories(GHSA-7j6m-4ffg-hg46 ほか)2026-09-01 / inets httpdの複数件と修正版
- Elixir:Security advisories(GHSA-327h-97cv-59xg・GHSA-rp5q-xqhq-926h ほか)2026-10-30 / Elixir本体の3件の対象と修正版、1.17以前の修正版の記載がないこと
- GitHub Advisory Database:GHSA-grp7-v8xh-rj7h(grpc)2026-08-26 / grpcのErlpackの条件・修正版・CVSS
- GitHub Advisory Database:GHSA-777c-2fxx-qr28(ash_authentication)2026-08-26 / ash_authenticationの対象・修正版・CVSS
- GitHub Advisory Database:GHSA-6983-jfq8-485w(phoenix)2026-09-04 / phoenixの対象・修正版・CVSS
- GitHub Advisory Database:GHSA-j43x-5hjq-rgxf(plug)2026-09-23 / plugの対象・修正版・CVSS
- Erlang/OTP:Erlang/OTP versions最新の3つの版にセキュリティの更新を出すこと
- Erlang/OTP:Releases(OTP-29.1.2・28.5.0.8・27.3.4.19)2026-10-15 / 各系列の最新版と公開日
- Elixir:Compatibility and deprecationsElixirのサポートの方針と、版ごとに使えるOTP
- Hex:Hex v2.5 released2026-06-29 / mix deps.getでのアドバイザリの表示と、ビルドを止めないこと
- Hex:mix hex.auditmix hex.auditの対象・終了コード・ignore_advisories
- rebar3_audit:READMErebar.lockとGitHub Advisory Databaseの照合、OTP 27以上が必要なこと
- OSV-Scanner:Supported languages and lockfiles2026-11-02確認 / mix.lockに対応し、rebar.lockが一覧に無いこと
- Erlang/OTP:Versions(Retrieving Current OTP Version)otp_releaseがメジャー版だけであること、OTP_VERSIONの置き場所とリリースに置かれないこと
