Received: by 10.213.65.68 with SMTP id h4csp158219imn; Mon, 12 Mar 2018 22:59:31 -0700 (PDT) X-Google-Smtp-Source: AG47ELskVnUBVoPzXg874ouuoL+uE5yKKiIRe9kzfd8MiUNn8TRFn9wR74HCeASso09+eahXJefE X-Received: by 2002:a17:902:367:: with SMTP id 94-v6mr10925323pld.140.1520920771673; Mon, 12 Mar 2018 22:59:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1520920771; cv=none; d=google.com; s=arc-20160816; b=HENvm84RFil7pa9e1oHECe9le6cbb44qU3WaKTVTS9knPdh2AfhNudITSp6hLnzJ+s a5mnAmt0VcqEqeT2bPu84W+mu4FyE+B8+jfsFTR0VRFi/kcyUix8pMVzktThUP0nxwkx vX4IEE3L8UU0+1IfcEuhXx7Abk03m2JpQoZ+TOSSiUsUoUQ6aGu72q4pfF2CyuWXCELo aPe9deNu2iMPGKdYNsoO039wCejXve1oZXbqmIfsTctO8oiarrqv5DUt/LtL9+NXUIH3 GLMsozpgtgNu1XEQ5uBWh7oBrseHe+eErhJhkN1AgdyKlaTfBHAfa3irHEhm4AQyd/H5 VlPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-transfer-encoding:content-disposition:mime-version :references:message-id:subject:cc:to:from:date :arc-authentication-results; bh=VPLfg71S95P7kVjSBqkmfh5QUL6nZA1PwayQeVD3e98=; b=RRvv4cXcI8ayG0Gqd63KlhDFEnP1BE489GBRdJXKxYF7pyfCguSN6mvcrumJ84ddeB vug3gz43uO3tgWOBQAKk49/cB+ty55Cf2wupzDlfZ0xfQZPikqh4XGJ3sYRP9VkcTy4m e0e2uDs7sCtQnaqHMYlLt82Hsv/PVLCBX3V1O8BOpdWRZbT+YPUXsO0Z8o+AGzerb7Ci y40nykcdNMhFmPbHzMMReoX4WgWCl5nEb1bHc3DEIBxi/qBjdJTbYn0vC9l5dwiLZzoN 6Ku+YJlF7CFdlqyLPfSdAPNnTbqNjjistzG7tbUL/4stwMKlp9nMhY2LmmqoWrdWVczs tTzA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s189si6050984pgc.753.2018.03.12.22.59.16; Mon, 12 Mar 2018 22:59:31 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751679AbeCMF6X (ORCPT + 99 others); Tue, 13 Mar 2018 01:58:23 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:35132 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751385AbeCMF6V (ORCPT ); Tue, 13 Mar 2018 01:58:21 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D07A3401CC42; Tue, 13 Mar 2018 05:58:20 +0000 (UTC) Received: from madcap2.tricolour.ca (ovpn-112-12.rdu2.redhat.com [10.10.112.12]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C0F061102E20; Tue, 13 Mar 2018 05:58:14 +0000 (UTC) Date: Tue, 13 Mar 2018 01:53:34 -0400 From: Richard Guy Briggs To: Mimi Zohar Cc: containers@lists.linux-foundation.org, Linux-Audit Mailing List , linux-integrity , LKML , paul@paul-moore.com, sgrubb@redhat.com, Matthew Garrett , Peter Moody Subject: Re: [PATCH] audit: add containerid support for IMA-audit Message-ID: <20180313055334.hnxuxifv5rcrgb77@madcap2.tricolour.ca> References: <1520257393.10396.291.camel@linux.vnet.ibm.com> <20180305135008.po6lheqnmkqqo6q4@madcap2.tricolour.ca> <1520259854.10396.313.camel@linux.vnet.ibm.com> <20180308112104.z67wohdvjqemy7wy@madcap2.tricolour.ca> <1520532165.3605.51.camel@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1520532165.3605.51.camel@linux.vnet.ibm.com> User-Agent: NeoMutt/20171027 X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Tue, 13 Mar 2018 05:58:20 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Tue, 13 Mar 2018 05:58:20 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'rgb@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2018-03-08 13:02, Mimi Zohar wrote: > On Thu, 2018-03-08 at 06:21 -0500, Richard Guy Briggs wrote: > > On 2018-03-05 09:24, Mimi Zohar wrote: > > > On Mon, 2018-03-05 at 08:50 -0500, Richard Guy Briggs wrote: > > > > On 2018-03-05 08:43, Mimi Zohar wrote: > > > > > Hi Richard, > > > > > > > > > > This patch has been compiled, but not runtime tested. > > > > > > > > Ok, great, thank you. I assume you are offering this patch to be > > > > included in this patchset? > > > > > > Yes, thank you. > > > > > > > I'll have a look to see where it fits in the > > > > IMA record. It might be better if it were an AUDIT_CONTAINER_INFO > > > > auxiliary record, but I'll have a look at the circumstances of the > > > > event. > > > > I had a look at the context of this record to see if adding the contid > > field to it made sense. I think the only records for which the contid > > field makes sense are the two newly proposed records, AUDIT_CONTAINER > > which introduces the container ID and the and AUDIT_CONTAINER_INFO which > > documents the presence of the container ID in a process event (or > > process-less network event). All others should use the auxiliary record > > AUDIT_CONTAINER_INFO rather than include the contid field directly > > itself. There are several reasons for this including record length, the > > ability to filter unwanted records, the difficulty of changing the order > > of or removing fields in the future. > > > > Syscalls get this information automatically if the container ID is set > > for a task via the AUDIT_CONTAINER_INFO auxiliary record. Generally a > > syscall event is one that uses the task's audit_context while a > > standalone event uses NULL or builds a local audit_context that is > > discarded immediately after the local use. > > > > Looking at the two cases of AUDIT_INTEGRITY_RULE record generation, it > > appears that they should be split into two distinct audit record types. > > > > The record created in ima_audit_measurement() is a syscall record that > > could possibly stand on its own since the subject attributes are > > present. If it remains a syscall auxiliary record it will automatically > > have the AUDIT_CONTAINER_INFO record accompany it anyways. If it is > > decided to detach it (which would save cpu/netlink/disk bandwidth but is > > not recommended due to not wanting to throw away any other syscall > > information or other involved records (PATH, CWD, etc...) then a local > > audit_context would be created for the AUDIT_INTEGRITY_RULE and > > AUDIT_CONTAINERID_INFO records only and immediately discarded. > > > > The record created in ima_parse_rule() is not currently a syscall record > > since it is passed an audit_context of NULL and it has a very different > > format that does not include any subject attributes (except subj_*=). > > At first glance it appears this one should be a syscall accompanied > > auxiliary record. Either way it should have an AUDIT_CONTAINER_INFO > > auxiliary record either by being converted to a syscall auxiliary record > > by using current->audit_context rather than NULL when calling > > audit_log_start(), or creating a local audit_context and calling > > audit_log_container_info() then releasing the local context. This > > version of the record has additional concerns covered here: > > https://github.com/linux-audit/audit-kernel/issues/52 > > > > Can you briefly describe the circumstances under which these two > > different identically-numbered records are produced as a first step > > towards splitting them into two distict records? > > Agreed, the two uses should really be separated. ?ima_parse_rule() > generates audit messages, when the IMA policy is initially loaded, > replaced, or extended, the policy rules are included in the audit log. > When IMA is namespaced, there will be a host policy and namespace > policies. ?We'll need to be able differentiate between the host policy > rules and IMA namespaced policy rules, and between IMA namespaced > policy rules. I would argue this type of message/record should be converted to an accompanied syscall record, or have the subject attributes added to the record so that it is clear what user/process initiated this action. It now occurs to me that to save audit communications and disk bandwidth, one syscall record could accompany all the rule records, but if the list is long enough it might overwhelm userspace audit event parsing code. Steve? Regardless, the ima_parse_rule() record format needs to be fixed to address the non-standard use of "<" and ">" operators instead of the standard "=" field/value separator. > The audit messages produced by ima_audit_measurement() were originally > upstreamed for forensics, and as seen by the FireEye blog are now used > to augment existing security analytics. ?These records are probably > being used independently of any other audit records. ?A single record > is generated per file, per system. ?With IMA namespacing, these > records need to be generated once per file, per namespace as well. ?In > order to differentiate the records between the host and namespace, and > between namespaces, these records should include the container id. Ok, so this might be one circumstance where the container id field could make sense to include it in the primary record, but it will already be automatically getting an AUDIT_CONTAINER_INFO record by virtue of being a syscall auxiliary record. You say "These records are probably being used independently of any other audit records.", but unless you are certain these are not used by any other tools, it will have to remain as a syscall auxiliary record. This means it will duplicate the container id info if the container id field is added to the AUDIT_INTEGRITY_RULE record or cause your tools to need to be able to parse audit *events* rather than just individual audit *records* to get the associated container id if the container id field is not added to the AUDIT_INTEGRITY_RULE. > To disambiguate between these audit messages and the policy rule > messages, we could rename these audit messages to AUDIT_INTEGRITY_IMA. This makes sense to me, but will depend on other users of this record type. Since there are already two very different formats for this one existing record type, changing the record type either doesn't matter if nothing else has noticed or this is what triggered the examination of this issue in the first place and should be fixed. > > The four AUDIT_INTEGRITY _METADATA, _PCR, _DATA and _STATUS records > > appear to be already properly covered for AUDIT_CONTAINER_INFO records > > by being syscall auxiliary records. The AUDIT_INTEGRITY_HASH record > > appears to be unused. > > Ok > > Mimi - RGB -- Richard Guy Briggs Sr. S/W Engineer, Kernel Security, Base Operating Systems Remote, Ottawa, Red Hat Canada IRC: rgb, SunRaycer Voice: +1.647.777.2635, Internal: (81) 32635