Security Updates Exchange 2010-2019

A quick blog that rather silently, Microsoft published hotfixes for a number of products few days ago, including Exchange Server 2010 up to Exchange Server 2019. These fixes address the following vulnerabilities:

  • CVE-2019-1084: Microsoft Exchange Information Disclosure Vulnerability, allowing non-printable characters to be added to Display Names.
  • CVE-2019-1136: Microsoft Exchange Server Elevation of Privilege Vulnerability, allowing NTLM MITM elevation permissions or impersonation through Exchange Web Services. This sounds like a variation on the NTLM MITM exploit which was fixed earlier this year with the February update cycle.
  • CVE-2019-1137: Microsoft Exchange Server Spoofing Vulnerability, allowing for cross-site scripting (XSS).

The CVE documents contain more details on the vulnerabilities. These exploits can be fixed by single security updates; you can download them here:

VersionCVE
2019
1084
CVE
2019
1136
CVE
2019
1137
DownloadBuildKB
2019 CU2XXLink15.2.397.54509408
2019 CU1XXLink15.2.330.94509408
2016 CU13XXXLink15.1.1779.44509409
2016 CU12XXXLink15.1.1713.84509409
2013 CU23XXXLink15.0.1497.34509409
2010 SP3 RU29XXLink14.3.468.04509410

Be advised that the Security Updates for Exchange 2013-2019 are Cumulative Update level specific. Unfortunately, the security update carries the same name for different CU’s, and you cannot apply the update for Exchange 2016 CU12 to Exchange 2016 CU11. I would suggest tagging the Cumulative Update in the file name when you store it, e.g. Exchange2016-KB4503027-x64-en_CU11.msp.

As with any patch or update, I’d recommend to apply this in a acceptance environment first, prior to implementing it in production.

Exchange Hybrid Agent GA

Ex2013 LogoIn February, Microsoft released the initial public preview version of the Hybrid Agent. The purpose of the Hybrid Agent, also branded as the “Exchange Modern Hybrid Topology”, is to simplify the process of setting up and deploying Microsoft Exchange Hybrid for Exchange 2010 and later deployments, where full “classic” Exchange Hybrid is not an option.

It can also address scenarios where deploying the Hybrid Agent would satisfy organizational migration requirements. For example, moving mailboxes between Exchange Online and Exchange on-premises while providing rich-coexistence features, but without requiring (re)configuration of the publishing of Exchange services. Other functionality the Hybrid Agent doesn’t offer is mail transport. Future builds of the Hybrid Agent might introduce cross-premises functionality, such as Send As delegations as demonstrated at Microsoft Ignite last year.

This week, the Hybrid Agent Public reached General Availability status. In the following article for ENow, I discuss the major changes in the agent since the initial Preview release.

Read the full article on the ENow Software blog.

MVP’s around the World (2019)

mvp

Update: Updated statistics based on award categories (not people) due to the number of multi-category awardees.

In previous years, I performed some comparisons on the MVP population after every award cycle. So, time to get some fresh statistics after July 2019 award cycle.

For comparison, I had a look at the public MVP statistics of July 3rd, 2018 against those of July 3rd, 2019, as the public MVP site was closed the first two days. From the numbers, it is clear that this cycle the number of MVPs went down again, from 3.030 last year, to 2.634 now (-13%).

The following table contains the changes per award category from July 2018 to
July 2019:

CompetenceJul-18Jul-19Change
AI588445%
Business Applications1641660%
Cloud and Datacenter Management303232-23%
Data Platform369332-10%
Enterprise Mobility122106-13%
Microsoft Azure444409-8%
Office Development334742%
Office Apps & Services606491-19%
Developer Technologies781644-17%
Windows and Devices for IT8757-34%
Windows Development186119-37%
Total MVPs30662634-14%

Few notes:

  • The total number of MVP’s doesn’t equal the total number of awards, as people can be awarded in more than one category; there are 52 MVP’s with multiple award categories (one even in 3 categories).
  • Former single product categories, such as Access or OneNote, were moved under the Office Apps & Services category (which was rebranded from Office Servers & Services). Those numbers are merged for the 2018 column.
  • When comparing to earlier years, the award categories were restructured in 2017, e.g. Visual Studio and Development Technologies became Developer Technologies.

When zooming in on the Office Apps & Services category, the awards per country are shown below. Be advised that 26 are anonymous MVP’s or have profiles without location.

CountryJul’18Jul’19CountryJul’18Jul’19CountryJul’18 Jul’19
ARE12GBR2328POL24
AUS1720HRV54PRK612
AUT23HUN22PRT32
BEL88IND1213RUS58
BGR12IRL11SAU11
BIH11ISR1SGP33
BRA210ITA86SLV1
CAN2831JOR11SRB11
CHE42JPN1122SVK11
CHN1416LKA41SVN12
COL24MEX25SWE65
CRI1MKD22THA13
CZE32MYS11TUR42
DEU1725NGA11TWN3
DNK26NLD1321UKR12
EGY11NOR56URY11
ESP58NPL11USA89120
FIN23NZL46ZAF45
FRA1620PAK22

The countries Argentina, Chile, Latvia, Peru, Romania and Greece are no longer represented in the Office Apps & Services category, while Costa Rica, Israel, Taiwan and El Salvador are new to the table.

MonthOct
2016
Jan
2017
Jun
2017
Jul
2017
Jun
2018
Jul
2018
Mar
2019
Jul
2019
OSS538505
(-7%)
532
(+5%)
449
(-16%)
490
(+2%)
383
(-21%)
622
(+62%)
491
(-22%)
TotalN/AN/A41343490
(-16%)
3815
(+2%)
3030
(-21%)
3205
(+6%)
2635
(-18%)

Above are the number of Office Apps & Services and total number of MVP’s over the last years. Do note that for March and July 2019 the former product categories are included in the Office Apps & Services category, hence why I included March to have a sense of the changes in the July cycle.

If you have questions or comments, please send them in the comments below.

2019-2020 Microsoft MVP Award

With great honor and joy I can announce that I have been awarded the Microsoft Most Valuable Professional Award in the category Office Servers and Services.

Continue reading

Exchange Updates – June 2019

Today, the Exchange Team released the quarterly Cumulative Updates for Exchange Server 2019, Exchange 2016 and Exchange 2013.

The KB articles that describe the fixes in each release, and product downloads are available as follows:

VersionBuildKBDownloadUMLPSchema
Exchange 2019 CU215.2.397.3KB4488401 VLSCN
Exchange 2016 CU1315.1.1779.2KB4488406 DownloadUMLPN
Exchange 2013 CU2315.0.1497.2KB4489622 DownloadUMLPN

These updates contain the following important changes and notes (more information in the original article):

  • Reduced required permissions of Exchange in Active Directory.
  • Introduction of support for .NET Framework 4.8, with 4.7.2 becoming the minimum required version.
  • Introduction of Organization-level Authentication Policies.
  • Upcoming support for Modern Authentication for Exchange Hybrid deployments.
  • Controlled Public Folder visibility for Exchange 2019 & 2016.

Exchange 2019 CU2 fixes:

  • 4502134 Can’t get all the emails when searching mailbox by using an end date that’s different from today in Exchange Server 2019
  • 4502135 Correct the error message that you receive when installing Exchange Server 2019 in an organization that has Exchange Server 2010 installed
  • 4502154 Providing information to administrators when auto forward limit is reached in Exchange Server 2019 and 2016
  • 4502155 “The primary SMTP address must be specified when referencing a mailbox” error when you use impersonation in Exchange Server 2019 and 2016
  • 4502156 Audit logs aren’t updated when “-WhatIf” is used as $false in the command in Exchange Server 2019 and 2016
  • 4502157 The Find command not returning the HasAttachments element in Exchange Server 2019 and 2016
  • 4502158 SyncFolderItems contains duplicated ReadFlagChange items in Exchange Server 2019 and 2016
  • 4502131 “TLS negotiation failed with error UnknownCredentials” error after you update TLSCertificateName on Office 365 send connector in Exchange Server 2019 hybrid environment
  • 4502132 Can’t reply to old emails after migration even though old legacyExchangeDN is set to migrated mailbox in Exchange Server 2019 and 2016
  • 4502136 The response of FETCH (BODYSTRUCTURE) command of IMAP violates RFC 3501 in Exchange Server 2019 and 2016
  • 4502140 Can’t preview an eDiscovery search when there are multiple domains in Exchange Server 2019 and 2016
  • 4502141 Appointment that’s created by responding to an email message doesn’t show in any Outlook calendar views in Exchange Server 2019 and Exchange Server 2016
  • 4502133 Can’t use Outlook on the web to reply a partner email through mutual TLS in Exchange Server 2019 and 2016
  • 4488396 Can’t search any results in manually added shared mailbox in Outlook in Exchange Server 2019 and 2016
  • 4488078 Public folder contact lists don’t show contact’s profile picture in Outlook on the web in Exchange Server 2019 and 2016
  • 4499503 Heavy organizational forms traffic because of materialized restriction when organization forms library has more than 500 items in Exchange Server 2019 and 2016
  • 4503027 Description of the security update for Microsoft Exchange Server 2019 and 2016: June 11, 2019

Exchange 2016 CU13 fixes:

  • 4502154 Providing information to administrators when auto forward limit is reached in Exchange Server 2016
  • 4502155 “The primary SMTP address must be specified when referencing a mailbox” error when using impersonation in Exchange Server 2016
  • 4502156 Audit logs aren’t updated when “-WhatIf” is used as $false in the command in Exchange Server 2016
  • 4502157 The Find command not returning the HasAttachments element in Exchange Server 2016
  • 4502158 SyncFolderItems contains duplicated ReadFlagChange items in Exchange Server 2016
  • 4502131 “TLS negotiation failed with error UnknownCredentials” error after updating TLSCertificateName on Office 365 send connector in Exchange Server 2016 hybrid environment
  • 4502132 Can’t reply to old emails after migration even though old legacyExchangeDN is set to migrated mailbox in Exchange Server 2016
  • 4502136 The response of FETCH (BODYSTRUCTURE) command of IMAP violates RFC 3501 in Exchange Server 2016
  • 4502140 Can’t preview an eDiscovery search when there are multiple domains in Exchange Server 2016
  • 4502141 Appointment that’s created by responding to an email message doesn’t show in any of Outlook calendar views in Exchange Server 2016
  • 4502133 Can’t use Outlook on the web to reply a partner email through mutual TLS in Exchange Server 2016
  • 4488396 Can’t search any results in manually added shared mailbox in Outlook in Exchange Server 2016
  • 4488078 Public folder contact lists don’t show contact’s profile picture in Outlook on the web in Exchange Server 2016
  • 4499503 Heavy organizational forms traffic due to materialized restriction when organization forms library has more than 500 items in Exchange Server 2016
  • 4503027 Description of the security update for Microsoft Exchange Server 2019 and 2016: June 11, 2019

Exchange 2013 CU23 fixes:

  • 4502131 “TLS negotiation failed with error UnknownCredentials” error after updating TLSCertificateName on Office 365 send connector in Exchange Server 2013 hybrid environment
  • 4503028 Description of the security update for Microsoft Exchange Server 2013 and 2010: June 11, 2019

Notes:

  • These Cumulative Updates do not contain schema changes compared to their previous Cumulative Update. However, due to changes in the permissions architecture, you need to run setup /PrepareAD to implement these changes as well as apply any RBAC changes, before deploying or updating Exchange servers.
  • When upgrading from an n-2 or earlier version of Exchange, or an early version of the .NET Framework, consult Upgrade Paths for CU’s & .NET.
  • Don’t forget to put the Exchange server in maintenance mode prior to updating. Regardless, setup will put the server in server-wide offline mode post-analysis, before making actual changes.
  • When using Exchange hybrid deployments or Exchange Online Archiving (EOA), you are required to delay installing at most one version (n-1).
  • If you want to speed up the update process for systems without internet access, you can follow the procedure described here to disable publisher’s certificate revocation checking.
  • Cumulative Updates can be installed directly; no need to install RTM prior to installing Cumulative Updates.
  • Once installed, you can’t uninstall a Cumulative Update nor any of the installed Exchange server roles.
  • The order of installation shouldn’t matter with the “every server is an island” concept, yet recommended is to upgrade internet-facing, non-internet-facing servers first, followed by Edge Transports.

Caution:

As for any update, I recommend to thoroughly test updates in a test environment prior to implementing them in production. When you lack such facilities, hold out a few days and monitor the comments on the original publication or forums for any issues.

ADV190018: Security Updates Exchange 2013-2019 & 2010

Ex2013 LogoUpdated Jun13: Corrected Ex2010SP3RU28 link

A quick note that an update was released for current Exchange versions as well as Exchange 2010 related to the following advisory:

  • ADV190018 Microsoft Exchange Server Defense in Depth Update

Unfortunately – or perhaps understandably – the advisory doesn’t present any more details than, ‘”Microsoft has released an update for Microsoft Exchange Server that provides enhanced security as a defense in depth measure.”.

You can download the security updates here:

Be advised that the Security Updates for Exchange 2013-2019 are Cumulative Update level specific. Unfortunately, the security update carries the same name for different CU’s, and you cannot apply the update for Exchange 2016 CU12 to Exchange 2016 CU11. I would suggest tagging the Cumulative Update in the file name when you store it, e.g. Exchange2016-KB4503027-x64-en_CU11.msp.

As with any patch or update, I’d recommend to apply this in a acceptance environment first, prior to implementing it in production.

Turla LightNeuron: Facts from Fud

fudYesterday, an article was published on ZDNet, where the author claims “Russian Cyberspies” are exploiting a backdoor in Exchange. The article is based on a report of Slovakian-based ESET Research, which is no stranger on the anti-virus/malware market. The report, titled “Turla LightNeuron, One email away from remote code execution”, claims the group – Turla – leverages LightNeuron to exploit Exchange Server for malicious usage, using instructions hidden in image attachments delivered through e-mail to control the backdoor. The news was quickly picked up by other media, and it didn’t take long for customers to start asking questions on the topic. Time for some fact checking.

Exchange Backdoor
The article claims the group using ‘one of the most complex backdoors’ ever spotted on an email server. While complexity is relative, it could very well be that this backdoor was indeed discovered on some improperly managed Exchange Servers in the wild.

However, the exploit leverages an installed malicious MTA (Message Transfer Agent, or Transport Agents in Exchange).  An MTA is software handling incoming and outgoing e-mail messages using the Simple Mail Transfer Protocol (SMTP). A lot of legitimate 3rd party MTAs exist for Exchange Server, for example to add disclaimers to messages or for message hygiene purposes.

This LightNeuron is the actual backdoor, so there is no backdoor in Exchange. A totally different conclusion than one could read from the article’s title, and a totally different attack vector:

  • How did this Transport Agent get installed on Exchange server in the first place?
  • How was it possible to store the DLLs required by the Transport Agents, and which are likely to get caught by AV products, on Exchange Server?
  • How was it possible to perform these tasks using administrative access, which is required to install such components in the first place?

The ESET report mentions this requirement; the ZDNET article and all other media simply omit this. Note that developing your own Transport Agent isn’t rocket science; Microsoft provides instructions on how to write your own custom Transport Agent for Exchange Server on-premises.

Hidden Instructions
Sending instructions hidden in images isn’t new. Steganography became famous to public in the last decade, where Osama Bin Laden was claimed to be embedding instructions for his followers in images posted on the internet. Little messages can also easily be embedded in the structure of an image file format, with places to store custom data or instructions.

Remote Control
As the installed malicious MTA runs under administrative permissions, it is no surprise that whoever (remotely) controls the MTA, in principle controls the Exchange Server as it runs in the context of the Exchange Trusted Subsystem.

Remote Controlled malicious code is not new; it is what drives zombie computers, and it is what made some prank tools popular in the mid-90’s, when you could prank your coworkers by opening their CD trays (anyone remember those?).

Impact
ESET claims that Turla has been leveraging LightNeuron for nearly 5 years, “which shows the tool’s advanced capabilities, being able to avoid detection for so many years”. In my opinion, this shows how many organizations have more bigger issues, such as an improperly managed mail environment.

SendMail
The report also mentions LightNeuron being ported to *NIX as well, e.g. SendMail. This shows perfectly that any communications system, when compromised, can be used for man-in-the-middle attacks. However, mentioning leaks in SendMail might not drive traffic as much as mentioning ‘Backdoor in Exchange’ for media, which is a driver when you depend on advertisements.

Detection
The article claims the hidden messages make LightNeuron hard to detect. Of course, this depends. The backdoor requires installation and presence of two malicious DLL files. Any respectable AV product should catch those. Windows Server 2016+ comes with Windows Defender, which according to its encyclopaedia should be able to detect Turla variants.

Removal
Finally, the article claims that, “removing this backdoor is quite problematic”. This is utter nonsense, as any weathered Exchange administrator should be able to install or uninstall Transport Agents as part of their skill set.

Conclusion
In summary and concluding:

  • This is not a backdoor in Exchange Server.
  • The backdoor is a malicious Transport Agent which needs to be installed on the Exchange Server
  • Installing this backdoor requires administrative permissions.
  • Well-managed Exchange environments should be OK.
  • Removal is simple, and a task any Exchange admin should be able to perform.
  • Windows Defender detects Turla variants.

And last but not least:

  • Media should do proper fact-checking as opposed to blindly copying articles.
  • Media should use titles which reflect the contents, and refrain from click-bait titles.
  • ESET is a vendor selling e-mail hygiene and security-related products, which always is a potential red flag when these kinds of reports are published.

Outlook Connection Status Details

Outlook 2016 New IconA little notice on a potential helpful feature which was introduced to Outlook at some point, but I wasn’t aware of before (or it’s just new). At least the option is available in Outlook v1905 build 11629.20008 C2R; it might also be available in standalone.

Many people are familiar with the Outlook Connection Status window, which you can summon by right-clicking the Outlook icon in the system tray while holding CTRL. This will show a dialog containing the connections Outlook is managing for every configured account, together with valuable information like endpoint, response times, etc.

image

One of the columns, Req/Fail, is showing the number of Requests and Failed requests. To check the headers of the last failing response for a particular connection, double-click the Req/Fail number. This will open up a popup window similar to this one:

image

Apart from essentials like the http result code, it will show which front-end and back-end servers processed the request. This might help to quickly determine if clients are connecting to unfavorable public endpoints, or when failed requests are coming from specific in case of Exchange on-premises. Of course, this information can also be retrieved using additional tools like Fiddler, but with this shortcut you don’t need to install additional software, as well as that you can ask end users to open up this window and send you the information.

Again, another little gem which might come in handy when troubleshooting.

Security Updates for Spoofing Vulnerability

Ex2013 LogoUpdated April 12th: Notice on KB4487563

Today, as part of patch Tuesday, supported Exchange versions received security updates to remediate the following issues:

Security updates are available for the following product levels, and fix the vulnerability mentioned:

Build KB Download CVE-2019-0817 CVE-2019-0858
Exchange 2019 CU1 15.2.330.7 KB4487563 Download Yes Yes
Exchange 2019 15.2.221.16 KB4487563 Download Yes Yes
Exchange 2016 CU12 15.1.1713.6 KB4487563 Download Yes Yes
Exchange 2016 CU11 15.1.1591.16 KB487563 Download Yes Yes
Exchange 2013 CU22 15.0.1473.4 KB487563 Download Yes Yes
Exchange 2010 SP3 RU27 14.3.452.0 KB4491413 Download Yes No

Notes:

  • CVS-2019-0858 does not apply to Exchange 2010.
  • Exchange 2010 is currently in Extended Support. Extended support for Exchange 2010 ends January 14, 2020.
  • Don’t forget to put the Exchange server in maintenance mode prior to updating.
  • If you want to speed up the update process for systems without internet access, you can follow the procedure described here to disable publisher’s certificate revocation checking.
  • The order of installation shouldn’t matter with the “every server is an island” concept, yet recommended is to upgrade internet-facing first, followed by non-internet-facing servers, and finally Edge Transports.

Notice on KB4487563:
Apart from the known issues mentioned in KB4487563, there are reports the fix terminates while stopping services, and the following error is being logged:
[Error] System.Management.Automation.CommandNotFoundException: The term ‘Stop-SetupService’ is not recognized as the name of a cmdlet, function, script file, or operable program.

This Stop-SetupService isn’t a regular cmdlet, and I assume is an alias created by the update. However, there are reports this operation fails. In those circumstances, next to retrying installation of the update, a workaround might be opening up a PowerShell session and adding the alias yourself using New-Alias Stop-SetupService Stop-Service, followed by running the update. The alias isn’t persistent, so will be gone after you close your session.

Caution:
As for any update, I recommend to thoroughly test updates in a test environment prior to implementing them in production. When you lack such facilities, hold out a few days and monitor the comments on the original publication or forums for any issues.

End Users & External Messages

Ex2013 LogoIn the ongoing battle against spam and phishing, technical measures have much effect as they are able to triage spam or phishing messages based on configuration or programmed rules. By now, many of these measures have been widely adopted to limit messages of those categories to reach the inbox of the end user. Measures like SPF (Sender Policy Framework), DKIM (DomainKeys Identified Mail) and DMARC (Domain-based Message Authentication, Reporting and Conformance) can be used to validate origination or contents of the message, or authenticate senders.

This post isn’t about those measures or how to implement them. I suggest reading this excellent DMARC implementation guide by MSFT’s Martijn van Geffen for more information on how to implement SPF and DMARC successfully. Note that his website also contains lots of tools and scripts to troubleshoot and report on SPF/DMARC. If you’re unfamiliair with his site, I suggest you have a look.

One of the weaker links in the whole chain of messaging remains the end end user. One can still devise technical measures up to a point, there are still end users out there who blindly click links or follow instructions in that message from ‘Microsoft’ requesting them to change their Office 365 password. One can not always blame the end user; phishers became very crafty in making their deceptions look genuine; even IT professionals often need to look twice to determine legitimacy of a message. For those interested, few months ago Google put a phishing quiz online where you can assess your phishing detection skills.

To assist end users processing inbound messages, many companies have resorted to providing visual clues so end users can more quickly determine the origin of a message or the message being potentially non-legit. One measure often is marking messages originating from outside the organization, by inserting a notice before the contents, or prefixing the subject with something like “[External]”.

Recently, MVP fellow Tony Redmond wrote an article on how to accomplish marking external messages using transport rules in Exchange. For example, to create a transport rule you can use the following cmdlet:

New-TransportRule -Name 'Tag External Mail' -SetHeaderName 'X-ExternalMail-Tagged' -SetHeaderValue 'True' -ApplyHtmlDisclaimerLocation Prepend -ApplyHtmlDisclaimerText '<span style="background-color:yellow;color:black;"><b>Notice</b>: This message originates from outside the organization. Make sure to validate the sender before clicking links or opening attachments.</span>' -ExceptIfHeaderContainsMessageHeader 'X-ExternalMail-Tagged' -ExceptIfHeaderContainsWords 'True' -ExceptIfSenderInRecipientList Allow -FromScope NotInOrganization

The above will create a transport rule that prepends the message with a colored (HTML) notice, inserting a message header to prevent insertion of multiple notices and allowing end users to add senders to their Safe Sender Allow List to bypass tagging messages.

image

However, the problem with these notices is that over time it might make end users insensitive, as messages from external sources are usually large in numbers and become part of the other visual noise like disclaimers and marketing messages. Therefor a better option might be to mark messages which fail DMARC or SPF checks, provided you are not rejecting those messages at some level.

For example, to mark messages failing DMARC or SPF checks, you could create the following transport rule:

New-TransportRule -Name 'Tag DMARCSPFFail Mail' -SetHeaderName 'X-DMARCSPFFail-Tagged' -SetHeaderValue 'True' -ApplyHtmlDisclaimerLocation Prepend -ApplyHtmlDisclaimerText '<span style="background-color:white;color:red;"><b>Warning:</b> The sender of this message could not be validated, and may not be the actual sender.</span>' -ExceptIfHeaderContain
sMessageHeader 'X-DMARCSPFFail-Tagged' -ExceptIfHeaderContainsWords 'True' -ExceptIfSenderInRecipientList Allow -FromScope NotInOrganization -HeaderMatchesMessageHeader 'Authentication-Results' -HeaderMatchesPattern 'dkim=fail','spf=TempError','spf=PermError', 'spf=SoftFail', 'spf=Fail', 'spf=None'

Of course, you could also prepend the subject with a tag to help identifying messages in this category.

More recently, Microsoft added the MailTip feature to Outlook Mobile which also helps in making end users more aware of their communications. After enabling the MailTips for external recipients using:

Set-OrganizationConfig -MailTipsExternalRecipientsTipsEnabled $true

end users will receive a notification when replying to messages outside their organization from Outlook Mobile; Outlook Desktop already had this feature.

Outlook Desktop:
recext

Outlook Mobile:
image

These MailTips are in my opinion the preferred visual clue, as it not only notifies users up front, it also doesn’t clutter message bodies with notifications and warnings.In the end, these notifications are however a small price to pay, compared to the cost of phishing or end users clicking malicious links. It would be nice if Microsoft could already show the MailTip when displaying the message, so it would prevent in accidental clicking of malicious links or attachments.

Note: Advanced Threat Protection (ATP) could of course also help companies with the protection against malicious links and attachments, however not every company has ATP licenses. In both cases, these notices might complement the overall set of measures.