Received: by 2002:a05:7412:b795:b0:e2:908c:2ebd with SMTP id iv21csp293358rdb; Thu, 2 Nov 2023 04:08:08 -0700 (PDT) X-Google-Smtp-Source: AGHT+IE/xIcTHfgsEYyjJc3MLv1pOZEEhUnBchUH+zR0koWhRXcUAOh2Foe27Ahe7P2tgtPbKA4N X-Received: by 2002:a05:6358:33a1:b0:168:e364:70af with SMTP id i33-20020a05635833a100b00168e36470afmr24366157rwd.25.1698923288280; Thu, 02 Nov 2023 04:08:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698923288; cv=none; d=google.com; s=arc-20160816; b=DjH8R2ej4BYuLahWb4ES/uKW1urKbyZ+7WFyIadJCLTzSrH0Jvf1WFYr+Ukf2oMNhF rBvI/8ZhAQ86jNQzKrri4c8IZMnijxH7aT0j2HG6aBwdxAtU2m2SriPjKbZU/Kxou+zS 4iXBekaVXWTQyxwjG5ZXit3bEDvR+fPtMUl5SsJIQIVIaM6shGKHe+dccCeoEWAK9hgF Fj82PMFDdfK4B6+OM6o0mshNGWD2wXwbA2fJxajMl3oZb6jzhZB9aLpQpbzJkKnz1lIQ Ie9BOfAqSgfFuyzsmId6IVVxJvoXPX0rdEXp7GUhJWf1M8GU2LPVqZ9wyUrGnH5XK2xK ziRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature :dkim-signature; bh=uwKsAW8t6NpbQI6ToYL+NrNjCkOiOB5sFeA9cp9j2zM=; fh=wf4tF2bAbU4SvNaKs/0CVM0t8K6JHpEvpO5JFeSjd/I=; b=d+Rn1CcHh5SJ027dShu96m2x6RwcMUXJ5F2rQelW1gMn/nb3pJYFxTpiEu6IWI6+0x W7+wCQFH80cl20fhS9k1penF9SiLiOoSvHZ98hBncnnmXM4VGOYpNq4QyDknGWogt2H0 6Sf67dCwKHgmMKroK9CEPyjB0MeOhCx/9xdlWXllrm7BpIAdBqx88v3NygNYIjTwLacw sCWQ9o0iXMnmxzMNaHPAeogX1j8OQZrUGDWF4gajQVj8MfJ/xVUBv6mqPYxF4JbeFMQP 27pJmeNZPLICewTXjzCVxqOfeBBBScv7Se33XpXG8lvllm1tm40S4EiYF2c4jhOGZhuD 3+Tg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.cz header.s=susede2_rsa header.b=Vrp06a5n; dkim=neutral (no key) header.i=@suse.cz header.b=pCWCYxB0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from agentk.vger.email (agentk.vger.email. [23.128.96.32]) by mx.google.com with ESMTPS id be10-20020a656e4a000000b005855f67e491si1856324pgb.696.2023.11.02.04.08.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Nov 2023 04:08:08 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) client-ip=23.128.96.32; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.cz header.s=susede2_rsa header.b=Vrp06a5n; dkim=neutral (no key) header.i=@suse.cz header.b=pCWCYxB0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.32 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id 1ABDD80F6488; Thu, 2 Nov 2023 04:08:03 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347144AbjKBLHv (ORCPT + 99 others); Thu, 2 Nov 2023 07:07:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51156 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346709AbjKBLHu (ORCPT ); Thu, 2 Nov 2023 07:07:50 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2001:67c:2178:6::1c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 35983DE for ; Thu, 2 Nov 2023 04:07:44 -0700 (PDT) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id CB4692184B; Thu, 2 Nov 2023 11:07:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1698923262; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=uwKsAW8t6NpbQI6ToYL+NrNjCkOiOB5sFeA9cp9j2zM=; b=Vrp06a5nq43iTDGTvXAoqTdddotSLXyyr5Dq4oGMrwsVEkaBL8aWMLPxrnVPBaHRiniOkT MpZPCFIA2SgDzl0ojHcxvFCXKlOchjN/nzFK4bl54xCDoRNFLxRytecEdScKTgqZHvl9LS s92m3mNM7ROpGmbHhRp+7cZ3GHa3HwI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1698923262; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=uwKsAW8t6NpbQI6ToYL+NrNjCkOiOB5sFeA9cp9j2zM=; b=pCWCYxB0pNsE/wlzge6/iFAgN7ccpppI0tdbae5Kj9A0A0moNm6Il6wwBjGzlrBfEfFJQ6 0WgMJ7cdNE/QWYBg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id B50C013584; Thu, 2 Nov 2023 11:07:42 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 1NKZK/6CQ2XbHgAAMHmgww (envelope-from ); Thu, 02 Nov 2023 11:07:42 +0000 Received: by quack3.suse.cz (Postfix, from userid 1000) id 3E5CEA06E3; Thu, 2 Nov 2023 12:07:42 +0100 (CET) Date: Thu, 2 Nov 2023 12:07:42 +0100 From: Jan Kara To: Shreeya Patel Cc: Jan Kara , jack@suse.com, linux-kernel@vger.kernel.org, kernel@collabora.com, groeck@google.com, zsm@google.com, syzbot+82df44ede2faca24c729@syzkaller.appspotmail.com Subject: Re: [PATCH] fs: udf: super.c: Fix a use-after-free issue in udf_finalize_lvid Message-ID: <20231102110742.jzoee5nqmgs3kilg@quack3> References: <20231030202418.847494-1-shreeya.patel@collabora.com> <20231031113754.vwrj3pubynb6bnef@quack3> <30b49da5-fc1a-3a18-7eeb-d5bbb08b3e9c@collabora.com> <20231102110510.m4niipobiu7j3rup@quack3> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231102110510.m4niipobiu7j3rup@quack3> X-Spam-Status: No, score=-0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Thu, 02 Nov 2023 04:08:03 -0700 (PDT) On Thu 02-11-23 12:05:10, Jan Kara wrote: > On Thu 02-11-23 15:34:52, Shreeya Patel wrote: > > On 31/10/23 17:07, Jan Kara wrote: > > > On Tue 31-10-23 01:54:18, Shreeya Patel wrote: > > > > Add some error handling cases in udf_sb_lvidiu() and redefine > > > > the descCRCLength in order to avoid use-after-free issue in > > > > udf_finalize_lvid. > > > > > > > > Following use-after-free issue was reported by syzbot :- > > > > > > > > https://syzkaller.appspot.com/bug?extid=46073c22edd7f242c028 > > > > > > > > BUG: KASAN: use-after-free in crc_itu_t+0x97/0xc8 lib/crc-itu-t.c:60 > > > > Read of size 1 at addr ffff88816fba0000 by task syz-executor.0/32133 > > > > > > > > Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/06/2023 > > > > Call Trace: > > > > > > > > __dump_stack lib/dump_stack.c:88 [inline] > > > > dump_stack_lvl+0x1e3/0x2cb lib/dump_stack.c:106 > > > > print_address_description mm/kasan/report.c:284 [inline] > > > > print_report+0x13c/0x462 mm/kasan/report.c:395 > > > > kasan_report+0xa9/0xd5 mm/kasan/report.c:495 > > > > crc_itu_t+0x97/0xc8 lib/crc-itu-t.c:60 > > > > udf_finalize_lvid+0x111/0x23b fs/udf/super.c:2022 > > > > udf_sync_fs+0xba/0x123 fs/udf/super.c:2378 > > > > sync_filesystem+0xe8/0x216 fs/sync.c:56 > > > > generic_shutdown_super+0x6b/0x334 fs/super.c:474 > > > > kill_block_super+0x79/0xd6 fs/super.c:1459 > > > > deactivate_locked_super+0xa0/0x101 fs/super.c:332 > > > > cleanup_mnt+0x2de/0x361 fs/namespace.c:1192 > > > > task_work_run+0x22b/0x2d4 kernel/task_work.c:179 > > > > resume_user_mode_work include/linux/resume_user_mode.h:49 [inline] > > > > exit_to_user_mode_loop+0xc4/0xd3 kernel/entry/common.c:171 > > > > exit_to_user_mode_prepare+0xb4/0x115 kernel/entry/common.c:204 > > > > __syscall_exit_to_user_mode_work kernel/entry/common.c:286 [inline] > > > > syscall_exit_to_user_mode+0xae/0x278 kernel/entry/common.c:297 > > > > do_syscall_64+0x5d/0x93 arch/x86/entry/common.c:99 > > > > entry_SYSCALL_64_after_hwframe+0x63/0xcd > > > > RIP: 0033:0x7e8195fb6e17 > > > > > > > > Fixes: ebbd5e99f60a ("udf: factor out LVID finalization for reuse") > > > > Reported-by: syzbot+82df44ede2faca24c729@syzkaller.appspotmail.com > > > > Signed-off-by: Shreeya Patel > > > Thanks for the patch but not every syzbot report is actually a bug. In this > > > case you can notice that udf_load_logicalvolint() is actually checking > > > validity of the Logical Volume Integrity Descriptor. The fact that later > > > udf_sb_lvidiu() call overflows the buffer size is caused by the fact that > > > syzbot overwrites the UDF filesystem while it is mounted and so the values > > > we checked are not the same as the value we later use. That is not a > > > problem we try to protect against (it is equivalent to corrupting memory). > > > I'm working on patches to so that syzbot can reasonably easily avoid > > > creating such invalid scenarios but so far they did not land. So I'm sorry > > > but I will not apply your fix. > > > > Thanks for the information and it definitely makes sense to not let > > syzbot create such invalid scenarios. Maybe we can add some kind of > > filtering in syzbot for these kind of issues in future but I wonder how > > to even identify these reports from syzbot which is purposely trying to > > do some memory corruption. It seems hard to identify them without > > understanding what the reproducer is doing. Maybe this is a question for > > the syzbot team. Hit send too early ;) I have discussed this with the syzbot team and as you noticed the problem is it is very hard to detect the corruption scenario in an automated way. What we plan to do (next round of patches submitted yesterday [1]) is that we will not allow processes to open devices for writing when they are mounted. This will effectively not allow syzbot to corrupt buffer cache of a mounted filesystem and so should address these issues. Honza [1] https://lore.kernel.org/all/20231101173542.23597-1-jack@suse.cz -- Jan Kara SUSE Labs, CR