Frage zu Code und angeblichem Virusverdacht

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    Frage zu Code und angeblichem Virusverdacht

    Guten Tag liebes Forum,
    ich habe mich nach langer Zeit mal wieder an VB.Net gesetzt und habe einfach mal drauf los programmiert.Dazu habe ich auch hier im Forum zu Fragen oft gute Antworten und/oder Links gefunden die mir weiter geholfen haben.

    Das Problem ist jetzt, dass ich das Programm gerne einer Community zur Verfügung stellen mag bzw schon habe. Zu dem Programm habe ich eine art kleinen Updater geschrieben der bei Programmstart die neue .exe von meinem Webspace runterlädt.Ich habe den Updater jetzt mal durch VirusTotal gejagt und er sagt mir das er 3/63 Funde hat.
    virustotal.com/de/file/5e980f5…1d5f/analysis/1503176572/

    Es ist natürlich nicht sehr Vertrauens erweckend, wenn man dort ein Virusfund hat.
    Der Virusfund ist von einem mir nicht mal wirklich bekanntem Antiviren Programm aus China.
    Ich denke mal es liegt einfach daran, dass eine .exe aus dem Internet geladen wird, oder?
    Es wäre nett, wenn ihr ein Tipp habt wie ich das ändern könnte.



    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.Net
    3. Imports System.IO
    4. Public Class Form1
    5. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    6. Try
    7. My.Computer.FileSystem.DeleteFile(Application.StartupPath + "\ItemErstellen.exe")
    8. Catch exc As System.IO.FileNotFoundException
    9. MessageBox.Show(Me, "Fehler beim Löschen Datei. Die Datei wurde nicht gefunden! ItemErstellen wurde geupdated", "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Warning)
    10. Catch ex As Exception
    11. MessageBox.Show(Me, "Fehler beim Löschen! Bitte melde es dem Entwickler. Fehler: " + ex.ToString, "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Warning)
    12. End Try
    13. Button1.Enabled = False
    14. dwlByLink("http://www.artex-life.de/html/ItemErstellen.exe", Application.StartupPath + "\ItemErstellen.exe")
    15. End Sub
    16. Public Sub dwlByLink(myLink As String, myFile As String)
    17. Try
    18. Dim myRequest As System.Net.WebRequest = System.Net.WebRequest.Create(myLink) 'Request erstellen
    19. Dim myResponse As System.Net.WebResponse = myRequest.GetResponse() 'Respons speichern
    20. Dim myStream As System.IO.Stream = myResponse.GetResponseStream() 'Datenstream aus dem Respons extrahieren
    21. Dim myReader As New System.IO.BinaryReader(myStream) 'Binärer "leser" zum Lesen des Streams
    22. 'Datei speichern
    23. Dim myFileStream As New System.IO.FileStream(myFile, System.IO.FileMode.Create) 'Datei auswählen
    24. Dim i As Long
    25. ProgressBar1.Maximum = myResponse.ContentLength
    26. For i = 1 To myResponse.ContentLength 'Byte für Byte in die Datei übertragen
    27. myFileStream.WriteByte(myReader.ReadByte())
    28. ProgressBar1.Value = i
    29. Next i
    30. If ProgressBar1.Value = myResponse.ContentLength Then
    31. Button1.Enabled = True
    32. End If
    33. myFileStream.Flush() 'noch mal spülen ...
    34. myFileStream.Close() ' und schließen
    35. Catch ex As Exception
    36. MessageBox.Show(Me, "Fehler beim Download! Bitte melde es dem Entwickler. Fehler: " + ex.ToString, "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Warning)
    37. End Try
    38. End Sub
    39. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    40. Process.Start(Application.StartupPath + "\ItemErstellen.exe")
    41. Application.Exit()
    42. End Sub
    43. End Class


    Hier auch nochmal als Pastebin nur mit IP anstatt Domain
    pastebin.com/nJV9rHAZ

    Mit freundlichen Grüßen,Zaickz
    Entschuldige die Wortwahl, das ist keines Falls persönlich gemeint, es geht nur um den Code: dein "Updater" ist beschissen

    Du lädst eine Executable, ohne irgendwelche Sicherheitsprüfungen herunter und führst diese dann aus, das ist mehr als fahrlässig und mich wundert es das nur 3 der Snake Oil Programme darauf reagieren. Mein Rat an dich, lass es oder suche dir eine existierende Lösung die mehr Wert auf Sicherheit legt.
    Dazu zählen:
    1. kein HTTP als Transportprotokoll -> TLS (HTTPS) mit HTTP Public Key Pinning etc. (wäre zumindest schonmal ein Anfang)
    2. Signieren der herunter zu ladenen Daten *
    3. Validieren der Signatur *
    4. evtl. andere Punkte, die mir nicht bekannt sind, da ich so etwas bisher nicht entwickelt habe oder benutzte

    * GPG und optional (sofern man den CA's vertraut) Code signing zb Windows AuthentiCode
    Ich tät da nicht so viel drauf geben. Die Browser jammern doch bei fast jeder .exe die man downloaden will... Ansonsten kauf dir nen Zertifikat, dann wird's evtl. besser.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Ergänzung zu @slices Post: Updater - Worauf sollte man bei eigenen Updatern achten?
    Alles andere ist gefährlich und tatsächlich ein potenzielles Einfallstor für Malware.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: