Re: Summary of Issues Raised to date

Bill Yerazunis <[email protected]> Sat, 20 Mar 2004 07:42:49 -0500
Newsgroups gmane.ietf.asrg.filtering
Message-ID <[email protected]>
   From: Laird Breyer <[email protected]>

[...]

   I agree it's safe, but it's insidious for filter chains. Suppose a
   paranoid user has crm114, bogofilter, ifile chained together (or maybe
   those sit at three mail servers along the way).

   If crm114 adds the ADV: subject tag, then afterwards, bogofilter can't
   trust this tag itself. Maybe it agrees with crm114, maybe it's one of
   those rare cases where they differ. What's a bogo to do? If it removes
   the tag, maybe ifile down the line adds it again. However, if any
   filter is known to remove the ADV: tag, then spammers will realize
   that it's more of a shoot-yourself-in-the-foot-and-maybe-miss kind of
   tag.

   I don't know what all the possible solutions are. I've argued in
   another thread that the filter can automatically remove all known
   tags first, then replace them with its own.

   For example, crm114 first removes the ADV: tag if it finds it, then
   adds it if it's appropriate. bogofilter does the same, ifile does the
   same. This way, spammers can't control the filter decisions by
   spoofing. The drawback is that there's no integration or cooperation
   between filters, and the last one in the chain is the authoritative one.

Yep- and all prior ones are disregarded.

   Another way could be for crm114 to leave a message for subsequent
   filters inside the headers. The subsequent filters would read the
   message, and know what crm114 did, then add their own stuff
   nondestructively. For this it must be impossible for spammers to spoof
   crm114's message to other filters. The mechanics of this are up for grabs.

Two things:

1) if each filter specifies not only that it's found spam, but it's
own identity, then later filters can use that information as 
significant but not definitive.

For example, CRM114 uses:

    X-CRM114-Status: SPAM and
    X-CRM114-Status: Good

If the your later filters toss all 'X-CRM114-Status: Good" headers,
but consider "X-CRM114-Status: SPAM" headers as significant but
not definitive, then the last filter in the chain _can_ use the
CRM114 result without fear of spoofing.

2) CRM114 does have a fairly secure way of creating a nonspoofable
header; either the inbuilt fast string hashing or MD5 callout can
be used to create a one-way authentication that later processes can
easily check.

       -Bill Yerazunis