[Dovecot] [PATCH, RFC] add APOP authentication mechanism
Timo Sirainen
tss at iki.fi
Thu Jul 1 17:39:07 EEST 2004
On 1.7.2004, at 16:26, Andrey Panin wrote:
>> + if (strcmp(auth_request->protocol, "POP3")) {
>> + if (verbose)
>> + i_info("apop(%s): wrong protocol %s",
>> get_log_prefix(auth_request),
>> + auth_request->protocol);
>> + mech_auth_finish(auth_request, NULL, 0, FALSE);
>> + return TRUE;
>> + }
>>
>> I don't think there's really any point in checking this? Maybe someone
>> really wants to use APOP with another protocol :)
>
> This will be RFC violation isn't it ?
(I'll send a public reply, the last question could need input from
others)
Well, it's not compatible with any RFC of course, but I don't think it
would violate anything? I'd just rather like to avoid unnecessary code
bloat.
Well, except now that I thought about the logic instead of just the
code, there are problems. APOP prevents replay attacks by sending
different timestamp in greeting, but you're sending the greeting to
dovecot-auth as user input to APOP authentication mechanism. So, a user
could simply say "AUTH APOP" and send wanted timestamp as input.
One way to fix this would be to disallow APOP mechanism to be used with
AUTH command in pop3-login and require that the request was done with
POP3 protocol. But I think that's pretty ugly kludge. It also requires
that processes connecting to dovecot-auth are trusted, which is
something I've tried to avoid as much as possible. So dovecot-auth
doesn't really know if it's pop3-login which connects to it..
Better fix would be to get part of the timestamp from dovecot-auth
itself. It could send a growing ID number as handshake which would be
used as part of the timestamp, and APOP mechanism processing would
check that timestamp really contains the ID. So timestamp would be
<authid.unixtime at hostname>. That also makes the PID go away, which was
another thing I would have suggested.
POP3 RFC also says:
It is conjectured that use of the APOP command provides origin
identification and replay protection for a POP3 session.
Accordingly, a POP3 server which implements both the PASS and APOP
commands should not allow both methods of access for a given user;
that is, for a given mailbox name, either the USER/PASS command
sequence or the APOP command is allowed, but not both.
But I don't know if there's any nice way to do it, except perhaps by
defining APOP password scheme which would actually be plaintext but
wouldn't work with anything but APOP authentication. Do any other
servers prevent it either?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
URL: <http://dovecot.org/pipermail/dovecot/attachments/20040701/c1dff077/attachment-0001.bin>
More information about the dovecot
mailing list