linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: <angel.lkml@16bits.net>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: lasse.collin@tukaani.org, Jubin Zhong <zhongjubin@huawei.com>,
	 linux-kernel@vger.kernel.org, vegard.nossum@oracle.com
Subject: Re: [PATCH 11/11] xz: Adjust arch-specific options for better kernel compression
Date: Sun, 31 Mar 2024 01:42:31 +0100	[thread overview]
Message-ID: <27db456edeb6f72e7e229c2333c5d8449718c26e.camel@16bits.net> (raw)
In-Reply-To: <20240320183846.19475-12-lasse.collin@tukaani.org>

Under the light of the recent xz backdoor, I should note that this
patch (patch 11) does:

> +# Set XZ_VERSION (and LIBLZMA_VERSION). This is needed to disable features
> +# that aren't available in old XZ Utils versions.
> +eval "$($XZ --robot --version)" || exit
> +

in order to do 

> +	arm64)
> +		ALIGN=4
> +
> +		# ARM64 filter was added in XZ Utils 5.4.0.
> +		if [ "$XZ_VERSION" -ge 50040002 ]; then
> +			BCJ=--arm64
> +		else
> +			echo "$0: Upgrading to xz >= 5.4.0" \
> +				"would enable the ARM64 filter" \
> +				"for better compression" >&2
> +		fi
> +		;;

and
> +		# RISC-V filter was added in XZ Utils 5.6.0.
> +		if [ "$XZ_VERSION" -ge 50060002 ]; then
> +			BCJ=--riscv
> +		else
> +			echo "$0: Upgrading to xz >= 5.6.0" \
> +				"would enable the RISC-V filter" \
> +				"for better compression" >&2
> +		fi
> 

which was noted on Hacker News as a potential gadget of
exploitation[1]. Thanks Vegard for bringing it up[2].

A compromised $XZ could modify the build files directly in C, or even
produce a file that decompresses into a kernel with added evil
instructions, at a quite near level to Reflections on Trusting Trust.

Nonetheless, execution of high level shell script would probably be
more useful for an attacker that has to surreptitiously include their
backdoor, as it would only require a few bytes (e.g. a sed call) when
compared to coding that in C.

So, in the spirit of keeping a fair amount of paranoia, and since it
doesn't do any harm, any such code should be failproofed to ensure it
can only import the expected shell variables with the right format[3]:

 eval "$($XZ --robot --version | grep '^\(XZ\|LIBLZMA\)_VERSION=[0-9]*$')" || exit


Regards



[1] https://news.ycombinator.com/item?id=39869715
[2] https://www.openwall.com/lists/oss-security/2024/03/30/11
[3] Actually, LIBLZMA_VERSION isn't used, only XZ_VERSION. Being
generous and accepting that one as well. :)



  reply	other threads:[~2024-03-31  0:42 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-20 18:38 [PATCH 00/11] xz: Updates to license, filters, and compression options Lasse Collin
2024-03-20 18:38 ` [PATCH 01/11] MAINTAINERS: Add XZ Embedded maintainers Lasse Collin
2024-03-20 18:38 ` [PATCH 02/11] LICENSES: Add 0BSD license text Lasse Collin
2024-03-20 18:38 ` [PATCH 03/11] xz: Switch from public domain to BSD Zero Clause License (0BSD) Lasse Collin
2024-03-20 18:38 ` [PATCH 04/11] xz: Documentation/staging/xz.rst: Revise thoroughly Lasse Collin
2024-03-20 18:38 ` [PATCH 05/11] xz: Fix comments and coding style Lasse Collin
2024-03-20 18:38 ` [PATCH 06/11] xz: Cleanup CRC32 edits from 2018 Lasse Collin
2024-03-20 18:38 ` [PATCH 07/11] xz: Optimize for-loop conditions in the BCJ decoders Lasse Collin
2024-03-20 18:38 ` [PATCH 08/11] xz: Add ARM64 BCJ filter Lasse Collin
2024-03-20 18:38 ` [PATCH 09/11] xz: Add RISC-V " Lasse Collin
2024-03-20 18:38 ` [PATCH 10/11] xz: Use 128 MiB dictionary and force single-threaded mode Lasse Collin
2024-03-20 18:38 ` [PATCH 11/11] xz: Adjust arch-specific options for better kernel compression Lasse Collin
2024-03-31  0:42   ` angel.lkml [this message]
2024-04-03 19:59     ` Lasse Collin
2024-04-04 14:01       ` Lasse Collin
2024-03-29 19:24 ` [PATCH 00/11] xz: Updates to license, filters, and compression options Jonathan Bennett
2024-03-29 19:32 ` Kees Cook
2024-03-29 20:51   ` [tech-board] " Jonathan Corbet
2024-03-30  0:37     ` Kees Cook
2024-03-30  2:56     ` [tech-board] " Andrew Morton
2024-03-30 12:48       ` Lasse Collin
2024-03-30 13:54         ` Kees Cook

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=27db456edeb6f72e7e229c2333c5d8449718c26e.camel@16bits.net \
    --to=angel.lkml@16bits.net \
    --cc=akpm@linux-foundation.org \
    --cc=lasse.collin@tukaani.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=vegard.nossum@oracle.com \
    --cc=zhongjubin@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).