none
SmartScreen-Fehlermeldung auch bei signierten Exe Files RRS feed

  • Frage

  • Hallo

    Das Unternehmen, dass ich vertrete hat kürzlich ein Zertifikat (für "Code Signierung" seiner über Internet für seine Kunden "downloadable" Windows EXE files) von der Firma QuoVadis (Schweiz) erworben. Die Installation des Tokens und der entsprechenden Client SW habe ich realisiert und alles scheint korrekt zu funktionieren. Ich konnte fehlerlos einige Beispiel EXE Files (durch Verwendung von signtool.exe) signieren. Über die entsprechenden File Eigenschaften kann ich die Zertifikatskette sehen, jedes einzelne Zertifikat wird als "gültig" anerkannt.

    Trotz Allem, wenn ich eine solch signierte Datei auf meinen persönlichen PC übernehme und versuche sie zu starten bekomme ich eine SmartScreen Warnung:

    Der Computer wurde durch Windows geschützt, von Windows Defender SmartScreen wurde der Start einer unbekannten App verhindert. Die Ausführung dieser App stellt u.U. ein Risiko für den PC dar.

    App:  ....
    Herausgeber: <korrekte Name unserer Firma>

    Wieso produziert Windows diese Warnung, trotzdem dass der Herausgeber (gekauftes Zertifikat) und die vollständige Kette bis zum Root-Zertifikat gültig ist ??  Die Firma QuoVadis, als Zertifizierungsstelle, ist bekannt und hat uns bisher bei der Suche eines möglichen Problems unterstützt, jedoch ohne Erfolg. Sie sind nicht bereit uns weitere Hilfe zu leisten, da sie behaupten, das Problem liegt nicht bei ihnen !
    Ich wäre enorm dankbar für jede mögliche Hilfe oder Hinweis zur Lösung des Problems seitens dieser Community.

    Vielen Dank im Voraus
    pebo829

    Freitag, 4. August 2017 07:31

Alle Antworten

  • Die Zertifikate müssen ggf. lokal installiert werden damit sie immer anerkannt werden.
    Bei der Meldung müsste es eine Möglichkeit der Übernahme irgendwo geben, nach dem Motto "Hesteller xyz immer vertrauen".
    Freitag, 4. August 2017 09:28
  • Danke für deine Information, bfuerchau.

    1) So weit meine Kenntnisse gehen, braucht es ja keine lokale Installation; eine korrekte, gültige Unterschrift muss von einem Zertifikat belegt sein, das einer Kette von Zertifikaten gehört (diese Zugehörigkeit, bzw. die Verkettung selbst ist im EXE File eingebettet), wo das sog. Root-Zertifikat von einer weltweit anerkannten Organisation stammen muss. Aus meiner Sicht, braucht Windows nur die lokale Speicherung (Zertifikatspeicher) dieses Root-Zertifikates und dies ist schon bei der "normalen" Installation von Windows (in meinem Fall: 10), für die allermeisten gängigen solcher Zertifikaten (dessen Ersteller es scheinbar nur ganz wenige weltweit gibt) der Fall.

    2) Bei der vorkommenden Warnung hat der Benutzer nur die Möglichkeit zu bestimmen "Ja, trotzdem ausführen" oder "nicht ausführen". Wenn er die erste Variante wählt, ist es Windows "egal" ob der Herausgeber bekannt ist oder unbekannt !!  Und er bekommt keine 2. Auswahl (nicht einmal bei einer korrekt signierten Datei) im Sinne von "dem Herausgeber ... immer vertrauen".

    Diese Situation erlebe ich und dünkt mir sehr unbefriedigend, deswegen meine Frage an die Community.

    Freitag, 4. August 2017 16:07
  • Wieso produziert Windows diese Warnung, trotzdem dass der Herausgeber (gekauftes Zertifikat) und die vollständige Kette bis zum Root-Zertifikat gültig ist ??

    Hallo pobo829,

    das SmartScreen-Verfahren ist ein Punktebasiertes Whitelistingverfahren. Ein Bisschen mehr darüber kannst du zum Beispiel in dem Artikel SmartScreen App Reputation nachlesen.

    "Ist ein Programm mit einem Extended-Validation-Zertifikat signiert, hat es bereits einen so hohen Pluspunktestand, dass es von Tag eins an SmartScreen passiert. Ist die Software mit einem normalen digitalen Zertifikat signiert, erfolgt nur in den ersten Tagen eine Blockierung. Nach ein paar Downloads und Programmstarts landet das Programm auf der Whitelist." 

    Offensichtlich hat irgendwer bzw. Irgendwas euren Punktestand derart negativ beeinflusst, dass das vorhandene Zertifikat nicht ausreicht, um das auszugleichen.

    Grüße
    Matthias

    Samstag, 5. August 2017 07:19
  • Vielen Dank Matthias

    Diese Info ist endlich mal die zutreffende. Denn genau so ein Verhalten bei meinen Tests habe ich beobachtet. Habe auch etwas in deinem Link durchgestöbert und habe ein paar extra Fragen:

    1) Jedes mal dass man auf eine solche Warnung auf "nicht ausführen" klickt, erhöht sich das "Malus"-Rate für diese SW?

    2) So wie ich verstehe, ist dieses Rating pro EXE File in der "Wolke" gespeichert; was passiert wenn der PC wo der Start versucht wird in diesem Moment nicht On-Line ist?

    Nochmals Vielen Dank für deine wertvolle Information

    Gruss

    pebo829

    Montag, 7. August 2017 14:39
  • Hallo pebo829,

    1. Im Grunde läuft es so, nur dass noch etliche weitere Kriterien mit heran gezogen werden. Wie stark welches Kriterium gewichtet wird hat mir aber noch niemand verraten.
    2. Im Detail ist das nirgendwo dokumentiert aber mein Kenntnisstand ist folgender:

    Wird eine Datei heruntergeladen und auf einem NTFS-formatierten Laufwerk gespeichert, so bekommt die Datei einen zusätzlichen alternativen Datenstrom (ADS) mit dem Namen Zone.Identifier. Das kannst du ganz leicht nachprüfen indem du eine Kommandozeile auf machst, in das Verzeichnis mit einer heruntergeladenen Datei wechselst und dort

    dir /r

    eingibst. Den Inhalt dieses ADS kannst du dir mit

    notepad.exe Datei.exe:Zone.Identifier

    anschauen.

    Wird nun versucht über die API-Funktion shellexecute etwas auszuführen, so wird geprüft, ob dieser ADS vorhanden ist. Wenn nein (und er lässt sich leicht entfernen), dann wird es einfach ohne weitere Prüfung gestartet. Ist der ADS aber vorhanden, so wird zunächst die Komponente "SmartScreen Application Reputation" gestartet. Diese extrahiert das Zertifikat, erzeugt einen Hashwert der Datei und liest die Eigenschaften der Datei aus. Mit diesen Werten schaut es in einem Webservice nach sowie einem lokalen Cache und startet dann Windows Defender, um die Datei gezielt zu überprüfen. Ist der Webservice nicht vorhanden, so scheint SmartScreen statt dessen auf eine lokale Datenbank mit Triggern und einer Whitelist zurück zu greifen. Das Ergebnis dieser Prüfung landet wieder im Cache.

    Schlägt eine dieser Überprüfungen an, so wird die Ausführung der Datei verhindert und eine Warnung angezeigt. Ist die Datei eine "known good", so wird sie direkt ausgeführt und wenn nichts anschlägt aber der Webservice diese Datei nicht kennt, dann wird auch das angezeigt.

    Grüße
    Matthias

    Mittwoch, 9. August 2017 07:06
  • Vielen Dank Matthias, nach langer, mühsamer Suche nach einer richtigen, kompletten Antwort zu meiner Frage, bin ich endlich, dank Dir, gut am Ziel !

    Dankbare Grüsse

    pebo829

    Mittwoch, 9. August 2017 09:31
  • Hallo Matthias,

    Deine Antwort ist sehr hilfreich und bringt mich schon auf gute Ideen.

    Wir haben ein ähnliches Problem. Weißt Du, ob es unseren "Punktestand" negativ beeinflusst, wenn unser Setup (ein WixBundle (exe) mit integriertem MSI welches stets gleichen ProductCode hat) mit verschiedenen Versionen installiert wird?

    Wir bauen quasi zur Entwicklung immer dasselbe Setup (alle Identifier gleich), nur dass der Inhalt sich ändert (versionierte DLLs) und die Version des MSI und des Bundles inkrementiert werden. Gibt das einen negativen Score?

    Das würde bedeuten, dass wir dann zur Entwicklungszeit während des Testens unsere Reputation schädigen.

    Oder aber bedeutet das nichts schlicht anderes, als dass jedes Build (am Ende unsere Setup-EXE) von uns, da im Hash sich unterscheidend, mit neuem Kontostand anfängt und daher anfangs stets immer der Windows SmartScreen sich meldet?

    Signiert sind das MSI sowie das Bundle.

    Viele herzliche Grüße,

    Torben

    Dienstag, 21. November 2017 17:57
  • Hallo, funktioniert es denn nun inzwischen ohne SmartScreen Meldung. Ich habe das gleiche Problem nachdem ich ein Zertifikat gekauft und angewendet habe. Was kann ich tun?
    Mittwoch, 28. November 2018 08:41

  • 2) Bei der vorkommenden Warnung hat der Benutzer nur die Möglichkeit zu bestimmen "Ja, trotzdem ausführen" oder "nicht ausführen". 

    Schön wäre das, de facto kann ich das Fenster nur schließen:

    Montag, 9. September 2019 16:54