[MlMt] MailMate passed the CASA tier 2 security assessment (hurrah?)
Benny Kjær Nielsen
mailinglist at freron.com
Wed Apr 9 09:04:48 EDT 2025
**Note:** This email is important for all Gmail users. You should read
(the last part of) it before May 7, 2025.
---
Hi MailMate users,
as some of you might remember, MailMate went through a CASA tier 2
assessment last year in order to be able to continue to use OAuth
authentication with Gmail accounts. It was no secret that this was going
to be a yearly task going forward, but this year it comes with a twist:
It's no longer free.
For my general thoughts on the subject, I strongly recommend my previous
email on the subject (the one I've replied to here). Here's a direct
[link to the
archive](https://lists.freron.com/mailmate/2024-June/017271.html).
The most important part of this email is the last part. Skip ahead to
“**Gmail support in the future**” if you are short on time. The rest
is just me ranting in an attempt to collect my thoughts on the subject.
---
### Pricing
The assessment has to be done by a [CASA authorized
lab](https://appdefensealliance.dev/casa/casa-assessors) (most of them
do not advertise pricing). Google does have a preferred partner for
which they have negotiated a discount. As they write to me: “While
this means that you will incur a small cost, paid to an independent
assessor, we’ve worked hard to make sure this doesn’t pose an undue
burden.”
This discounted pricing is publicly available
[here](https://casa.tacsecurity.com/site/home). At the time of writing
pricing is between $540 and $1800 (without the discount it's between
$1800 and $6300). I *think* at the highest price point it means that you
pay for being recertified once a year *forever*, but business-wise that
doesn't make much sense to me.
Given that MailMate is at a crossroads where I'm waiting to see how the
[new pricing
model](https://blog.freron.com/2024/new-license-key-system/) works out,
I *do* mind the requirement for paying for recertifications, but my main
issue with CASA tier 2 for a desktop email client is that I don't think
it provides users with anything of real value. On the contrary, I think
it provides users with a false sense of security -- and I end up
spending both money and valuable time on this every year instead of
actually working on improving MailMate.
---
### Assessment/Certification
I wrote about what this actually means in the email from [last
year](https://lists.freron.com/mailmate/2024-June/017271.html), but I
would like to emphasize the following point.
There’s no way of knowing if MailMate will pass the assessment this
year or in future years -- and it might not really be possible to do
anything about it. MailMate is a very complex application with a lot of
third party dependencies. For example, it might be decided that MailMate
is using a framework which is no longer considered sufficiently secure
for Gmail access, but it’s needed to support older macOS releases.
They might decide that one cannot use any programming languages for
which there does not exist a code scanner which can find
vulnerabilities. Also, the process includes a self-scan of the source
code, but the method used for this last year seems to be
[deprecated](https://appdefensealliance.dev/casa/tier-2/tooling-matrix)
now. There might not exist a way to do this which does not require
providing some company with access to all source code of MailMate. I'm
not sure I'm willing to do that although I guess that would also mean
that Apple, Microsoft, and every other email client developer out there
would have to do the same thing.
Note that I'm not saying code scanning is bad. You are welcome to
recommend the use of any tool you think would be useful in my build
process. As required by Apple, MailMate uses a [hardened
runtime](https://developer.apple.com/documentation/security/hardened-runtime?language=objc).
While developing I use an [address
sanitizer](https://clang.llvm.org/docs/AddressSanitizer.html) and
[library
hardening](https://developer.apple.com/xcode/cpp/#library-hardening).
Recently, I also enabled the latter in its “fast” mode for test
builds.
---
### Trust
I could write a lot about the current CASA assessment being mostly
irrelevant for a desktop email client, but this is not my primary
critique CASA. In theory the assessment could be a really good process
and the source code scanners might actually be able to find issues in
MailMate code, but this does not mean that a user should put more
*trust* into a verified app than a non-verified app when authenticating
via OAuth. This is because the assessment is entirely done in “good
faith”. The developer can lie through the whole thing and all you
really know when an app is verified is that the developer paid for it.
Would this be better if the developer was not allowed to self-assess it?
No, even if sending the source code elsewhere for assessment, the
developer would still be in control of the source code sent.
In any case, the assessment provides no protection against any issues
introduced *after* the assessment, that is, the entire source code could
be replaced and it would have no effect on the verification status
(until the next assessment).
By contrast, the hardening required by Apple is verified for every
upload/release of MailMate. This is a real safety measure not based on
“good faith”.
---
### OAuth
It's also useful to return to what we are really trying to do here. The
problem with the old authentication methods for IMAP/SMTP was that they
were mostly username/password based. If someone stole/guessed your
password then your account could be misused from anywhere. The OAuth
method is more flexible and it allows the introduction of 2FA making
access to your account much safer. The email client never knows your
password, but it does get a refresh token instead. If this is stolen
then you have the same problem as before unless the refresh token is
often updated (only Fastmail does this in the implementations I have
seen). Using OAuth to be able to use 2FA is a great idea. No complaints
from me. Note that a general standardization of the use of OAuth for
desktop apps (native clients) is a
[work-in-progress](https://datatracker.ietf.org/doc/html/draft-ietf-mailmaint-oauth-public).
This might bring OAuth to more IMAP server implementations.
In theory, the OAuth process also allows the email provider to control
which email clients have access to the account and that might sound
great, but it doesn't really work in practice. For example, if a
MailMate refresh token was stolen then it can be used by any other
app/script because the refresh token is not effectively limited to be
used by MailMate. This is because any app/script can pretend to be
MailMate. This also means that some malware app/script can be named
MailMate and if the user doesn't know any better then they might accept
providing access to this app/script when Google asks them. In this
situation, Google might detect the problem and revoke MailMate access
which would then affect all real MailMate users as well. One might be
tempted to think that this is a broken feature of OAuth when used with a
desktop app...
Essentially, the only way to really block an app/script from accessing a
Gmail account via IMAP/SMTP is to block *all* apps/scripts from access.
---
### Deadline
Google has provided me with a deadline, May 7, 2025, but I've asked for
a postponement on the grounds that I'm still working on the public
release of MailMate 2.0. For transparency, I've also told them that it's
likely that I won't go through the assessment again even if I do get
this postponement. I'm sure a lot of users will ask me why I don't just
pay up, but I'm simply tired of spending time on considering what Google
might or might not require of me in the future. Apple is doing just fine
in that regard. I've literally spent months on making Gmail work in
MailMate, because it's very far from being a standard IMAP
implementation. The workarounds required were ridiculously complicated
(and it's probably still not perfect). I guess you can say I'm tired of
working for Google for free and I really do not want to start paying
them (or their assessment company friends) to have the privilege, every
year, to get their security theater badge.
---
### Gmail support in the future
Ok, no more ranting. What does this mean for Gmail support in the
immediate future? Well, maybe not much if I understand the inner
workings of Google authentication correctly.
I've written a new server page describing various [account
configuration](http://freron.com/account_configuration/) issues. Here is
the current part on workarounds if MailMate is no longer a Google
verified app:
* Simple solution (OAuth-based): Google Workspace (aka G Suite aka
Google Apps) users should be able to have the admin of the account
explicitly allow MailMate. This should mean that OAuth still works for
the account.
* Simple solution (password-based): Free `@gmail.com` accounts do not
have settings allowing the user to explicitly allow MailMate. Instead,
you need an app specific password. This option is very well hidden
though, but here is a [direct
link](https://myaccount.google.com/apppasswords). Note that this
[requires 2SV](https://support.google.com/accounts/answer/185833) to be
enabled for the account.
* Advanced solution (OAuth-based): It's also possible to make your own
[app
registration](https://developers.google.com/identity/protocols/oauth2/native-app)
with Google and then use these credentials with MailMate using the
`MmGmailOAuth2ClientID` and `MmGmailOAuth2ClientSecret` hidden
preference values.
There's a fourth solution described on the website, but I'd prefer if
that one was not used and I'm leaving it out here.
I've been using Gmail recently with an app specific password without any
issues. I'm interested in knowing if the first solution above works for
Google Workspace users. Well, I'm interested in knowing if an admin can
find this setting. It would also be interesting to know if app passwords
are allowed for Google Workspace users.
--
Benny
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freron.com/pipermail/mailmate/attachments/20250409/51f71d8e/attachment-0001.htm>
More information about the mailmate
mailing list