Malicious code in xz/liblzma π±
λ°λ‘ μ΄μ μμΆ μ²λ¦¬λ₯Ό xz ν¨ν€μ§μ upstream tarballsμμ μ μμ μΈ λμμ΄ νμΈλμ΄ μ΄μμ λλ€. κ²°λ‘ μ xz λ΄ Malicious codeκ° μ½μ λμκ³ μ΄λ‘ μΈν΄ λ§μ μμ€ν μ΄ μν₯λ°μ κ²μΌλ‘ 보μ λλ€. CVE-2024-3093λ₯Ό ν λΉλ°μ μ΄ μ΄μμ λν΄ μ΄μΌκΈ°ν΄λ³ΌκΉ ν©λλ€.
Xz
xzλ μμΆ λκ΅¬λ‘ LZMA2λ₯Ό μ¬μ©νλ©° μμΆ ν¨μ¨μ΄ κ΅μ₯ν μ’μ λꡬμ΄μ λΌμ΄λΈλ¬λ¦¬μ λλ€. λλ€μ 리λ μ€ λ°°ν¬νμ κΈ°λ³Έμ μΌλ‘ μ¬μ©λ©λλ€.
xz --help
Usage: xz [OPTION]... [FILE]...
Compress or decompress FILEs in the .xz format.
-z, --compress force compression
-d, --decompress force decompression
-t, --test test compressed file integrity
-l, --list list information about .xz files
-k, --keep keep (don't delete) input files
-f, --force force overwrite of output file and (de)compress links
-c, --stdout write to standard output and don't delete input files
...
Malicious Code
xzλ automakeλ₯Ό ν΅ν λΉλ κ³Όμ μμ build-to-host.m4
λ₯Ό μ¬μ©νλλ° github λ²μ κ³Ό tarballs λ²μ μ΄ μμ΄νλ€κ³ ν©λλ€. μ
μ±μ½λκ° μ½μ
λ¬λ€κ³ νλ¨λλ tarballs λ²μ κΈ°μ€μμ build-to-host.m4κ° μ€ννλ μ€ν¬λ¦½νΈκ° μ
μμ μΈ ν
μ€νΈ μ½λ λ°μ΄ν°λ₯Ό λ°κ³ , μ΄λ₯Ό μ΄μ©νμ¬ μ
μ± μ½λλ₯Ό μ€νν©λλ€.
tests/files/bad-3-corrupt_lzma2.xz
tests/files/good-large_compressed.lzma
μ
μ±μ½λλ amd64 νκ²½μ νκ²ν
ν΄μ λμνλ κ²μΌλ‘ 보μ΄κ³ sshdμ μν₯μ μ€ μ μμ΅λλ€. ν΄λΉ μ½λκ° λ‘λλλ€λ©΄ sshdμμ RSA_public_decrypt
ν¨μκ° κ³΅κ²©μκ° μλν ꡬνμΌλ‘ λμνκ² λλ©° μΈμ¦ κ³Όμ μ°νμ μ¬μ©λ μ μλ κ² κ°μ΅λλ€.
Efforts to mitigate
Github
Githubμμ ν΄λΉ Repoλ₯Ό μ κ·Όνμ§ λͺ»νλλ‘ μ ννμ΅λλ€.
λ€λ§ μ€μ λ‘ μ΄λ₯Ό λΆμν΄μΌν μ¬μ©μλ€λ μ κ·Όνμ§ λͺ»νκ³ μλ μνλΌ μ¬λ¬ μκ²¬μ΄ λμ€κΈ°λ νλ°, μ΄μ¨λ λΉ λ₯΄κ² μ μ±μ½λμ λν μ κ·Όμ μ νν μνμ λλ€. κ·Έλ¬λ Githubμ λ―Έλ¬λ§ νλ μλΉμ€λ€μ μ΄μ©νλ©΄ μ°Ύμλ³Ό μ μμ΅λλ€ :D
Homebrew
μΌλ¨ Homebrew μΈ‘μμ μν₯λ°λ 5.6μμ 5.4.6μΌλ‘ κ°μ λ€μ΄ κ·Έλ μ΄λλλλ‘ λ³κ²½λ μνμ λλ€. Homebrew teamμ κ²½μ° MacOSμμ μν₯μ΄ μμ κ²μΌλ‘ λ³΄κ³ μκΈ΄νλ°, νμ€μΉ μμ λ€μ΄ κ·Έλ μ΄λλ₯Ό μ§μνκ³ λͺ¨λν°λ§νκ³ μλ μνμ λλ€. 5.4.6μ΄ μμ ν μ§ νμ€νμ§λ μμ§λ§, μ°μ μ 5.6 μ¬μ©μμλ€λ©΄ λ΄λ €κ°λκ² μ’μ κ² κ°μ΅λλ€.
Interesting link
μ΄μμ κ΄λ ¨λ μ΄μΌκΈ° νλ¦λ€μΈλ°, μ½μ΄λ³΄μλ©΄ μ’μ κ² κ°μμ λ°λ‘ λͺ¨μλ‘λλ€.
- https://boehs.org/node/everything-i-know-about-the-xz-backdoor
- https://github.com/google/oss-fuzz/pull/10667
- https://github.com/jamespfennell/xz/pull/2
Analysis in a single page
https://twitter.com/fr0gger_/status/1774342248437813525
References
- https://www.openwall.com/lists/oss-security/2024/03/29/4
- https://github.com/advisories/GHSA-rxwq-x6h5-x525
- https://boehs.org/node/everything-i-know-about-the-xz-backdoor
- https://github.com/jamespfennell/xz/pull/2
- https://github.com/Homebrew/homebrew-core/pull/167512
- https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27
- https://github.com/google/oss-fuzz/pull/10667