> As I discovered (to my chagrin) Mailman's current simple RFC
> 2369 List-Unsubscribe field doesn't, even for personalized lists where
> there might be a personalized link in the footer.

My understanding from up-thread is that the RFC 2369 headers are added 
pre-personalization.

> The token would be the
> encrypted (list, address) pair, possibly dated in clear (to allow
> expiration of tokens and rotation of encryption keys).  Unfortunately
> RFC 8058 doesn't discuss that, I guess John assumed that people would
> usually be unsubscribing from the most recent post.

I don't think we can assume that it will be the most recent post, but it would 
likely be _a_ recent post.  If we add a timestamp to the encrypted token I 
suggest there should be a pretty broad window allowed (i.e. several months).

> On the assumption
> that unsubscribes would be "rare", you wouldn't have to store the
> token in the database.  (Have to think about that, you might be able
> to DOS attack by sending lots of fake unsubscribes and attack the
> encryption with known plaintext attacks.  Safety would suggest adding
> a random nonce and that would need to be saved in the database.)

Do you just mean a salt?  Or are you suggesting adding a per-subscription nonce 
stored in the DB? (In which case, that could simply be the URI token...)  I 
agree with your analysis, but this would be a very specialized attack, 
especially if we don't provide direct feedback on if the request was successful 
(which we are not required to do).  I have trouble constructing a practical 
threat here and I think the encrypted tuple, or a plaintext tuple and truncated 
HMAC (like how SRS works) would be sufficient.

The real risk without a per-subscription random unique identifier would be a 
replay attack -- the user is unsubscribed multiple times? That feels outside of 
the threat model.
 
> Alternatively, you could reverse proxy this directly through the
> front-end webserver to Mailman core with a new REST endpoint.  That
> gives me bad vibes because I can just see naive admins messing up the
> configuration of the single endpoint, and "fixing" the problem by
> reverse proxying port 8001 to the Internet.  We'd have to be careful
> that the urlconf not slop over to anything else, maybe something like
> "listen" on the Internet at (nginx notation):
> 
>    location /mailman3/rfc8058/ {
>        proxy_pass http://localhost:8001/3.2/PROXIED/rfc8058;
>        }
> 
> The "PROXIED" part is just to provide a REST namespace that is
> obviously separate from the domains, addresses, users, lists, etc.
> Maybe "SELF_AUTHORIZING" would be more accurate.  I think that reverse
> proxy sepcification would be safe enough.
> 
> And you could combine the two strategies which would allow sites that
> don't use Postorius to configure the reverse proxy, while sites that
> do would get it for "free" since we'd configure Postorius to do it.

I hadn't considered this -- I definitely like this approach because it means 
the same function need not be implemented twice, differently.  I guess the big 
question is now just what the simplest content of the URI should be.
 
> Aside:  RFC 8058 says
> 
>   But anti-spam software often fetches all resources in mail header
>   fields automatically, without any action by the user, and there is
>   no mechanical way for a sender to tell whether a request was made
>   automatically by anti-spam software or manually requested by a
>   user.
> 
> Weirdly, the RFC doesn't address this problem at all. :-(

This has always been the risk with single-click anything.   Given how common 
this is as a use case, I believe that the anti-spam/anti-phishing systems have 
stopped clicking links willy-nilly, or at least special case List-Unsubscribe 
URIs.  I also see that inbound mail filters these days are more likely to 
rewrite clickable links to bounce through a redirector so the scan happens at 
access (rather than receipt) time -- so the link is only proxy-clicked when the 
user does intend to do so.

A bigger threat might be web archives that include the list headers and 
clickable links.  The GenAI companies are absolutely _hammering_ anything they 
can get a hold of with spiders that ignore all robots.txt or rate limit 
indicators.  I have to keep blocking user agents and IP ranges because I'm 
spending $100s/month in excess egress fees on badly-written LLM spiders.  The 
Internet is an increasingly hostile place.

Regardless, not something we can do much about.

--Jered

_______________________________________________
Mailman-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
Archived at: 
https://lists.mailman3.org/archives/list/[email protected]/message/ZYCZHF3UCFJUWSNAPFWZIYC3JY4URN7Q/

This message sent to [email protected]

Reply via email to