mirror of
https://blitiri.com.ar/repos/chasquid
synced 2026-10-29 15:02:30 +00:00
Reject invalid characters in domains
Domains in addresses had very lax validation, which allowed them to include characters like "/". That could be exploited to trigger a daemon panic: a MAIL FROM "x@evil/foo" could be accepted and, on failed delivery, a DSN queued. Attempting to deliver the DSN would cause an MTA-STS cache lookup, which would panic because the domain includes a "/" and crash the server. Because the DSN would be queued, the server would crash again on restarts, and only self-recover after give_up_send_after (20h by default). To fix this, we now explicitly validate the domain when normalizing it, make MTA-STS cache not panic on invalid domains, and also make the SMTP courier fail permanently on invalid domains. Thanks to John JEAN <john@wargan.com> for finding and reporting this problem. The detailed report can be found in https://johnjean.io/advisories/chasquid-unauthenticated-remote-dos/.
This commit is contained in:
@@ -47,6 +47,7 @@ func TestDecodeResponse(t *testing.T) {
|
||||
"", "\x00", "\x00\x00", "\x00\x00\x00", "\x00\x00\x00\x00",
|
||||
"a\x00b", "a\x00b\x00c", "a@a\x00b@b\x00pass",
|
||||
"\xffa@b\x00\xffa@b\x00pass",
|
||||
"u@a/b\x00\x00pass", "u@[1.2.3.4]\x00\x00pass",
|
||||
}
|
||||
for _, c := range failedCases {
|
||||
r := base64.StdEncoding.EncodeToString([]byte(c))
|
||||
|
||||
Reference in New Issue
Block a user