Attachment sandboxing

Watch what an attachment does, in a machine that can be thrown away

Static checks answer "does anything recognize this file?". Sandboxed analysis answers a different question — what the file actually did when it ran: what it started, what it wrote, and who it called.

Private beta

Availability, stated plainly: the integration is built and the provisioning for an analysis host is built, but no analysis host has been built with it yet and no message on this platform has carried a sandbox result. Everything on this page that describes running files is written in the conditional because that is where it is. It is open to beta participants and to nobody else, and MailThreatZero does not operate a hosted detonation service — the analysis host is one you operate, or one we would have to build for you and do not offer yet.

It adds evidence. It replaces nothing

Every check a protected domain already runs would keep running and keep scoring: signature scanning, file structure and type checks, macro and script inspection, archive handling, and reputation by hash. Those answer most attachments in milliseconds and cost nothing, and they are the reason a sandbox would be asked about so few files.

What they cannot answer is the file nobody has seen before. A hash lookup returns results from sandboxes that have already run that exact file, and returns nothing at all when none has — a hash lookup is not a detonation. For that file, the only remaining evidence is behavior, and behavior has to be observed.

A sandbox verdict would arrive in the same explainable score as every other stage, with a weight, and with the observations attached. There would be no separate override and no second scoring path: a message that was held would still be able to say which stage contributed what, which is the property this product is least willing to trade.

Who this is for

MSPs and MSSPs who already answer the question "is this attachment safe?" for several customers a week, and who currently answer it with a hash lookup, a guess, or a virtual machine on somebody's laptop.

  • One console, many customers. Policy would be set per protected domain like every other stage, so one customer can have it on and another off, without two consoles or two contracts.
  • Evidence a customer can read. "We held it because it wrote a startup key and called an address in another country" is a sentence an end customer understands. "Our filter scored it 7.4" is not.
  • A shared cost, not a per-customer one. An analysis host is compute you already know how to buy, and one host would serve the domains you point at it.

No throughput figure, no per-file cost and no allowance is published here, because nothing has run yet and a number nobody measured is worse than no number.

How it would work, end to end

  1. An attachment arrives. The message is scanned as it is today. Nothing about this stage changes the handover, the MX record or the relay.
  2. Policy selects it. Most attachments are never sent anywhere. A domain's policy decides which are candidates: file type, size ceiling, whether reputation already knew the file, how suspicious the rest of the message already looked, sender exclusions, and per-hour and per-day ceilings so that a spam run carrying one novel attachment cannot generate unbounded work.
  3. It is analyzed in isolation. A candidate is opened in a disposable guest that exists to be destroyed afterwards, and is watched while it runs.
  4. Findings come back. Process activity, file and registry changes, network connections, dropped files and matched signatures are normalized into one shape, recorded against the file's hash, and attached to the message as evidence.
  5. The configured action happens. What that is belongs to the domain, not to us. A stage arrives off, and monitor-first when switched on: it records what enforcement would have done to real mail while changing nothing, and only a deliberate change to enforce lets it move the score.

The order is the safety argument. Policy first, then anything already held for that hash, then a lookup, and only last a file leaving the building — and that last step happens only where an administrator has explicitly allowed it.

What the analysis would return

The integration normalizes every provider onto one record, so a verdict reads the same whoever produced it. What it carries:

  • A verdict, with five states and no rounding. Clean, suspicious, malicious, unknown, or error. Unknown and error stay separate deliberately: one means the analysis had nothing to say, the other means it did not happen, and collapsing them makes a broken credential look like a quiet all-clear.
  • Process activity. What was started, and by what.
  • File and registry changes. Files written, registry keys set — which is where persistence shows up.
  • Network connections. Names looked up, addresses contacted, web requests made.
  • Dropped files. What the sample brought with it or fetched, so a downloader is visible as a downloader rather than as a small harmless document.
  • Matched signatures and a reported family, where the engine names one.
  • A confidence value and a link to the full report, where the provider publishes one that the reader can actually reach.
  • A plain-language sentence saying what was observed and what it contributed to the score — including, in monitor mode, that it contributed nothing.

A file still being analyzed is reported as unknown, never as clean. A verdict that arrives after a message was delivered raises an incident against the delivered mail rather than being discarded, which is the same path a link that turns malicious after delivery already takes.

Two ways to get an analysis host, and one of them does not exist yet

A host you operate

Private beta

You provide a machine; the gateway talks to the controller on it over your own network. Nothing about the attachment leaves your infrastructure, so the third-party disclosure that a cloud service requires does not apply at all.

This is the path the code is written for, and it is the path with real prerequisites: compute, storage, and legitimate Windows and application licenses for the guest. See the limits below before planning one.

A host we operate

Not offered

The obvious request, and the honest answer is no: MailThreatZero does not operate a hosted detonation service, and this page is not a soft way of saying it soon will. Nothing is provisioned, priced or staffed for it.

If it is the only version you would buy, say so on the application. That is the signal that would decide whether it gets built, and there is no announcement here to read between the lines of.

A third route already exists for anyone who does not want an analysis host at all: a provider account you hold. Behavioral results can be read from a third-party analysis service using your own account and your own credential, subject to that provider's terms. That is optional, off by default on every domain, and uploading a file to it is a disclosure — so it happens only where an administrator turned it on. See security and data handling for what leaves the building and when.

The engine is CAPE, and we did not write it

The analysis itself would be done by CAPEv2, an established open-source sandbox maintained by its own project and community. We did not write it, we do not claim it, and saying so is not modesty: you are entitled to know whose code is opening a malicious file, to read it, and to form your own view of it.

What MailThreatZero contributes is the parts either side of it: the policy that decides which attachment is worth analyzing, the normalization of CAPE's report into the same evidence shape every other stage produces, the scoring, and the build.

That build is deliberate about one thing in particular. The source is fetched at a pinned, reviewed commit and verified by hash before anything is executed — nothing is piped from a download into a root shell. A moving branch would mean the host built today and the host built next month are different products, and the difference arrives without review on a machine whose entire job is running malware.

That pin is also why the installer currently refuses to install: no commit has been pinned and reviewed on this deployment, and it declines rather than taking whatever the branch happens to be. The refusal is the feature working.

Building and managing a host

Installing a hypervisor, a sandbox controller, an isolated analysis network and a Windows guest onto a remote machine takes the better part of an hour and reboots the machine in the middle. Anything that long gets interrupted, so it is built as a resumable job rather than as a script:

  • Preflight before anything is changed, so a machine that cannot support the work is refused at the start rather than halfway through.
  • Every step probes for its own outcome first, so running the job again is a legitimate recovery instead of the thing that breaks the host.
  • Progress is state, not log lines. A resumed job restarts at the first step not recorded complete — which is what makes the reboot in the middle survivable.
  • A machine already doing something else is left alone. A host carrying other virtual machines, or another sandbox, stops the job rather than being taken over.
  • Nothing is exposed beyond the management address — not the database, not the hypervisor, not a guest console, not the sandbox web interface — and firewall rules are never applied in an order that could drop the operator's own session.
  • A host is not called ready because an install finished. Containment and end-to-end validation are separate steps and both fail closed.
  • Bootstrap credentials expire. A provisioning password is useful for one install and is a live shell credential for ever after, so it is stored encrypted, given an expiry, erased when the job reaches a terminal state, and redacted out of the job log.

Written, reviewed, and never run against a real machine. No analysis guest exists on this platform, and neither containment validation nor end-to-end validation has been exercised live. Beta participants would be building the first one with us, and should read that sentence as the offer rather than as a disclaimer.

Privacy and retention, per route

An attachment is somebody's document. Where it goes is a decision with a name on it, so the controls are per domain and the disclosure is shown next to the choice rather than buried in a policy.

  • Hash first, always. Asking about a hash discloses nothing about a file's contents. Only a file nothing has analyzed is a candidate for anything further.
  • Upload is opt-in, per domain. Sending a file to a third-party service is a disclosure and stays off unless an administrator turns it on. The console states which provider would receive it and what that provider's own terms say about retention, because somebody making this decision should not have to go and find that out.
  • On a host you operate, nothing leaves. The file is opened on your infrastructure and analysis artifacts are retained by your controller under your configuration, on your schedule — we publish no retention period for your own machine because it is not ours to set.
  • File types, size ceilings, sender exclusions and rate limits are all domain policy, so a domain can narrow what is eligible to exactly the files it wants looked at.
  • The verdict record, not the file. What the gateway keeps for the message is the hash, the verdict, the observations and the timings — the evidence needed to explain a decision later.

What it would not do, stated before you ask

  • "No malicious behavior observed" is not proof a file is safe. It means nothing malicious happened in that guest, in that time, with those applications installed. Malware that waits, checks whether it is being watched, or needs a target the guest does not resemble will sit there and look boring. Treat a clean result as one piece of evidence, never as a clearance.
  • Supported file types depend on the guest. A file can only be opened by an application that is installed. A guest without a particular office suite, reader or runtime cannot meaningfully run files that need it, and the list of what is worth sending follows what you built, not a marketing table.
  • Some files cannot be fully analyzed at all. An archive that needs a password, a document that needs a login, a payload that only unpacks after a human clicks through two dialogs — automated analysis reaches a wall and the honest answer is unknown.
  • It takes time, and mail does not. Analysis is minutes; delivery is milliseconds. Nothing waits on a verdict at the smtp handover, so what happens to a message while its attachment is still being looked at is a policy choice with real trade-offs on both sides — and a verdict that lands late acts on delivered mail instead of pretending it was in time.
  • A host you operate costs real money and real licenses. Compute, storage, and legitimate Windows and application licenses for the guest are yours to hold. We will not tell you that malware analysis is free, and we will not ship you a guest built from software we have no right to distribute.
  • It sanitizes nothing. Sandboxing observes a file and reports on it. Rewriting an attachment into a safer form is a different capability with a different trade-off, listed separately in features, and neither one implies the other.
  • It is not an antivirus replacement. It runs last, on the few files everything cheaper could not answer.

Questions

Questions people ask first

Can I buy this today?

Not as a running service. It is in private beta: the integration and the host build are written, and no host has been built and no message has carried a result. A beta place means building the first host with us and seeing every rough edge. If that is not what you want, wait — and the feature status page is where the change would show up.

Do you run the sandbox for me?

No. We do not offer detonation as a hosted service: either you operate the analysis host, or you supply an account with a third-party analysis provider and the gateway reads results from it using your credential. A host we operate for customers is not offered, and is not being announced here.

Does my mail wait while a file is analyzed?

Not at the handover. The analysis runs off the delivery path, and a file that is still being looked at is reported as unknown rather than as clean, because the most dangerous thing this stage could do is say "safe" because the answer was slow. How a message is handled in the meantime is the domain's policy.

Does the attachment leave my infrastructure?

On a host you operate, no. On a provider account you supply, only if an administrator has explicitly enabled sending files, and only for a file nothing has analyzed before — a hash is always asked about first, and asking about a hash discloses nothing about the contents.

Which file types are supported?

Whichever ones the guest you built can actually open. The policy has a configurable list and a size ceiling, but the real constraint is the applications installed in the analysis guest. There is no universal list, and publishing one would be describing a guest we have not seen.

If it comes back clean, is the file safe?

No. It means nothing malicious was observed in that environment during that run. Samples that detect analysis, wait, or need a specific target will look harmless on purpose. A clean result lowers suspicion; it does not clear a file.

Whose sandbox software is it?

CAPEv2, an open-source project we did not write and do not claim. We supply the policy that selects a file, the normalization of its report into the same evidence every other stage produces, the scoring, and the pinned build.

Is this the same as the attachment reputation check I already have?

No, and the difference is the whole point. A reputation check asks whether this exact file has been seen and judged before. This asks what the file does. A hash lookup is not a detonation: it returns what other sandboxes already found, and returns nothing when none of them has ever run the file.

Applying

The beta application has attachment sandboxing as one of its options, and carries the mutual beta NDA — both sides see unfinished things, so both sides are covered. Tell us whether you would operate a host or would only take one we operate; the second answer is as useful to us as the first.

Apply for the beta See what runs today