Re: [audit] c4dad0aab3: canonical_address#:#[##]

2020-08-15 Thread Paul Moore
On Fri, Aug 14, 2020 at 7:09 PM Richard Guy Briggs  wrote:
> On 2020-08-09 14:36, kernel test robot wrote:
> > Greeting,
> >
> > FYI, we noticed the following commit (built with clang-12):
> >
> > commit: c4dad0aab3fca0c1f0baa4cc84b6ec91b7ebf426 ("audit: tidy and extend 
> > netfilter_cfg x_tables")
> > https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git master
> >
> >
> > in testcase: trinity
> > with following parameters:
> >
> >   runtime: 300s
> >
> > test-description: Trinity is a linux system call fuzz tester.
> > test-url: http://codemonkey.org.uk/projects/trinity/
> >
> >
> > on test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 
> > 16G
> >
> > caused below changes (please refer to attached dmesg/kmsg for entire 
> > log/backtrace):
>
> This looks odd to me.  I don't see any audit involved in this and I've
> heard other complaints that this bot has appeared to mis-attribute other
> errors.  I had a quick look before I went on vacation a week ago and was
> back today briefly.  I'll be away until the 24th and won't be able to
> look before then.

I am just getting back to normal network access myself, but I did have
a brief exchange with Richard about this and I agree it looks a bit
odd.

--
paul moore
www.paul-moore.com

--
Linux-audit mailing list
Linux-audit@redhat.com
https://www.redhat.com/mailman/listinfo/linux-audit



Re: [dm-devel] [RFC PATCH v5 00/11] Integrity Policy Enforcement LSM (IPE)

2020-08-15 Thread Chuck Lever



> On Aug 13, 2020, at 11:10 AM, James Bottomley 
>  wrote:
> 
> On Thu, 2020-08-13 at 10:42 -0400, Chuck Lever wrote:
>>> On Aug 12, 2020, at 11:51 AM, James Bottomley >> enPartnership.com> wrote:
>>> On Wed, 2020-08-12 at 10:15 -0400, Chuck Lever wrote:
> On Aug 11, 2020, at 11:53 AM, James Bottomley
>  wrote:
> On Tue, 2020-08-11 at 10:48 -0400, Chuck Lever wrote:
> [...]
 The client would have to reconstruct that tree again if
 memory pressure caused some or all of the tree to be
 evicted, so perhaps an on-demand mechanism is preferable.
>>> 
>>> Right, but I think that's implementation detail.  Probably
>>> what we need is a way to get the log(N) verification hashes
>>> from the server and it's up to the client whether it caches
>>> them or not.
>> 
>> Agreed, these are implementation details. But see above about
>> the trustworthiness of the intermediate hashes. If they are
>> conveyed on an untrusted network, then they can't be trusted
>> either.
> 
> Yes, they can, provided enough of them are asked for to
> verify.  If you look at the simple example above, suppose I
> have cached H11 and H12, but I've lost the entire H2X layer.  I
> want to verify B3 so I also ask you for your copy of H24.  Then
> I generate H23 from B3 and Hash H23 and H24.  If this doesn't
> hash to H12 I know either you supplied me the wrong block or
> lied about H24.  However, if it all hashes correctly I know you
> supplied me with both the correct B3 and the correct H24.
 
 My point is there is a difference between a trusted cache and an
 untrusted cache. I argue there is not much value in a cache where
 the hashes have to be verified again.
>>> 
>>> And my point isn't about caching, it's about where the tree comes
>>> from. I claim and you agree the client can get the tree from the
>>> server a piece at a time (because it can path verify it) and
>>> doesn't have to generate it itself.
>> 
>> OK, let's focus on where the tree comes from. It is certainly
>> possible to build protocol to exchange parts of a Merkle tree.
> 
> Which is what I think we need to extend IMA to do.
> 
>> The question is how it might be stored on the server.
> 
> I think the only thing the server has to guarantee to store is the head
> hash, possibly signed.
> 
>> There are some underlying assumptions about the metadata storage
>> mechanism that should be stated up front.
>> 
>> Current forms of IMA metadata are limited in size and stored in a
>> container that is read and written in a single operation. If we stick
>> with that container format, I don't see a way to store a Merkle tree
>> in there for all file sizes.
> 
> Well, I don't think you need to.  The only thing that needs to be
> stored is the head hash.  Everything else can be reconstructed.  If you
> asked me to implement it locally, I'd probably put the head hash in an
> xattr but use a CAM based cache for the merkel trees and construct the
> tree on first access if it weren't already in the cache.

The contents of the security.ima xattr might be modeled after
EVM_IMA_DIGSIG:

- a format enumerator (used by all IMA metadata formats)
- the tree's unit size
- a fingerprint of the signer's certificate
  - digest algorithm name and full digest
- the root hash, always signed
  - signing algorithm name and signature

The rest of the hash tree is always stored somewhere else or
constructed on-demand.

My experience of security communities both within and outside the
IETF is that they would insist on always having a signature.

If one doesn't care about signing, a self-signed certificate can be
automatically provisioned when ima-evm-utils is installed that can
be used for those cases. That would make the signature process
invisible to any administrator who doesn't care about signed
metadata.

Because storage in NFS would cross trust boundaries, it would have
to require the use of a signed root hash. I don't want to be in the
position where copying a file with an unsigned root hash into NFS
makes it unreadable because of a change in policy.


> However, the above isn't what fs-verity does: it stores the tree in a
> hidden section of the file.  That's why I don't think we'd mandate
> anything about tree storage.  Just describe the partial retrieval
> properties we'd like and leave the rest as an implementation detail.

I'm starting to consider how much compatibility with fs-verity is
required. There are several forms of hash-tree, and a specification
of the IMA metadata format would need to describe exactly how to
form the tree root. If we want compatibility with fs-verity, then
it is reasonable to assume that this IMA metadata format might be
required to use the same hash tree construction algorithm that
fs-verity uses.

The original Merkle tree concept was patented 40 years ago. I'm not
clear yet on whether the patent encumbers the use of Merkle trees
in any way, but sin