RE: CBV

"Seth Goodman" <[email protected]>
Newsgroups gmane.mail.spam.srs.general
Message-ID <[email protected]>
> From: Stuart D. Gathman
> Sent: Friday, May 07, 2004 2:22 PM
>
>
> On Fri, 7 May 2004, Seth Goodman wrote:
>
> > > > The key problems with SES seem to be EITHER:
> > > >
> > > > a) If a spammer gets hold of an SES source address, he has a
> > > > free ticket
> > > > to spam people using replay
> > >
> > > In conjuction with SPF, an SES or SRS source address only allows
> > > the spammer
> > > to spam 1 particular recipient for a limited time via a forged
> > > bounce.  An SES
> > > source is not a general relay ticket.  It is true that without SPF,
> > > general spam victims that only check CBV will for a limited
> > > time be tricked into thinking the sender is genuine.
> >
> > That's the vulnerability that we attempted to address by incorporating a
> > body hash in the MAIL FROM:.  The recipient can detect that the message
> > content does not belong with that MAIL FROM: and can reject the message,
> > albeit at the end of DATA.
>
> If I have to go through the DATA phase, there is no clear advantage to the
> SPF/SES scheme over bayesian filtering.  I really really don't
> want SES to
> have anything to do with the DATA phase.  I am fine with additional
> signatures for messages headers and body contained in some message
> header.  I.e., if you need to get the message DATA anyway, you
> might as well
> store the signature in the DATA, and not have to worry about
> local-part size
> limits and crud.

Nobody wants this, but there is a vulnerability to replay attacks.  Maybe
we've given it too much airtime, since the vulnerability only really exists
for promiscuous sales type accounts that send mail to anyone who asks.  For
regular email accounts, if you don't send mail directly to spammers, you
won't get your signature harvested.  Just as is the case with SRS-signed
addresses and Bcc: headers, the receiving MTA is expected to strip out those
things and not pass them on to the MUA's.  This is also true for mailing
lists and web archivers.  Just like it is today, don't send mail to spammers
unless you want spam, joe-jobs and grief.

The reason the body hash can't be stored in with the data is that what we
are trying to foil is a replay attack.  Someone harvests your SES-signed
address and uses it to send new message content purporting it is from you.
Since the CBV will pass, this is a vulnerability, though only for certain
types of accounts.

Despite the need to go through the DATA phase if the CBV checks out, this is
still a lot better than Bayesian filtering, which I currently use and am a
great fan of.  First of all, it detects forgeries with no false positives,
no false negatives, no per-user databases, no user intervention and it takes
a lot fewer CPU cycles.  A CBV pass followed by a body hash validation
doesn't tell you that the message isn't spam.  It only tells you that it was
sent by the party in the return path, but it does so with a very high degree
of confidence, much higher than with SPF+SRS.  Because of this, an SES pass
plus a listing on a sender whitelist means you can accept the message with
no further checks.  For non-whitelisted senders, or senders who do not sign
their outgoing mail, you will still need to run the Bayesian filters.

FWIW, the body hash is not all that bad, though I fundamentally dislike
anything after DATA, just as you do.  You still do the CBV before data, and
that should stop most forgeries.  The body hash is only used to make sure
that the MAIL FROM: is not a replay of a harvested address with a new
message attached.  If you detect that the message content does not match the
hash in MAIL FROM:, you would have to reject at the end of DATA, which is
distasteful to many of us.  The simple fact that the body hash is there
would make it useless for anyone else to harvest a SES-signed MAIL FROM: and
use it to joe-job you.  That won't stop them, just like publishing an SPF
record does not stop anyone from joe-jobbing you, but as it becomes less
effective, it will be attempted less.

I would like to find a better way to deal with this vulnerability,
preferably one that did not require a database at the sending end.  Another
possibility is to recognize that the problem only exists for a small number
of promiscuous accounts.  We could provide the option for them to add a
database key to their MAIL FROM: and be prepared to invalidate that key if
someone perpetrates a joe-job using a harvested address.  Everyone else
would not have to go to this trouble since they don't send mail to spammers.
This isn't a perfect solution, but I'm just thinking out loud.

>
> However, here is an idea (which has probably been tossed out before
> but I missed it).  You could have the SES signature cover the recipient.
> Then the spammer would only be able to spam himself.  The drawback is
> that for multiple recipients, the signature would be different
> for each one,
> possibly requiring extra copies of the message.
>
> The CBV would work with the recipient sending the recipient as MAIL FROM
> and the sender as RCPT TO.
>
> You could avoid copying the message for multiple recipients by creating
> a database record listing all the recipients for each message,
> and encoding a
> key to that record in the SES.


This particular one hasn't been brought up before, and it's very clever.
The only difficulty is that recipient addresses change when they go through
forwarding hops and the sender has no way of knowing what those new
addresses are.  I can't think of a way around this particular limitation,
but if you can, it would be a much better way to avoid replay attacks.

--

Seth Goodman
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.