Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp4958666rwb; Wed, 21 Sep 2022 00:45:34 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5ZeQx/+C8EHnFKaSSuxyesu6jPSym3fhPMEvOZflYTOKfjW4yUJVrWvWZ7OSt9a/uI/TeB X-Received: by 2002:a05:6402:2894:b0:453:b17b:d540 with SMTP id eg20-20020a056402289400b00453b17bd540mr17036552edb.178.1663746334306; Wed, 21 Sep 2022 00:45:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663746334; cv=none; d=google.com; s=arc-20160816; b=jh3G6ypwFy2iyafUKtSvcFq0un+Wo1sf6HhilVylPilK+sGWC9h1IcGcpTwC3hYshh Id14nA5sir7Nl/CbeJvXtyCdc7yGEYHfS5J3wJ1mVwPfASoEKJFm0XkxigteYvrxFVSz Xv23xrLaltwckttgzMKXTugCKLPr8dulbZAJzARUczPc0TY4WjsZYWAW3qtbzX5MEVYF shLfrc+53kgw9rChS5Dplzg5G75UE8eGaDe+v6WAR11lALAyTNBL7gzNg8jYSVrw+75r JJrdjwHLYs+OUuvCp6uEAoqmf/tYMSx4S8lqXk78U6qIgufsbGdD89jeEAlyotxqCJdZ G0xA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:message-id:in-reply-to :subject:cc:to:from:date; bh=aLXIOD/2voFKZsZ6+e6SO60hY8Iz8sfKDTsj537BXf8=; b=IkwMO6SCLK48M8s4aKgAUN61xd3taqlnFeeIb1egGn05/wDzRmOngayzkM1jajEHE+ 3HMsAHLgtciPzgiQ4S34L9HsZi9Cr6tyNIknpY34gpxifgtrEKEdOS77W3FUYeXATUQ2 j7iDHRUAnO1/n96cgz03SF+o0HQkNpkBJmEeSZGSdQxOFetQBj4jfvUvaxowAP9x5lZH KxfbOUWiJL9Lrjg10F81z5OZBXaorxpGf+DkK6JBvHWoKw8No2L0H17zdPhE+jTGyL+2 AIa7p7jSkk9mbfp4L3hD+qk+T5PcW6W+4rvLNUXpk6h/X+rerOoBE/IVCOxiz/v+4BXI zmOw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id nb37-20020a1709071ca500b0078214a9c27bsi1157457ejc.377.2022.09.21.00.45.07; Wed, 21 Sep 2022 00:45:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230004AbiIUHY1 (ORCPT + 99 others); Wed, 21 Sep 2022 03:24:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40692 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229804AbiIUHY0 (ORCPT ); Wed, 21 Sep 2022 03:24:26 -0400 Received: from mail.steuer-voss.de (mail.steuer-voss.de [85.183.69.95]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ACA5B7CB48; Wed, 21 Sep 2022 00:24:22 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at mail.steuer-voss.de Received: by mail.steuer-voss.de (Postfix, from userid 1000) id 92390E74F; Wed, 21 Sep 2022 09:24:18 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by mail.steuer-voss.de (Postfix) with ESMTP id 8F854E737; Wed, 21 Sep 2022 09:24:18 +0200 (CEST) Date: Wed, 21 Sep 2022 09:24:18 +0200 (CEST) From: Nikolaus Voss To: Mimi Zohar cc: David Howells , Jarkko Sakkinen , James Morris , "Serge E. Hallyn" , linux-integrity@vger.kernel.org, keyrings@vger.kernel.org, linux-security-module@vger.kernel.org, linux-kernel@vger.kernel.org, Yael Tzur Subject: Re: [PATCH] KEYS: encrypted: fix key instantiation with user-provided data In-Reply-To: <2ee1e3e68d847001c4bf856d980a553e52de5023.camel@linux.ibm.com> Message-ID: <439012d8-dd4-7fd2-3788-49cf72faa99@vosn.de> References: <20220919072317.E41421357@mail.steuer-voss.de> <53730789a41358673b1715dd650706e9ffcb1199.camel@linux.ibm.com> <35fd816-d755-967-5712-b5496875ac7a@vosn.de> <2ee1e3e68d847001c4bf856d980a553e52de5023.camel@linux.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 20 Sep 2022, Mimi Zohar wrote: > On Tue, 2022-09-20 at 18:23 +0200, Nikolaus Voss wrote: >> On Tue, 20 Sep 2022, Mimi Zohar wrote: >>> On Fri, 2022-09-16 at 07:45 +0200, Nikolaus Voss wrote: >>>> Commit cd3bc044af48 ("KEYS: encrypted: Instantiate key with user-provided >>>> decrypted data") added key instantiation with user provided decrypted data. >>>> The user data is hex-ascii-encoded but was just memcpy'ed to the binary buffer. >>>> Fix this to use hex2bin instead. >>> >>> Thanks, Nikolaus. We iterated a number of times over what would be the >>> safest userspace input. One of the last changes was that the key data >>> should be hex-ascii-encoded. Unfortunately, the LTP >>> testcases/kernel/syscalls/keyctl09.c example isn't hex-ascii-encoded >>> and the example in Documentation/security/keys/trusted-encrypted.rst >>> just cat's a file. Both expect the length to be the length of the >>> userspace provided data. With this patch, when hex2bin() fails, there >>> is no explanation. >> >> That's true. But it's true for all occurrences of hex2bin() in this file. >> I could pr_err() an explanation, improve the trusted-encrypted.rst example >> and respin the patch. Should I, or do you have another suggestion? > >> I wasn't aware of keyctl09.c, but quickly looking into it, the user data >> _is_ hex-ascii-encoded, only the length is "wrong": Imho, the specified >> length should be the binary length as this is consistent with key-length >> specs in other cases (e.g. when loading the key from a blob). >> keyctl09.c could be easy to fix, if only the length is modified. Should >> I propose a patch? What is the correct/appropriate workflow there? > > I'm concerned that this change breaks existing encrypted keys created > with user-provided data. Otherwise I'm fine with your suggestion. Ok, but this change does not touch the hex-ascii format of encrypted key blobs? > > The LTP example decrypted data length is 32, but the minimum decrypted > data size is 20. So it's a bit more than just changing the LTP > decrypted data size. The modified LTP test should work on kernels > with and without this patch. So this would mean OR-ing old and new variant for the test? The current implementation of the test will fail anyway as the key size is below the minimum of 20 and thus should have failed before. Niko