Skip to content

Windows Outlook reply handler triggers Object Model Guard security prompt (reads SenderEmailAddress via Interop instead of Redemption) #667

Description

@nblair2

Summary

On the Windows client, the Outlook reply action intermittently raises Outlook's Object Model Guard dialog and blocks the automated timeline until a human clicks Allow:

Microsoft Outlook
A program is trying to access email address information stored in Outlook. If this is unexpected, click Deny and verify your antivirus software is up to date.

Root cause

Both Windows reply handlers read the incoming message's sender address directly off the Outlook Interop MailItem:

  • src/Ghosts.Client.Windows/Handlers/Outlookv2.csReplyViaOutlook: folderItem.SenderEmailAddress at lines ~990, ~1017, ~1038
  • src/Ghosts.Client.Windows/Handlers/Outlook.csReplyViaOutlook: folderItem.SenderEmailAddress at lines ~324, ~345

MailItem.SenderEmailAddress is one of the properties protected by Outlook's Object Model Guard. When Outlook cannot confirm an up-to-date, registered antivirus (common on lab/VM/isolated hosts), accessing it raises the security prompt above.

Every other Outlook action (create/send) already sends through Redemption's SafeMailItem, which is precisely the mechanism that bypasses the Object Model Guard — but the reply path still reads the sender address through raw Interop, so it isn't covered. That is why the prompt only appears on reply cycles (and only on hosts without registered AV).

Suggested fix

Wrap the inbox item in a Redemption SafeMailItem (already imported and used for sending in both handlers) and read SenderEmailAddress from that wrapper. This is behavior-preserving — SafeMailItem.SenderEmailAddress returns the same underlying MAPI property value — and it eliminates the prompt because the read no longer goes through the guarded Object Model.

Environment

  • Ghosts.Client.Windows (.NET Framework), Outlook desktop with Redemption in lib/.
  • Reproduces on hosts where Outlook has no up-to-date/registered antivirus, on any timeline with a non-zero reply-probability and mail in the inbox.

PR to follow.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions