Rustの脆弱性情報まとめ

2026.11.01 22:23 更新 2026年に公表されたRust本体とよく使われるクレートの脆弱性

更新日別の件数直近14日・深刻度別

新規公表と更新直近14日

新規公表 16件 / 更新 5件

深刻度×脆弱性の種類押すと絞り込み

脆弱性の種類緊急高中低未評価
サービス停止(DoS)–132–
認証・認可の回避2–1––
メモリ破壊–––2–
ファイルの読み取り・上書き–2–––
コード実行2––––
情報の漏えい––1––
その他–122–

Rustの脆弱性対応では、ビルドに使うRust本体(Cargo)、Cargo.lockの依存、配備済みのバイナリを分けて確かめます。ここでは2026年に公表された主な脆弱性と、自分の環境が対象かを確かめる方法をまとめます。

このページの要点
  • 安全性の更新を受けるのは最新の安定版だけです。11月1日時点では1.99.1です。
  • rust-opensslとzipの2026年の脆弱性は、11月1日時点でcargo auditが使うRustSecに記録がありません。OSV-Scannerを合わせて使います。
  • 依存はバイナリに組み込まれるため、lockファイルを直したあと、再ビルドと配備まで確かめます。

01Rustで今確かめたい脆弱性

2026年に公表されたもののうち、Rust本体(Cargo)と、よく使われるクレートで確かめておきたいものです。米CISAのKEV(悪用が確認された脆弱性の一覧、10月30日版)には、Rust本体・クレートの項目は見当たりませんでした。[1]

脆弱性・問題主な対象・条件修正・対応詳細
zipクレート
CVE-2026-115905
9.0.4以下。ZIPの検査と展開で別の読み方をする構成。提供元の評価でCVSS 4.0の10.0(緊急)9.1.0以上に上げ、既定で無効の検査を有効にする解説記事[2]
openssl(rust-openssl)
CVE-2026-41681 ほか
0.10.77以下(件ごとに始まりの版が異なる)。safe Rustから呼べるAPIでバッファを越えて書き込むおそれ。GitHub Advisoryの記載でCVSS 4.0の8.1(高)0.10.78で4月の5件、0.10.79・0.10.80で5月の3件が修正。0.10.80以上へ提供元のアドバイザリ[3]
Cargo(tarの展開)
CVE-2026-33056
Rust 1.94.0以前のCargo。悪意のあるクレートが任意のディレクトリの権限を変えるおそれ。crates.ioでは悪用するクレートは見つかっていないRust 1.94.1以上Rust公式[4]
Cargo(シンボリックリンク)
CVE-2026-5223
Rust 1.96.0より前のCargoで、他社のレジストリを使う場合。crates.ioの利用者は対象外。深刻度は中Rust 1.96.0以上Rust公式[5]
tokio
CVE-2026-115567
1.54.0だけ。マルチスレッドのランタイムでIntervalを使うと、クラッシュやuse-after-freeのおそれ1.54.1以上。1.54.0は取り下げ(yank)済みRustSec[6]
rustls-webpki/webpki-roots
CVE-2026-111943
信頼を取り消されたemSignの中間証明書を含む証明書の経路を受け入れるおそれrustls-webpki 0.103.16以上、webpki-roots 1.0.10以上RustSec[7]

このほか、8月20日(日本時間16時15分ごろ)にarrayref 0.3.10が悪意のある依存を含む形で公開され、約86分後に削除されました。Rust公式は、手元のキャッシュに該当のクレートがあるかをfindで確かめ、見つかれば侵害された可能性のある環境として調べるよう案内しています。[8]

02Rust本体のサポート期限と更新先

Rustには長期サポートの系列がなく、安全性の更新を受けられるのは最新の安定版だけです。[9] 安定版は6週間ごとに出ます。[10]11月1日時点の最新は、10月15日公開の1.99.1です。[11]

系列状態今上げる先
1.99系(1.99.1)サポート対象(最新の安定版)rustup update stableで1.99.1へ
1.96〜1.98系サポート外。Cargoの既知の2件は修正済み1.99.1へ
1.94.1〜1.95系サポート外。CVE-2026-5223が残る1.99.1へ
1.94.0以前サポート外。CVE-2026-33056とCVE-2026-5223が残る1.99.1へ

Rustは実行環境を持たず、コンパイラと標準ライブラリはビルドのときに使われます。そのため本体の更新が効くのは、ビルドに使う端末・CIの環境です。OSの配布するRustは、そのOSの提供元の案内で修正の取り込みを確かめます。

03Rustの依存関係の脆弱性を確かめる方法

定番はRustSecのデータベースを使うcargo auditです。Cargo.lockを調べます。[12]

ターミナル
cargo install cargo-audit --locked
cargo audit

RustSecには、11月1日時点でrust-opensslの2026年の8件と、zipのCVE-2026-115905の記録がありません。[13] GitHub Advisory Databaseも参照するOSV-Scannerを合わせて使うと、この差を埋められます。[14]

ターミナル
osv-scanner scan -L Cargo.lock

ビルド済みのバイナリはcargo audit binで調べます。cargo auditableで作ったバイナリなら依存の一覧が埋め込まれていて正確に調べられます。そうでないバイナリでは一部しか分からず、OpenSSLのような埋め込みのCのコードは見落とします。[12]

ターミナル
cargo install cargo-auditable --locked
cargo auditable build --release
cargo audit bin target/release/<バイナリ名>

04Rustの脆弱性の確認の進め方

  1. Cargo.lockを正にする:実際に使われる版はCargo.tomlではなくCargo.lockで決まります。cargo tree -i opensslで、どの依存が引き込んでいるかを確かめ、cargo update -p opensslで上げます。
  2. 取り下げられた版は残る:tokio 1.54.0は取り下げられましたが、既存のCargo.lockに書かれた版はそのまま使われます。[15] cargo updateで上げ、lockファイルの差分を確かめます。
  3. 本番のバイナリを作り直す:Rustの依存はバイナリに静的に組み込まれるため、lockファイルを直しても、再ビルドして配備するまで本番は変わりません。コンテナでは、動いているイメージのバイナリをcargo audit binで調べます。
  4. ビルド環境の版:rust-toolchain.tomlやCIのイメージで古い版を固定していると、Cargoの脆弱性が残ります。cargo --versionをCIの記録で確かめます。
  5. Cのライブラリ:opensslクレートは、vendored機能を使わない場合はOSのOpenSSLに結び付くため、クレートとは別にOSのOpenSSLの更新も確かめます。

05Rustの解説記事

Rust公表 2026-10-18

Rustのzipクレートの脆弱性CVE-2026-115905、検査をすり抜けて別のファイルを上書きされるおそれ。9.0.5以降も既定で無効の検査を有効にする方法

Rustのzipクレートの脆弱性CVE-2026-115905(GHSA-m665-v7pm-7grj)は、ZIPの2か所の名前の食い違いで検査をすり抜け、別のファイルを上書きされるおそれがあります。修正の検査は既定で無効です。対象の構成の見分け方、上げる先の9.1.0、検査を有効にする書き方を説明します。

セキュリティ対策サービス一覧AIを悪用した攻撃への対策について、相談、リスクの診断、システムの改修を支援します。必要なものだけを選んで依頼できます。

よくある質問

cargo auditで何も出なければ、対応は不要ですか?

不要とは言えません。cargo auditはRustSecのデータベースだけを見ます。11月1日時点で、rust-opensslの2026年の脆弱性とzipのCVE-2026-115905はRustSecに記録がないため、OSV-ScannerなどでCargo.lockを合わせて調べます。

Rustはメモリ安全なのに、なぜメモリ破壊の脆弱性が出るのですか?

Cのライブラリを呼ぶ部分や内部の誤りで起きることがあります。rust-opensslのCVE-2026-41681はOpenSSLを呼ぶ部分の長さの確かめ漏れで、提供元はsafe Rustから到達できると説明しています。tokioのCVE-2026-115567も、safe Rustのコードでuse-after-freeが起きるおそれがあるものです。

Rustを1.99.1に上げれば、クレートの脆弱性も直りますか?

直りません。本体の更新で直るのはCargoなどの道具の問題です。クレートはcargo updateでCargo.lockの版を上げ、再ビルドして配備します。

出典・参考資料

  1. CISA:Known Exploited Vulnerabilities Catalog2026-10-31(10月30日版) / KEVにRust本体・クレートの項目がないこと
  2. zip-rs:GHSA-m665-v7pm-7grj(CVE-2026-115905)2026-10-18 / zipの対象・修正版・深刻度
  3. rust-openssl:セキュリティアドバイザリ(GHSA-ghm9-cr32-g9qj ほか)2026-04-23・05-06・05-08・05-20 / rust-opensslの対象・修正版・CVSS、safe Rustからの到達
  4. Rust公式:Security advisory for Cargo (CVE-2026-33056)2026-03-21 / Cargoのtar展開の問題と修正版1.94.1
  5. Rust公式:Security advisory for Cargo (CVE-2026-5223)2026-05-25 / 他社レジストリの対象、修正版1.96.0、深刻度
  6. RustSec:RUSTSEC-2026-0384(tokio)2026-10-21 / tokio 1.54.0の対象・修正版・取り下げ
  7. RustSec:RUSTSEC-2026-0382(rustls-webpki)・RUSTSEC-2026-0381(webpki-roots)2026-10-19・10-20 / emSignの中間証明書の問題と修正版
  8. Rust公式:Supply chain attack on arrayref2026-08-20 / arrayref 0.3.10の公開・削除の時刻と確かめ方
  9. Rust公式:Security policy安全性の更新は最新の安定版だけ
  10. The Rust Programming Language:Appendix G - How Rust is Made and “Nightly Rust”6週間ごとの安定版
  11. Rust公式:Announcing Rust 1.99.12026-10-15 / 最新の安定版と更新のコマンド
  12. RustSec:cargo-audit READMEcargo audit、cargo audit binとcargo auditable
  13. RustSec:advisory-db(crates/openssl・crates/zip)2026-11-01確認 / RustSecにrust-opensslの2026年の記録とzipのCVE-2026-115905の記録がないこと
  14. OSV-Scanner:Usagelockファイルの検査のコマンド
  15. The Cargo Book:cargo yank取り下げられた版と既存のlockファイル