| Title | MtrudelのBanditにおける制限またはスロットリング無しのリソースの割り当てに関する脆弱性 |
|---|---|
| Summary | mtrudel banditのリソース割り当てに制限やスロットリングがない脆弱性により、認証されていないリモート攻撃者がメモリ枯渇を引き起こしてサービス拒否(DoS)を発生させる可能性があります。lib/bandit/http1/socket.exの'Elixir.Bandit.HTTP1.Socket':read_data/2のチャンク形式の読み取り処理は、HTTP/1チャンク付きリクエストボディを読み込む際に、呼び出し元が指定した:lengthオプションを無視します。設定された制限(例:Plug.Parsersのデフォルト8MB)で蓄積ボディを制限する代わりに、do_read_chunked_data!/5関数は受信したすべてのチャンクを無条件にiolistにバッファし、ボディ全体を単一のバイナリとして具現化します。この関数は常に{:ok, body, ...}を返すため、呼び出し元は413レスポンスを返すことができません。標準的なPhoenixエンドポイントではPlug.Parsersがルーティングや認証の前に実行されるため、認証されていない攻撃者は有効なルートや認証情報を必要としません。任意のパスに対して任意の大きさのボディを持つ1つのTransfer-Encoding: chunkedのPOSTリクエストを送信すると、BEAMプロセスが利用可能なメモリを枯渇させ、OSのOOMキラーによって終了されます。同じ関数内のcontent-lengthの処理は正しく制限を適用しており、影響を受けません。この問題はbanditのバージョン1.4.0から1.11.1未満に影響します。 |
| Possible impacts | 当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 |
| Solution | 正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。 |
| Publication Date | May 13, 2026, midnight |
| Registration Date | May 25, 2026, 10:25 a.m. |
| Last Update | May 25, 2026, 10:25 a.m. |
| CVSS3.0 : 重要 | |
| Score | 7.5 |
|---|---|
| Vector | CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
| Mtrudel |
| Bandit 1.4.0 以上 1.11.1 未満 |
| No | Changed Details | Date of change |
|---|---|---|
| 1 | [2026年05月25日] 掲載 |
May 25, 2026, 10:25 a.m. |
| Summary | Allocation of Resources Without Limits or Throttling vulnerability in mtrudel bandit allows unauthenticated remote denial of service via memory exhaustion. The chunked clause of 'Elixir.Bandit.HTTP1.Socket':read_data/2 in lib/bandit/http1/socket.ex ignores the caller-supplied :length option when reading HTTP/1 chunked request bodies. Instead of capping the accumulated body at the configured limit (e.g. Plug.Parsers' default 8 MB), do_read_chunked_data!/5 buffers every received chunk into an iolist unconditionally and materializes the entire body as a single binary. The function always returns {:ok, body, ...}, so callers cannot interpose a 413 response. Because Plug.Parsers runs before routing and authentication in the standard Phoenix endpoint, an unauthenticated attacker needs no valid route or credentials. Sending a single Transfer-Encoding: chunked POST request with an arbitrarily large body to any path causes the BEAM process to exhaust available memory and be terminated by the OS OOM killer. The content-length path in the same function correctly enforces the limit and is not affected. This issue affects bandit: from 1.4.0 before 1.11.1. |
|---|---|
| Publication Date | May 13, 2026, 11:17 p.m. |
| Registration Date | May 15, 2026, 4:20 a.m. |
| Last Update | May 14, 2026, 1:16 a.m. |