# VirusTotal is not your local antivirus: what happens to the files you upload

> VirusTotal is a great tool, but uploading a file means sharing it with vendors, customers and researchers. My canary file tests, the risks and what to do instead.

- Autore / Author: Diego Betto (https://diegobetto.com/about/)
- Pubblicato / Published: 2026-11-09
- URL: https://diegobetto.com/en/virustotal-not-your-local-antivirus/
- Tag: security, malware, privacy

When a file looks suspicious, the first reflex of most people is the same: "let me upload it to VirusTotal". It is free, it is owned by Google, it answers in seconds and it shows a reassuring (or alarming) list of green and red verdicts. I use it too, and I think it is an excellent tool.

But there is a thing that too many people forget: **VirusTotal is not a local antivirus**. A local antivirus looks at your file on your machine and the file stays there. VirusTotal takes your file, sends it to dozens of third parties and keeps a copy. Those are two very different things, and the difference matters a lot for privacy.

> **Treat every upload as public**
>
> Anything you upload to VirusTotal should be considered published. Even if you never see it again, copies can reach vendors, customers and researchers you know nothing about.

## What VirusTotal does

VirusTotal is an aggregation service. According to its [documentation](https://docs.virustotal.com/docs/how-it-works), it analyses files, URLs, domains and IP addresses with "over 70 antivirus scanners and URL/domain blocklisting services". In practice:

| Feature | What it gives you |
| --- | --- |
| **File and URL scan** | The verdict of dozens of engines and blocklists on a single page |
| **Hash lookup** | You search a SHA-256 and see whether the file is already known, **without uploading it** |
| **Community** | Comments and votes from other users on files, domains and IPs |
| **Relations and behaviour** | Related files, contacted domains, sandbox behaviour reports |
| **Hunting** | For premium users, searching and monitoring samples (for example with YARA rules) |
| **API and extensions** | Integration in scripts, tools and browsers |

For a researcher, an incident responder or someone who just received a weird attachment from an unknown sender, it is very useful. The problem is not what it does. It is **how** it does it.

## The elephant in the room: it is not your local AV

With a local antivirus the file never leaves your disk. With VirusTotal you **upload** it. From that moment:

- the file is sent to the partner engines and sandboxes, which need it to produce a verdict;
- a copy is **stored** by the service;
- the file can be made available to other parties.

It is not a secret: the documentation says it plainly. In the ["How it works" page](https://docs.virustotal.com/docs/how-it-works): "The contents of submitted files or pages may also be shared with premium VirusTotal customers", and the partners that examine the sample can use the results to improve their own systems.

The [privacy policy](https://www.virustotal.com/about/privacy/) (last updated 30 November 2022, effective 1 January 2023) goes in the same direction: samples are given to antivirus and sandbox partners to get verdicts, **and** are made available to verified security professionals, companies and researchers, many of whom are customers or partners, for threat detection and research.

### What this means in practice

You do not know who these partners and customers are, in which countries their servers are, or how long they keep their copy. So the sensible assumption is that **the file is published**. Once a file has been copied around, deleting it is hard. VirusTotal does remove content on request: in one case reported by [ThreatDown](https://www.threatdown.com/blog/accidental-virustotal-upload-is-a-valuable-reminder-to-double-check-what-you-share/), a document accidentally uploaded, with the names and emails of staff of defence and intelligence agencies, was taken down within an hour. The same article shows how easy it is to find this kind of material: a premium search for "invoice.pdf" returned 17.68k results, most of which were probably never meant to be public.

This is not new. In 2019 the research by Otorio, [reported by Claims Journal](https://www.claimsjournal.com/news/international/2019/10/25/293793.htm), found thousands of unprotected files from pharmaceutical, industrial, automotive and food companies on VirusTotal. The researchers did not find uploaded documents used in an attack, and VirusTotal replied that it screens its customers and removes mistaken uploads. Still, the files were there to be found.

And then there is **automation**. Scripts, EDR products or CI pipelines that upload files automatically to VirusTotal can leak things nobody reviewed: [ThreatDown explains why it is a bad idea](https://www.threatdown.com/blog/why-you-shouldnt-automate-your-virustotal-uploads/).

## Canary file tests

{/* TODO Diego: add own numbers (days/months, hits, countries) */}

I did not want to rely only on what other people write, so I ran my own experiment with **canary files**: decoy documents and executables that embed a tracking token, which "phones home" when the file is opened (the kind of thing you can generate with [Canarytokens](https://canarytokens.org/) by Thinkst). I uploaded them to VirusTotal and waited to see who opened them.

The result, in qualitative terms:

- **hits arrived immediately**, within moments of the upload;
- **hits kept arriving even months later**, from different countries.

How to read this:

- the instant hits are almost certainly the **sandboxes** of the vendors, which open the file automatically to see what it does;
- the late hits are more interesting: they are consistent with files being **re-scanned, re-opened or downloaded** later, for example through premium hunting tools. Some of them may come from software, others potentially from people: analysts and researchers.

An honest caveat: a token hit does **not** prove who opened the file. All I get is an IP address, a user agent and a rough geolocation, and these can belong to an automated system, a proxy or a cloud machine. What the test does show, beyond doubt, is that **the file does not stay where you put it**: it is opened by third parties, immediately and for a long time afterwards.

A [2019 blog post](https://vext.info/2019/03/12/fun-with-canary-tokens.html) saw the same pattern: a Word document with a token fired as soon as it was uploaded to VirusTotal, and more hits came in over an hour later.

## What to do

A practical checklist.

**Never upload:**

- documents, contracts, invoices;
- source code, configuration files, `.env`;
- keys, tokens and credentials;
- database dumps and backups;
- customer data;
- internal tools or installers that may embed secrets;
- anything covered by an NDA.

On the GDPR side, uploading personal data to a third party is a **data transfer** that you must be able to justify. "I wanted to check for a virus" is not a legal basis.

**Better alternatives:**

1. **Check the hash first.** Compute it with `sha256sum file` and search it on VirusTotal. If the file is known, you get the answer without uploading anything.
2. **Use a local antivirus or EDR**, or a local sandbox. Open-source tools help too: [ClamAV](https://www.clamav.net/) for scanning and [YARA](https://virustotal.github.io/yara/) for your own rules.
3. **Private Scanning** if you really need the VirusTotal engine on sensitive files: according to the [documentation](https://docs.virustotal.com/docs/private-scanning), files uploaded this way are not shared outside your organisation and are kept only briefly. It requires a licence.
4. **Do not automate uploads** in scripts or CI pipelines.

**If you uploaded something by mistake:**

- contact VirusTotal and ask for its removal;
- **rotate** every secret that was inside the file;
- assume it leaked, because it may have.

> **A clean result does not mean safe**
>
> A green VirusTotal page is not a guarantee: new or targeted malware may not be detected yet. On the other side, a few detections out of seventy are not certainty either: false positives on packers and installers are common. VirusTotal is a data point, not a verdict.

## Conclusion

VirusTotal is a great tool and I will keep using it, for hashes, URLs and files that are already public or worthless. But it is a **sharing platform**, not a local antivirus, and uploading a file means giving a copy to a whole ecosystem of vendors, customers and researchers. My canary files were opened immediately and for months afterwards: that is enough for me to treat every upload as a publication.

Before you click "Upload", ask yourself one question: would I be fine with this file being public? If the answer is no, check the hash, or scan it locally.

And one last suggestion: **buy and pay for a real antivirus**. A good paid AV scans your files on your machine, with no copy leaving it, and it is maintained by people who are paid to keep it up to date. Free "upload it and see" checks cost you something too, and that something is your data.

## Sources

- [VirusTotal Docs — How it works](https://docs.virustotal.com/docs/how-it-works)
- [VirusTotal — Privacy policy](https://www.virustotal.com/about/privacy/)
- [VirusTotal Docs — Private Scanning](https://docs.virustotal.com/docs/private-scanning)
- [ThreatDown — Accidental VirusTotal upload is a valuable reminder to double-check what you share](https://www.threatdown.com/blog/accidental-virustotal-upload-is-a-valuable-reminder-to-double-check-what-you-share/)
- [ThreatDown — Why you shouldn't automate your VirusTotal uploads](https://www.threatdown.com/blog/why-you-shouldnt-automate-your-virustotal-uploads/)
- [Claims Journal — Otorio research on files exposed on VirusTotal (2019)](https://www.claimsjournal.com/news/international/2019/10/25/293793.htm)
- [Vext — Fun with canary tokens (2019)](https://vext.info/2019/03/12/fun-with-canary-tokens.html)
- [Canarytokens by Thinkst](https://canarytokens.org/)
