Julia Discourseの最新記事をずら~っと眺めていて気付いたのだが, xz-utilsのバージョン5.6.0, 5.6.1のtarballに含まれるバイナリにバックドアがしかけられていたそうだ。
PSA: backdoor in xz-utils and relevance for the Julia ecosystemがその内容。
手元でartifacts
の中にも該当バージョンが入っていて,早速フォルダごと削除。
また,XZ_jll
も5.6.1
は削除。
ただ依存しているのは,tomlファイルでgrepをかけてもChainRulesCore.jl
のdocs/Manifest.tomlぐらいで,
5.6.1
を消しても通常の動作ではあまり関係無さそう。
ただ,何故5.6.1が入っているのかは謎。
Ubuntuの方は5.4.1
で,特に警戒が必要なssh系には影響が無さそうで一安心。
[追記 2024/4/2 12時過ぎ] Julia言語用アーティファクトの中のxz-utilsのバージョン確認のための何か
一応xz-utils
のバージョンを確認できるものを作ってみました。
using Pkg function print_xz_versions() a_path = joinpath(Pkg.depots1(), "artifacts") for d in readdir(a_path) pc_path = joinpath(a_path, d, "lib", "pkgconfig", "liblzma.pc") if isfile(pc_path) for l in readlines(pc_path) m = match(r"^Version: ([^ \n]+)", l) if !isnothing(m) is_danger = !isnothing(match(r"5\.6\.[01]", m[1])) ms_str = is_danger ? "Danger !!" : "" println("Version: $(m[1]) $ms_str") println("dir: $(joinpath(a_path, d))\n") end end end end nothing end
何かファイルに保存して,includeしてprint_xz_versions()
で保存されているxz_utils
のバージョンと保存場所を表示します。
確認方法としては,pkg-config
用のファイルを見つけてそのファイルに書かれているバージョンをチェックしています。
[追記 2024/4/2 22時過ぎ] Juliaの公式パッケージの対応
- 日本時間 2024/3/31 0時過ぎ: [XZ] Revert recipe to v5.4.6 and add a note not to update itがマージされる
- 日本時間 2024/4/2 19時頃: [XZ] Add v5.2.5 with security patch and no backdoor author commitsがマージされる
ということで,おそらく今後pkg update
しても5.6.[01]
のバージョンがダウンロードされることはないと思います。
基本的にはsshのサーバー
とコラボしない限り問題は少ないはずですが,所定の位置に脆弱性のあるバージョンがあることが分かると,
ハックしてsshdとリンクさせることは,難しいとは言えど技術的には可能なので5.6.[01]
のバージョンを見つけたら削除しておく方がいいでしょう。
Julia言語のartifactsは一度作成されるとなかなか削除されないので,自分の手で確実に削除されるのをおすすめします。
なお,私の会社PCでは,BInaryBuilder.jl→大元はBinaryBuilderBase.jlに依存しているパッケージがXZ_jll
を利用しているようでした。