locked
File che potrebbe danneggiare il computer RRS feed

  • Domanda

  • Ho un sito dove è scaricabile tutta una serie di programmi fatti da me, con VS2010, esenti da virus, malware e ads.

    http://xxxxxxxx

    Tuttavia se li si scarica con IE appare un messaggio tutt' altro che rassicurante, che li indica come potenzialmente pericolosi (xxxxxx.exe non viene scaricato di frequente e potrebbe danneggiare il computer").

    Non è certamente un bel biglietto da visita: c' è modo di evitare?



    venerdì 6 febbraio 2015 02:06

Risposte

  • Quando un browser (non solo IE) esegue il download di un file, lo contrassegna in modo da poter distinguere da quale zona proviene.

    Se viene scaricato dal pc locale non viene contrassegnato ma se proviene da internet viene aggiunto al file uno "stream secondario". Gli stream sono una caratteristica peculiare di NTFS (se lo scaricassi su una chiavetta USB formattato con FAT, il file non verrebbe contrassegnato).

    Grazie agli stream il contenuto del file non è stato modificato ma esiste un "secondo contenuto" che viene utilizzato da Windows per capire se il file proviene da internet.

    Per esempio se salvi sul tuo disco l'immagine del tuo avatar di questa pagina web, il file viene contrassegnato con un alternate data stream. Per vedere il suo contenuto apri una command prompt e scrivi:

    C:\>notepad "c:\temp\avatar.jpg:Zone.Identifier"

    Su notepad apparirà:

    [ZoneTransfer]
    ZoneId=3

    Nota: Per "zona" si intende quella mostrata anche nelle impostazioni di IE. La zona può essere locale, intranet o internet per cui se il sito internet viene impostato nella dialog di IE come "zona sicura" (non sono sicuro del termine italiano), il file non verrà contrassegnato.

    Se poi apri le risorse del computer e apri le proprietà di quel file, vedrai il pulsante "Unblock". Se lo premi, cancelli lo stream secondario scritto dal browser. A questo punto ripetendo l'operazione di notepad vista sopra, notepad non troverà il file perché è stato cancellato. In realtà è stato cancellato lo stream secondario e non il file avatar.jpg che continua ad essere disponibile.

    Veniamo al problema dell'avviso.
    Quando Windows esegue una applicazione, cerca lo stream secondario e, se non è firmato da un certificato digitale, avvisa l'utente che potrebbe essere pericoloso.

    Quindi non devi temere di essere stato incorrettamente classificato da smartscreen, nè che il tuo file contenga virus ma giustamente l'utente deve essere avvisato che l'esecuzione di un file scaricato da internet è sempre da considerasrsi a maggiore rischio.

    Mi è già capitato di vedere certificati digitali a buon mercato, non ricordo su quale sito ma ogni tanto si trovano.

    Se vuoi altre info sugli alternate streams, qui trovi un buon articolo (ma ce ne sono molti altri in giro):

    http://blogs.technet.com/b/askcore/archive/2013/03/24/alternate-data-streams-in-ntfs.aspx

    Buon lavoro,

    Raf

    P.S. Voglio ricordare a tutti che gli antivirus non sono sempre in grado di trovare il malware. Possiamo presumere che se passa tutti i test di VirusTotal sia ragionevolmente sicuro ma oggi si sta diffondendo sempre di più il "Ransomware" (criptare i file per chiedere un riscatto) mirati su gruppi di utenti e perciò molto raramente scopribili da un antivirus. L'unica arma in questo caso è fare spesso backup preventivi.


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele

    venerdì 6 febbraio 2015 19:54
  • L'avviso che mostri viene da SmartScreen il cui compito è quello di assegnare una "reputazione" ad un file.

    Ogni volta che un utente che ha SmartScreen abilitato esegue un download, viene fatto un hash del file e trasmesso al centro di controllo. Un hash è un algoritmo crittografico che genera una sequenza di byte molto corta (la lunghezza dipende dall'algoritmo) che identifica univocamente il file scaricato. Quindi diciamo che qualsiasi sia il download la sequenza può essere dai 20 ai 40 caratteri.
    Per esempio SHA-1: http://en.wikipedia.org/wiki/SHA-1

    Questo è il modo in cui sanno quanti sono i download dei file e che il file in questione sia esattamente quello.

    Ovviamente il criterio non può essere solo quello e tipicamente deve venire continuamente aggiustato per evitare che qualcuno trovi il modo di "passare per un angioletto" anche se pubblica un virus. I dettagli di SmartScreen sono spiegati qui:

    http://blogs.msdn.com/b/ie/archive/2011/03/22/smartscreen-174-application-reputation-building-reputation.aspx

    Come vedi, anche dopo la firma digitale il banner diventa da rosso a giallo. Infatti gioca anche il fatto che il fiel sia scaricato dal un sito che non è "popolare", per cui il punteggio assegnato da SmartScreen resta troppo basso per marcarlo come affidabile 


    Stai toccando con mano un problema comune a tutti gli sviluppatori, ed è il motivo per cui sono nati gli "app store". Gli store si preoccupano proprio pubblicare solo quelle applicazioni che sono state controllate e gli assegna in modo automatico un certificato digitale per assicurare che il contenuto non cambi durante il download. Anche questo potrebbe non essere sufficiente a garantire che del codice non danneggi i dati dell'utente e per questo motivo le app devono girare dentro una speciale "sandbox" (un processo con integrity level molto bassi come avviene per IE quando gira in protected mode) che preclude l'uso di API pericolose.


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele

    domenica 8 febbraio 2015 08:32

Tutte le risposte

  • Ciao,

    Ho modificato il tuo post perche qui' non e' consigliato di postare informazioni private o pubblicitari. Per quanto riguarda la tua domanda vedi se trovi la soluzione in questi blogs:

    http://blogs.msdn.com/b/ieinternals/archive/2011/03/22/authenticode-code-signing-for-developers-for-file-downloads-building-smartscreen-application-reputation.aspx

    http://blogs.msdn.com/b/ie/archive/2011/03/22/smartscreen-174-application-reputation-building-reputation.aspx

    Saluti.


    • Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto viene fornito “così come è e non comporta alcuna responsabilità da parte dell’azienda.

    venerdì 6 febbraio 2015 10:01
  • Alle ottime informazioni di Maria aggiungo:
    "Filtro SmartScreen: Informazioni per gli amministratori e i proprietari di siti Web".

    Saluti,

    Vincenzo Di Russo
    Microsoft® MVP Windows Internet Explorer, Windows & Security Expert - since 2003.
    Moderator in the Microsoft Community and TechNet Forums
    My MVP Profile

    venerdì 6 febbraio 2015 12:56
    Moderatore
  • Scusate.... ho messo l' indirizzo web solo perché non vedo modo di allegare immagini, altrimenti avrei allegato l' immagine.

    Maria, il mio è un sito hobbystico di donationware: 75$ all' anno per acquisire un certificato non li faccio mai più...

    venerdì 6 febbraio 2015 16:02
  • Il mio sito non contiene né pishing né malware, per cui SmartScreen non lo segnala assolutamente.

    Riguardo ai download leggo: "Se trova una corrispondenza, il filtro SmartScreen informa l'utente che il download è stato bloccato per sicurezza"...

    Ma il mio download NON E' bloccato: esce solo un messaggio di avviso che dice "xxxx.exe non è scaricato di frequente e potrebbe danneggiare il computer"... ovvio che poi l' utente medio si spaventa...

    venerdì 6 febbraio 2015 16:07
  • Per una migliore e più appropriata assistenza chiedi supporto nel Forum Microsoft MSDN per Visual Studio.

    Saluti,

    Vincenzo Di Russo
    Microsoft® MVP Windows Internet Explorer, Windows & Security Expert - since 2003.
    Moderator in the Microsoft Community and TechNet Forums
    My MVP Profile

    venerdì 6 febbraio 2015 18:44
    Moderatore
  • Vincenzo, il problema NON E' di Visual Studio, ma di IE....  L' eseguibile di Setup è fatto con InnoSetup: che poi il programma sia in C++, in Pyton, Ruby o VS la musica non cambia: IE vede l'.exe come potenzialmente pericoloso ed io sto chiedendo come evitare (senza spendere 65 euro all' anno di certificati)i, visto che non lo è affatto: basterebbe rammentare di controllarlo con un antivirus, invece di spaventare la gente.

    Cosa c' entra poi che l' exe sia o non scaricato di frequente non capisco: ci sono dei crack con malware che hanno centomila downloads.

    venerdì 6 febbraio 2015 18:55
  • Quando un browser (non solo IE) esegue il download di un file, lo contrassegna in modo da poter distinguere da quale zona proviene.

    Se viene scaricato dal pc locale non viene contrassegnato ma se proviene da internet viene aggiunto al file uno "stream secondario". Gli stream sono una caratteristica peculiare di NTFS (se lo scaricassi su una chiavetta USB formattato con FAT, il file non verrebbe contrassegnato).

    Grazie agli stream il contenuto del file non è stato modificato ma esiste un "secondo contenuto" che viene utilizzato da Windows per capire se il file proviene da internet.

    Per esempio se salvi sul tuo disco l'immagine del tuo avatar di questa pagina web, il file viene contrassegnato con un alternate data stream. Per vedere il suo contenuto apri una command prompt e scrivi:

    C:\>notepad "c:\temp\avatar.jpg:Zone.Identifier"

    Su notepad apparirà:

    [ZoneTransfer]
    ZoneId=3

    Nota: Per "zona" si intende quella mostrata anche nelle impostazioni di IE. La zona può essere locale, intranet o internet per cui se il sito internet viene impostato nella dialog di IE come "zona sicura" (non sono sicuro del termine italiano), il file non verrà contrassegnato.

    Se poi apri le risorse del computer e apri le proprietà di quel file, vedrai il pulsante "Unblock". Se lo premi, cancelli lo stream secondario scritto dal browser. A questo punto ripetendo l'operazione di notepad vista sopra, notepad non troverà il file perché è stato cancellato. In realtà è stato cancellato lo stream secondario e non il file avatar.jpg che continua ad essere disponibile.

    Veniamo al problema dell'avviso.
    Quando Windows esegue una applicazione, cerca lo stream secondario e, se non è firmato da un certificato digitale, avvisa l'utente che potrebbe essere pericoloso.

    Quindi non devi temere di essere stato incorrettamente classificato da smartscreen, nè che il tuo file contenga virus ma giustamente l'utente deve essere avvisato che l'esecuzione di un file scaricato da internet è sempre da considerasrsi a maggiore rischio.

    Mi è già capitato di vedere certificati digitali a buon mercato, non ricordo su quale sito ma ogni tanto si trovano.

    Se vuoi altre info sugli alternate streams, qui trovi un buon articolo (ma ce ne sono molti altri in giro):

    http://blogs.technet.com/b/askcore/archive/2013/03/24/alternate-data-streams-in-ntfs.aspx

    Buon lavoro,

    Raf

    P.S. Voglio ricordare a tutti che gli antivirus non sono sempre in grado di trovare il malware. Possiamo presumere che se passa tutti i test di VirusTotal sia ragionevolmente sicuro ma oggi si sta diffondendo sempre di più il "Ransomware" (criptare i file per chiedere un riscatto) mirati su gruppi di utenti e perciò molto raramente scopribili da un antivirus. L'unica arma in questo caso è fare spesso backup preventivi.


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele

    venerdì 6 febbraio 2015 19:54
  • Se scarico alcuni files ottengo una immagine del genere:

    Domanda tecnica: come fa IE a sapere quante volte un file è stato scaricato?? Tiene un database di tutti i 30 miliardi di files che sono online e lo aggiorna ad ogni download??

    Cioè, voglio dire, non è che mi sta dicendo che IO non lo scarico di frequente (che allora potrei capire con qualche cookie), ma lo dice "in generale". Come fa??

    sabato 7 febbraio 2015 20:34
  • L'avviso che mostri viene da SmartScreen il cui compito è quello di assegnare una "reputazione" ad un file.

    Ogni volta che un utente che ha SmartScreen abilitato esegue un download, viene fatto un hash del file e trasmesso al centro di controllo. Un hash è un algoritmo crittografico che genera una sequenza di byte molto corta (la lunghezza dipende dall'algoritmo) che identifica univocamente il file scaricato. Quindi diciamo che qualsiasi sia il download la sequenza può essere dai 20 ai 40 caratteri.
    Per esempio SHA-1: http://en.wikipedia.org/wiki/SHA-1

    Questo è il modo in cui sanno quanti sono i download dei file e che il file in questione sia esattamente quello.

    Ovviamente il criterio non può essere solo quello e tipicamente deve venire continuamente aggiustato per evitare che qualcuno trovi il modo di "passare per un angioletto" anche se pubblica un virus. I dettagli di SmartScreen sono spiegati qui:

    http://blogs.msdn.com/b/ie/archive/2011/03/22/smartscreen-174-application-reputation-building-reputation.aspx

    Come vedi, anche dopo la firma digitale il banner diventa da rosso a giallo. Infatti gioca anche il fatto che il fiel sia scaricato dal un sito che non è "popolare", per cui il punteggio assegnato da SmartScreen resta troppo basso per marcarlo come affidabile 


    Stai toccando con mano un problema comune a tutti gli sviluppatori, ed è il motivo per cui sono nati gli "app store". Gli store si preoccupano proprio pubblicare solo quelle applicazioni che sono state controllate e gli assegna in modo automatico un certificato digitale per assicurare che il contenuto non cambi durante il download. Anche questo potrebbe non essere sufficiente a garantire che del codice non danneggi i dati dell'utente e per questo motivo le app devono girare dentro una speciale "sandbox" (un processo con integrity level molto bassi come avviene per IE quando gira in protected mode) che preclude l'uso di API pericolose.


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele

    domenica 8 febbraio 2015 08:32
  • Ok tutto questo va bene, ma alla fine come possiamo pubblicare applicazioni firmate digitalmente che non vengano bloccate dal filtro smartscreen in Windows 10? Conviene racchiuderle in un file .zip anch'esso firmato digitalmente?

    Software Magic

    mercoledì 17 febbraio 2016 13:31
  • Adesso che lo store accetta anche la pubblicazione di app desktop, io seguirei quella strada. Ovviamente il certificato resta indispensabile.

    http://blogs.msdn.com/b/windowsstore/archive/2012/06/08/listing-your-desktop-app-in-the-store.aspx


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele

    • Proposto come risposta fabcal mercoledì 17 febbraio 2016 16:20
    mercoledì 17 febbraio 2016 13:49
  • Si questo lo sapevo già. Ma perché devo passare per lo store se voglio far scaricare la mia applicazione per assistenza da remoto, sviluppata da me, solo ai clienti che pagano in anticipo l'assistenza remota? Ho acquistato il certificato digitale e poi scopro che comunque, dopo averlo acquistato, devo passare per lo store altrimenti l'utente che sa a malapena accendere il computer si trova il blocco inserito dal browser!!! Non posso distribuirlo nello store perché poi magari potrei ritrovarmi con gente che scarica l'applicazione per nulla o con un eccessivo numero di computer registrati sul server e nella situazione di non poter soddisfare tutte le richieste! Io vorrei che l'applicazione in questione venisse scaricata dal mio sito o inviata in email senza complicazione. D'altronde il certificato dovrebbe servire a questo no? Anche a tracciare l'autore in caso di software malevolo per eventuali azioni penali!!! Capisco che se il mondo è un posto pericoloso, il mondo di internet lo è ancora di più. Ma non esiste una strada per dire che chi è bravo e rispetta le regole viene premiato senza dover passare per uno store che va bene nel 90% dei casi e poi per quel 10% no?


    Software Magic


    • Modificato fabcal mercoledì 17 febbraio 2016 16:20
    mercoledì 17 febbraio 2016 15:37
  • Nella mia risposta del giorno 8 Febbraio 2015 dicevo:
    "Come vedi, anche dopo la firma digitale il banner diventa da rosso a giallo"
    Come spiegavo, il tuo file non è noto a SmartScreen e quindi ha una posizione dubbia. All'epoca dei "dialer" si verificarono molti casi di malware firmato digitalmente, quindi il certificato è una condizione necessaria ma non sufficiente a dare pieno credito ad un eseguibile.

    Il certificato infatti serve solo a garantire che nessuno abbia modificato il file binario dopo che questo è stato firmato. Non dice nulla sul suo autore e legalmente non serve a molto visto che non c'è una norma giuridica internazionale.

    Esistono però i certificati "EV" (Extended Validation) che sono integrati nel processo di SmartScreen come spiega da questo articolo:
    https://blogs.msdn.microsoft.com/ie/2012/08/14/microsoft-smartscreen-extended-validation-ev-code-signing-certificates/

    Il problema di questa soluzione è che i certificati EV (occhio che devono esserre emessi dalle CA citate dall'articolo) sono piuttosto costosi. Tanto per capirci sono quelli che appaiono in verde nella barra di navigazione del browser.

    A questo punto di chiederai perché un certificato abbia più valore di un altro:
    Il certificato EV viene emesso solo dietro una ricerca approfondita sulla vera identità del richiedente. Questo giustifica i costi aggiuntivi che gli enti certificatori richiedono per questi speciali certificati. 

    Come dicevo già nel post più vecchio, tutto questo è il motivo per cui sono nati gli App Store. In particolare su Windows lo scopo delle applicazioni UWP (le app moderne Win10) è quello di isolare le applicazioni in una sandbox (processo con privilegi ristretti) in cui gira del codice che non possa evitare la sandbox stessa. Questo è possibile solo se:

    • La App viene sviluppata secondo i requisiti UWP
    • Lo Store verifica che la App non abbia usato API diverse da quelle ammesse

    E per la cronaca lo store firma digitalmente la App a tuo nome (con un certificato normale che è sufficiente perché sono stati fatti altri tipi di controllo)

    Detto questo, prima di lanciarti nello scrivere una app UWP, suggerivo il tentativo di pubblicare l'applicazione desktop (quindi senza modifiche) sullo store per verificare che questo sia sufficiente a dargli una reputazione più alta.
    Non ho mai fatto questa prova e se non ricordo male, la registrazione allo store è gratuita anche per app desktop. Quindi forse può valere la pena provare.


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele

    • Proposto come risposta fabcal giovedì 18 febbraio 2016 00:47
    mercoledì 17 febbraio 2016 17:52
  • Ti ringrazio per le delucidazioni. La mia società è già iscritta allo store e abbiamo già app per W8/8.1 e WP8 che dobbiamo anche aggiornare come UWP. Ma la tua risposta mi ha chiarito molto le idee, cioè adesso mi tengo questo certificato, quando avremo la possibilità prenderemo anche un certificato EV per i software "particolari". Per il momento quindi ci lanceremo nelle app UWP solo perché dobbiamo farlo, se vogliamo che le app che abbiamo adesso siano aggiornate a w10. Ci lanceremo anche nello sviluppo di altre app. Nel frattempo certi software desktop non specifici per determinati clienti li pubblicheremo nello store, che ritengo di per se un ottimo mezzo anche di "promozione" dei software e che da garanzia agli utenti di una certa qualità. Per il software di helpdesk la situazione è più complessa, il software dev'essere personalizzabile da chi compra la suite per poterlo redistribuire ai propri clienti per lo svolgimento del lavoro, quindi ci devo studiare su perché col certificato di mezzo certi automatismi non si possono fare. Grazie per la risposta! Finalmente ho la situazione chiara!


    Software Magic

    giovedì 18 febbraio 2016 00:47