# Falso positivo antivirus su eseguibili Python compilati
## Il problema
Windows Defender (e altri antivirus) possono segnalare come minaccia gli eseguibili `.exe` generati da strumenti di compilazione Python come **Nuitka**, **PyInstaller**, **cx_Freeze** o **py2exe**.
I rilevamenti tipici sono:
- `Program:Win32/Contebrew.A!ml`
- `Trojan:Win32/Wacatac.B!ml`
- `Trojan:Script/Wacatac.B!ml`
- `PUA:Win32/Presenoker`
Il suffisso `!ml` indica che il rilevamento e' basato su **machine learning**, non su una firma specifica di malware noto.
## Perche' succede
Gli eseguibili onefile generati da Nuitka e PyInstaller funzionano in modo simile a un archivio autoestraente:
1. All'avvio, l'exe decomprime il proprio contenuto in una cartella temporanea
2. Carica ed esegue il codice Python compilato dalla cartella temporanea
3. Alla chiusura, ripulisce i file temporanei
Questo comportamento (decompressione a runtime + esecuzione da temp) e' identico a quello usato da alcuni malware reali. I motori di rilevamento basati su machine learning analizzano il *comportamento* del programma, non il contenuto specifico, e lo classificano erroneamente come sospetto.
Inoltre, questi exe:
- Non sono firmati digitalmente (la firma richiede un certificato a pagamento)
- Contengono codice offuscato (il bytecode Python compilato)
- Accedono alla rete (tipico di server web, update checker, ecc.)
- Scrivono file su disco (database, configurazioni, log)
Tutti questi sono indicatori euristici che alzano il punteggio di rischio nei motori ML.
## Come verificare che sia un falso positivo
1. **VirusTotal**: caricare l'exe su [virustotal.com](https://www.virustotal.com). Se solo 1-3 motori su 70+ lo segnalano (tipicamente Microsoft e pochi altri), e' quasi certamente un falso positivo.
2. **Codice sorgente disponibile**: se il codice sorgente del progetto e' pubblico e ispezionabile, chiunque puo' verificare che non contiene codice malevolo.
3. **Riproducibilita'**: compilando lo stesso sorgente sullo stesso sistema si ottiene lo stesso exe, verificabile tramite hash.
## Soluzioni
### Per l'utente finale
**Aggiungere un'esclusione in Windows Defender:**
1. Aprire **Sicurezza di Windows** (Windows Security)
2. Andare in **Protezione da virus e minacce** > **Impostazioni** > **Gestisci impostazioni**
3. Scorrere fino a **Esclusioni** > **Aggiungi o rimuovi esclusioni**
4. Cliccare **Aggiungi un'esclusione** > **Cartella**
5. Selezionare la cartella dove si trova l'eseguibile
In alternativa, quando Defender blocca l'exe:
1. Andare in **Protezione da virus e minacce** > **Cronologia protezione**
2. Trovare l'elemento segnalato
3. Selezionare **Consenti**
## Riferimenti
- [Nuitka FAQ - Antivirus Issues](https://nuitka.net/doc/faq.html)
- [PyInstaller - False Positive Virus Warnings](https://pyinstaller.org/en/stable/faq.html)
- [Microsoft - Submit files for analysis](https://www.microsoft.com/en-us/wdsi/filesubmission)