case 4724 - SMTP certificate checked, password never returned
Mailer checks the SMTP server's certificate (trust and name; no revocation check). New config setting AYANOVA_SMTP_ACCEPT_ANY_CERTIFICATE accepts any certificate (boot warning, shown in server info, manual page). The notification settings GET returns ******** instead of the SMTP password; a PUT with ******** or empty keeps the stored password. F30 and F31 fixed. Changelog and manual updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -210,8 +210,8 @@ take the next free number; a fixed or accepted finding keeps its ID and changes
|
||||
| F3 | High | **fixed in cases 4712 and 4723** (staff sending to any address kept, by design) | Any logged-in user, customer contacts included, can send arbitrary email through the company's SMTP server |
|
||||
| F23 | Medium | confirmed (code) | Logo upload accepts any content type and the anonymous logo route serves it inline from the app's origin (stored XSS) |
|
||||
| F24 | Medium | **fixed in case 4718** | Translation import has no role check: any login can add translations |
|
||||
| F30 | Medium | confirmed (code) | SMTP: the mail server's TLS certificate is never checked |
|
||||
| F31 | Medium | confirmed (code) | The SMTP password is returned to read-only roles (OpsAdminRestricted, BizAdmin, BizAdminRestricted) |
|
||||
| F30 | Medium | **fixed in case 4724** | SMTP: the mail server's TLS certificate is never checked |
|
||||
| F31 | Medium | **fixed in case 4724** | The SMTP password is returned to read-only roles (OpsAdminRestricted, BizAdmin, BizAdminRestricted) |
|
||||
| F32 | Medium | confirmed (code) | A real-looking SMTP account and password are in the DEBUG defaults in `raven` and `sockeye` source |
|
||||
| F34 | Medium | **fixed in case 4722** | Shipped client libraries behind on security fixes: DOMPurify 2.3.8 (wiki sanitiser), Vuetify 2.6.6 |
|
||||
| F6 | Medium | confirmed | No lockout or rate limit on login or the 2FA step; no password rules |
|
||||
@@ -647,7 +647,7 @@ so any certificate is accepted. Anyone who can intercept the connection (a hosti
|
||||
DNS) can pose as the mail server and collect the SMTP account and password and every message.
|
||||
Also, with security set to none, MailKit's `ConnectAsync(host, port, false)` uses STARTTLS only
|
||||
if offered, which an attacker can suppress. Fix: remove the callback (validate normally); if a
|
||||
customer needs a self-signed mail server, make that an explicit setting.
|
||||
customer needs a self-signed mail server, make that an explicit setting. **Fixed in case 4724 (2026-10-24):** the callback is set only when the new config setting `AYANOVA_SMTP_ACCEPT_ANY_CERTIFICATE` is true (boot warning when it is; shown in server info; manual page `ops-config-smtp-accept-any-certificate.md`). Revocation checking is off (`CheckCertificateRevocation = false`) so an unreachable revocation server can't stop email; trust and name are checked. Proved locally against a TLS listener with a self-signed certificate: refused ("root certificate which is not trusted") without the setting, accepted with it. The STARTTLS-stripping point for security None stays as chosen by the customer; the security option mapping is in Deferred.
|
||||
|
||||
### F31 SMTP password returned to read-only roles (pass 8, from code)
|
||||
|
||||
@@ -655,7 +655,7 @@ customer needs a self-signed mail server, make that an explicit setting.
|
||||
to every role with read rights on `OpsNotificationSettings`: OpsAdminRestricted, BizAdmin and
|
||||
BizAdminRestricted, while only OpsAdmin may change it. Those users can then use the company's
|
||||
mail account directly. Fix: never send the password to the client (return a "set" flag; keep the
|
||||
stored value when the PUT leaves it empty).
|
||||
stored value when the PUT leaves it empty). **Fixed in case 4724 (2026-10-24):** the GET returns `********` (entity detached first); a PUT with `********` or an empty value keeps the stored password. Test `SmtpPasswordHidden`; the stored password's fingerprint was unchanged after the round trip. Before the fix BizAdmin received the full password.
|
||||
|
||||
### F32 SMTP credentials in source (pass 8)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user