Re: TALPA - a threat model? well sorta.

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Eric Paris <eparis@...>
Cc: <linux-kernel@...>, <malware-list@...>, <andi@...>, <riel@...>, <greg@...>, <tytso@...>, <viro@...>, <alan@...>, <peterz@...>, <hch@...>
Date: Wednesday, August 13, 2008 - 1:39 pm

On Wed, 13 Aug 2008 12:36:15 -0400
Eric Paris <eparis@redhat.com> wrote:

[finally good description snipped]


this is kind of the last question to ask, not the first ;)


setuid apps do not use glibc? news to me.


[so lets ignore this one]

 

I agree about the "read" case.
"write" is tricky... because there's many vectors to write, from
write() system call to mmap() system call to truncate() system call.
(yes you can write a stream of bytes that passes virus scan, and then
truncate to be suddenly a live virus)

I would propose to use the word "dirty" instead, we all know what we
mean by that (it's all of them) and doesn't tie our thinking to the
write() system call.

I would like to introduce a concept in your discussion you did not
mention yet in this email: the difference between synchronous scanning
and asynchronous scanning.

It's clear from the protection model that you described that on 'read'
you want to wait until the scan is done before you give the data to the
process asking for it... and that's totally reasonable: "Do not give
out bad data" is a very clear line in terms of security.

for the "dirty" case it gets muddy. You clearly want to scan "some
time" after the write, from the principle of getting rid of malware
that's on the disk, but it's unclear if this HAS to be synchronous.
(obviously, synchronous behavior hurts performance bigtime so lets do
as little as we can of that without hurting the protection).
One advantage of doing the dirty case async (and a little time delayed)
is that repeated writes will get lumped up into one scan in practice,
saving a ton of performance.
(scan-on-close is just another way of implementing "delay the dirty
scan").
Based on Alans comments, to me this sounds like we should have an
efficient mechanism to notify userspace of "dirty events"; this is not
virus scan specific in any way or form. And this mechanism likely will
need to allow multiple subscribers.

for the open() case, I would argue that you don't need synchronous
behavior as long as the read() case is synchronous. I can imagine that
open() kicks off an async scan, and if it's done by the time the first
read() happens, no blocking at all happens.


For efficiency the kernel ought to keep track of which files have been
declared clean, and it needs to track of a 'generation' of the scan
with which it has been found clean (so that if you update your virus
definitions, you can invalidate all previous scanning just by bumping
the 'generation' number in whatever format we use). 
Clearly the kernel needs to wipe this clean generation number on any
modification to the file (inode) of any kind. And clearly this needs to
be done inside the kernel because tracking dirty operations in any
other way is just insane.


Now this to me we have a few basic building blocks:
1) We need an efficient mechanism to notify userspace of files that get
dirtied. Virus scanners will subscribe to this for the async dirty
scanning; indexing agents also will subscribe to this.
2) We very likely should have a mechanism for a userspace app to
request a scan on a file, both sync or async (O_SYNC flag?). This is
useful regardless because it allows the source of many things to do the
right thing.
3) we need a mechanism in the kernel to track "scanned with generation
X of signatures" that invalidates on any dirty operation. The syscall
from 2) will use this as a cache to be quick.

I think few people will disagree about this.

Open questions now are
4) do we have the kernel kick off an async scan in open() or do we have
glibc do this
5) do we have the kernel do the sync scan on read/mmap/.. or do we have
glibc do this

I think this is where the whole debate is about now.


And a few hard ones
6) how do we deal with multiple scanning agents in parallel
7) how do we prevent malware from pretending to be a virus scanner



-- 
If you want to reach me at my work email, use arjan@linux.intel.com
For development, discussion and tips for power savings, 
visit http://www.lesswatts.org
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
TALPA - a threat model? well sorta., Eric Paris, (Wed Aug 13, 12:36 pm)
Re: TALPA - a threat model? well sorta., 7v5w7go9ub0o, (Wed Aug 13, 8:14 pm)
Re: TALPA - a threat model? well sorta., 7v5w7go9ub0o, (Wed Aug 13, 10:25 pm)
Re: TALPA - a threat model? well sorta., Andi Kleen, (Wed Aug 13, 2:17 pm)
Re: TALPA - a threat model? well sorta., Mihai , (Wed Aug 13, 8:18 pm)
RE: [malware-list] TALPA - a threat model? well sorta., Press, Jonathan, (Thu Aug 14, 7:58 am)
Re: TALPA - a threat model? well sorta., Eric Paris, (Wed Aug 13, 2:40 pm)
Re: TALPA - a threat model? well sorta., H. Peter Anvin, (Wed Aug 13, 2:21 pm)
Re: TALPA - a threat model? well sorta., Arjan van de Ven, (Wed Aug 13, 2:24 pm)
Re: TALPA - a threat model? well sorta., Arjan van de Ven, (Wed Aug 13, 1:39 pm)
Re: TALPA - a threat model? well sorta., Pavel Machek, (Fri Aug 15, 12:06 pm)
Re: TALPA - a threat model? well sorta., Pavel Machek, (Mon Aug 18, 9:30 am)
Re: TALPA - a threat model? well sorta., Eric Paris, (Wed Aug 13, 2:57 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Arjan van de Ven, (Thu Aug 14, 9:46 am)
Re: TALPA - a threat model? well sorta., Arjan van de Ven, (Wed Aug 13, 5:39 pm)
Re: TALPA - a threat model? well sorta., Eric Paris, (Thu Aug 14, 10:12 am)
Re: TALPA - a threat model? well sorta., Helge Hafting, (Fri Aug 15, 6:07 am)
Re: TALPA - a threat model? well sorta., Peter Zijlstra, (Fri Aug 15, 6:37 am)
RE: [malware-list] TALPA - a threat model? well sorta., Press, Jonathan, (Fri Aug 15, 9:10 am)
Re: [malware-list] TALPA - a threat model? well sorta., Helge Hafting, (Mon Aug 18, 6:02 am)
RE: [malware-list] TALPA - a threat model? well sorta., Press, Jonathan, (Fri Aug 15, 12:30 pm)
RE: [malware-list] TALPA - a threat model? well sorta., Press, Jonathan, (Fri Aug 15, 1:40 pm)
RE: [malware-list] TALPA - a threat model? well sorta., Press, Jonathan, (Fri Aug 15, 2:17 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Theodore Tso, (Fri Aug 15, 4:17 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Theodore Tso, (Fri Aug 15, 1:04 pm)
RE: [malware-list] TALPA - a threat model? well sorta., Press, Jonathan, (Fri Aug 15, 2:09 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Helge Hafting, (Mon Aug 18, 6:09 am)
Re: [malware-list] TALPA - a threat model? well sorta., Peter Zijlstra, (Mon Aug 18, 6:14 am)
Re: TALPA - a threat model? well sorta., Arjan van de Ven, (Thu Aug 14, 11:57 am)
Re: TALPA - a threat model? well sorta., Theodore Tso, (Wed Aug 13, 2:15 pm)
Re: TALPA - a threat model? well sorta., Eric Paris, (Wed Aug 13, 3:02 pm)
Re: TALPA - a threat model? well sorta., Theodore Tso, (Wed Aug 13, 3:29 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Theodore Tso, (Thu Aug 14, 9:24 am)
Re: [malware-list] TALPA - a threat model? well sorta., Theodore Tso, (Thu Aug 14, 11:50 am)
Re: [malware-list] TALPA - a threat model? well sorta., Pavel Machek, (Fri Aug 15, 10:37 am)
Re: [malware-list] TALPA - a threat model? well sorta., Theodore Tso, (Thu Aug 14, 3:17 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Christoph Hellwig, (Thu Aug 14, 3:34 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Theodore Tso, (Thu Aug 14, 3:41 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Theodore Tso, (Thu Aug 14, 10:04 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Arjan van de Ven, (Thu Aug 14, 11:41 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Johannes Weiner, (Fri Aug 15, 1:12 am)
Re: [malware-list] TALPA - a threat model? well sorta., Christoph Hellwig, (Thu Aug 14, 4:20 pm)
Re: [malware-list] TALPA - a threat model? well sorta., J. Bruce Fields, (Thu Aug 14, 5:21 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Theodore Tso, (Thu Aug 14, 7:34 pm)
Re: [malware-list] TALPA - a threat model? well sorta., J. Bruce Fields, (Tue Aug 19, 5:43 pm)
RE: [malware-list] TALPA - a threat model? well sorta., Press, Jonathan, (Thu Aug 14, 8:03 am)
Re: [malware-list] TALPA - a threat model? well sorta., Pavel Machek, (Fri Aug 15, 10:31 am)
RE: [malware-list] TALPA - a threat model? well sorta., Press, Jonathan, (Wed Aug 13, 5:15 pm)
Re: TALPA - a threat model? well sorta., Arjan van de Ven, (Wed Aug 13, 2:21 pm)
Re: TALPA - a threat model? well sorta., Greg KH, (Wed Aug 13, 12:57 pm)
Re: TALPA - a threat model? well sorta., Alan Cox, (Wed Aug 13, 12:24 pm)
Re: TALPA - a threat model? well sorta., Arnd Bergmann, (Thu Aug 14, 9:00 am)
Re: TALPA - a threat model? well sorta., Christoph Hellwig, (Wed Aug 13, 1:07 pm)
Re: TALPA - a threat model? well sorta., Eric Paris, (Wed Aug 13, 12:47 pm)
Re: TALPA - a threat model? well sorta., Alan Cox, (Wed Aug 13, 12:37 pm)
Re: TALPA - a threat model? well sorta., Eric Paris, (Wed Aug 13, 1:00 pm)
Re: TALPA - a threat model? well sorta., Alan Cox, (Wed Aug 13, 3:59 pm)
RE: [malware-list] TALPA - a threat model? well sorta., Press, Jonathan, (Wed Aug 13, 5:24 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Rik van Riel, (Wed Aug 13, 5:35 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Arjan van de Ven, (Fri Aug 15, 6:05 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Rik van Riel, (Mon Aug 18, 12:43 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Arjan van de Ven, (Sun Aug 17, 7:26 pm)
Re: [malware-list] TALPA - a threat model? well sorta., David Collier-Brown, (Sun Aug 17, 5:11 pm)
Re: [malware-list] TALPA - a threat model? well sorta., Eric Paris, (Thu Aug 14, 11:25 pm)