All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Biggers <ebiggers3@gmail.com>
To: "Marvin P." <theparanoidandroid@nili.ca>
Cc: linux-fsdevel@vger.kernel.org
Subject: Re: Question: read-only file access in kernel module (verify checksums)
Date: Fri, 6 Jan 2017 20:27:56 -0800	[thread overview]
Message-ID: <20170107042756.GB575@zzz> (raw)
In-Reply-To: <a95847e9266ef7f6c7bb46ddb13d33b0@nili.ca>

On Thu, Jan 05, 2017 at 04:04:52PM -0400, Marvin P. wrote:
> Good day,
> 
>     I'm going over some code in a kernel module to implement file access
> functionality in an LKM. I've gone through Grek KH's lengthy article on it,
> and noted the pitfalls (interpreting data, how one should go through sysfs
> instead, etc): all good points and duly noted. I have also opted to go with
> `filp_open()` and `vfs_read()`, and to verify if the file is safe to access
> via `locks_verify_area()`, at the advice of a fellow dev who works with file
> systems.
> 
>     One of the policy/legal requirements I have is that "all due efforts
> must be made to only allow process XYZ to access the driver". To accommodate
> this, the md5sum of the userspace process/app that talks to the driver/LKM
> is hard-coded in the kernel module at build time. When a process connects to
> the driver, the full path to the program/binary associated with the task is
> acquired via `get_task_mm()`, `d_path()`, etc, and then passed to
> `filp_open()` and `vfs_read()` to buffer the data to the Linux kernel crypto
> API. If the checksum of the program matches what is expected, access is
> permitted. Otherwise, the process is killed and the attempt logged.
> 

This seems insane for multiple reasons and easily bypassed, e.g. by making a
copy of the "allowed" binary.  Why not use a standard security mechanism such as
UNIX permissions?  For example if your module exposes its API as a device node,
make process XYZ run under a certain user or group, and only give that user or
group access to the device node.

Eric

      reply	other threads:[~2017-01-07  4:27 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-05 18:50 Question: read-only file access in kernel module (verify checksums) Marvin P.
2017-01-05 20:04 ` Marvin P.
2017-01-07  4:27   ` Eric Biggers [this message]

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=20170107042756.GB575@zzz \
    --to=ebiggers3@gmail.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=theparanoidandroid@nili.ca \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.