From: "Török Edwin" <edwintorok@gmail.com>
To: Russell Coker <russell@coker.com.au>
Cc: "SE-Linux" <selinux@tycho.nsa.gov>
Subject: Re: clamav RWX
Date: Mon, 12 Jul 2010 14:01:30 +0300 [thread overview]
Message-ID: <20100712140130.468b7b42@debian> (raw)
In-Reply-To: <201007121922.48247.russell@coker.com.au>
On Mon, 12 Jul 2010 19:22:47 +1000
Russell Coker <russell@coker.com.au> wrote:
> cli_bytecode_init_jit() in libclamav/c++/bytecode2llvm.cpp in the
> clamav source tree has the following:
>
> sys::MemoryBlock B = sys::Memory::AllocateRWX(4096, NULL,
> &ErrMsg); if (B.base() == 0) {
> errs() << MODULE << ErrMsg << "\n";
> #ifdef __linux__
> errs() << MODULE << "SELinux is preventing 'execmem' access.
> Run 'setsebool -P clamd_use_jit on' to allow access\n";
> #endif
> errs() << MODULE << "falling back to interpreter mode\n";
> return 0;
> } else {
> sys::Memory::ReleaseRWX(B);
> }
>
> The fact that the developers assumed that SE Linux is the only
> mechanism that prevents RWX access is interesting.
SELinux seems to be the only one which prevents RWX in a "nice
way" (i.e. mmap of RWX fails), which allows for ClamAV to fallback to
non-JIT mode [*].
PaX for example allows the mapping and just kills the program when RWX
is attempted.
>
> Now the boolean in question only applies to the clamd_t domain not
> the freshclam_t domain, but for some reason freshclam uses the jit
> anyway.
Starting with 0.96.1 freshclam loads the databases to test them, that
is why it suddenly needs the JIT.
> Should we put in a dontaudit rule for freshclam_t or include
> it in the boolean section so that it gets execmem access if clamd_t
> gets it?
IMHO clamd, clamscan and freshclam's execmem should be controlled
by the same boolean.
>
> Also on my system the error message about SE Linux doesn't seem to
> get written to the log file, so I only found it by reading the source.
>
Yes, unfortunately libclamav doesn't have access to clamd's logfile,
and clamd redirects stderr to /dev/null.
That might change in a future release.
[*]
I have some plans to make the JIT work without RWX, since ClamAV has 2
phases:
- load DB, JIT compile bytecode (should use only RW- mapping, but
currently needs RWX)
- execute (JIT compiled) bytecode (should change mapping to be R-X)
It requires some changes to the JIT though (it still emits some stubs
that need RWX during the DB load).
Best regards,
--Edwin
--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.
next prev parent reply other threads:[~2010-07-12 11:01 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-12 9:22 clamav RWX Russell Coker
2010-07-12 11:01 ` Török Edwin [this message]
2010-07-12 11:48 ` Eric Paris
2010-07-12 12:08 ` Russell Coker
2010-07-12 12:45 ` Török Edwin
2010-07-12 14:32 ` Martin Orr
2010-07-12 14:35 ` Török Edwin
2010-07-29 11:42 ` Martin Orr
2010-07-12 12:55 ` Török Edwin
2010-07-12 16:31 ` Stephen Smalley
2010-07-12 18:08 ` Török Edwin
2010-07-12 20:26 ` Stephen Smalley
2010-07-13 6:29 ` Török Edwin
2010-07-13 6:41 ` Russell Coker
2010-09-23 20:12 ` Török Edwin
2010-07-13 15:26 ` Stephen Smalley
2010-07-12 21:32 ` Russell Coker
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=20100712140130.468b7b42@debian \
--to=edwintorok@gmail.com \
--cc=russell@coker.com.au \
--cc=selinux@tycho.nsa.gov \
/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.