Erzeugt mein C++ Compiler Dateien mit Schadcode?



  • Du könntest uns auch sagen was sie melden.
    Also nur mal so ne Idee.
    Vielleicht gleicht ganz kühn das Ergebnis von VirusTotal verlinken.



  • Bkav 	W32.HfsAutoB.Ec04 	
    Commtouch 	W32/Symmi.I.gen!Eldorado 	
    F-Prot 	W32/Symmi.I.gen!Eldorado 	
    Ikarus 	Trojan.Win32.Menti 	
    K7GW 	Riskware ( 91dc986d0 )
    


  • Das Witzige ist der Effekt von std::system("foo"); ist implementation-defined, das heißt ein Compiler wäre sogar standardkonform, wenn er da Schadcode aufruft. 😋
    Aber ich hatte so etwas in der Art auch schon mal.
    Folgendes Programm wurde als Virus erkannt und sofort gelöscht:

    #include <iostream>
    
    int main()
    {
    
    }
    

    Lässt sich nach dem Compilerupdate aber leider nicht mehr reproduzieren.



  • Die Antiviren-Branche besteht aus absoluten Dilettanten und selbst wenn das auf manche nicht zutrifft, lassen diese sich das nicht anmerken.

    Wie oft ist es schon passiert, dass Signaturen von Compiler- oder Sprachruntimes in den Datenbanken der Antiviren-Pusher gelandet sind. Grund dafür war meist einfach nur, dass jemand ein Stück Malware in der entsprechenden Sprache geschrieben oder mit einem entsprechenden Compiler kompiliert hat. Kurz darauf bezeichneten die Antiviren plötzlich alle Binarys eines Compilers als bösartig.

    Das ganze Antiviren-Zeugs inkl. fast jeder Art von "Security-Software" ist einfach nur völlig unnütz. Schlagenöl. Niemand braucht das, aber es lässt sich prima ein Geschäft damit machen, also wird auch damit weitergemacht ein völlig kaputtes Konzept weiterzuentwickeln. Geht ja auch kaum besser als Kunden zu haben, die regelmäßig ihr Abo verlängern müssen. Sowas gibt man nicht so schnell auf.

    Auch unter Windows benötigt man keine Antiviren! Im Gegenteil, wahrscheinlich ist Windows ohne die Rumpfuschereien der Antiviren-Hersteller sogar sicherer. Robuster und schneller ist es auf jeden Fall.



  • <q>Das ganze Antiviren-Zeugs inkl. fast jeder Art von "Security-Software" ist einfach nur völlig unnütz. Schlagenöl. Niemand braucht das,</q>

    Wie erkennst du bei einer Datei die du von jemandem erhalten hast, dass sie keinen Schadcode enthält ohne jetzt einen umfangreich Code Audit durchzuführen?

    Erstellst du für jede Datei, die du erhälst eine Sandbox z.B. in Form eines Systems in einer VM?



  • Security Break schrieb:

    Erstellst du für jede Datei, die du erhälst eine Sandbox z.B. in Form eines Systems in einer VM?

    Eigentlich führe ich überhaupt keine Binaries aus, die andere mir schicken. Außer den Spammern schickt mir sowieso niemand Executables.

    Wenn ich es partout nicht lassen könnte, ein mir zugeschicktes Programm auszuführen, ja, dann wahrscheinlich in einer virtuellen Maschine.

    Übrigens ist es trivial an einem Schadprogramm solange rumzubasteln bis es keiner der 1e9 Virenscanner bei jotti oder virustotal mehr erkennt.



  • Antikasper schrieb:

    Security Break schrieb:

    Erstellst du für jede Datei, die du erhälst eine Sandbox z.B. in Form eines Systems in einer VM?

    Eigentlich führe ich überhaupt keine Binaries aus, die andere mir schicken. Außer den Spammern schickt mir sowieso niemand Executables.

    Ein präpariertes Bild reicht schon.

    Übrigens ist es trivial an einem Schadprogramm solange rumzubasteln bis es keiner der 1e9 Virenscanner bei jotti oder virustotal mehr erkennt.

    Klar geht das, solche Viren haben aber nur wenige Kanten zum Virenschreiber (Anfangsknoten).
    D.h. so ein Virus erreicht nicht die breite Masse in freier Wildbahn, tut er es doch, dann kennen ihn auch die Virenscanner.
    Die Wahrscheinlichkeit dass du von deinem Onkel einen ganz speziellen Virus bekommst, ist doch eher gering und wenn es jemand auf dich abgesehen hat, also extra für dich Schadcode schreibt, dann würde ich mich an deiner Stelle nicht einmal auf die VM verlassen.



  • Ich hab das gleiche Problem auch schon mal gehabt. Es war auch F-prot soweit ich mich erinnere.

    Es ging um ein absolut harmloses Programm das lediglich log-Dateien aufbereitet. Kompiliert mit Visual Studio.



  • Security Break schrieb:

    Ein präpariertes Bild reicht schon.

    Nun, das impliziert ja die Ausnutzung einer Sicherheitslücke im Bildbetrachter. Wir haben dann zwei Möglichkeiten:

    1. die genutzte Lücke ist bislang unbekannt. In dem Fall enthält die Datenbank des Antiviren-Produkts aber auch keine Signatur des passenden Exploits.
    2. das präparierte Bild greift eine bekannte Schwachstelle im Bildbetrachter an. Hier liegt die Lösung wohl eher darin, das betroffene Programm zu korrigieren anstatt mit irgendwelchen Antiviren rumzufummeln.

    Es gibt durchaus Umstände, in denen Antiviren nicht völlig nutzlos sind. Nämlich dann wenn man annimmt, dass Software mit bekannten Schwachstellen verwendet wird, aber ausgerechnet die Antiviren gleichzeitig topaktuell gehalten werden. Eine Lösung für dieses recht spezielle Problem wird uns aber als Essenz des Kampfes gegen Schadsoftware verkauft.

    Warum? Weil man ernsthafte Sicherheit nicht in Form eines Produkts in einer bunten Schachtel verkaufen kann. Und weil Antivirenhersteller nur allzu gerne ein Bedürfnis ihrer Kundschaft bedienen: Verantwortung möchte weitergegeben werden, dafür zahlt man auch gern. Immerhin kann man mit dem Finger auf den ollen Dr. Norton zeigen, wenn was schief geht und behaupten man hätte ja was gemacht. So funktioniert Sicherheit aber nicht.



  • DarkShadow44 schrieb:

    Ich schätze es ist einfach irgenwas in deinem Code dass vom Virenscanner erkannt wird (false positive).

    Gehe ich auch von aus, sofern nicht der Virus bereits auf dem Rechner ist und exen befällt. False Positiv ist ja nicht selten. Wir hatten auch schon ein paar mal mit Antivirenherstellern [u.a. Avira] Kontakt, die dann unser Programm genauer untersucht haben und ihre Virendefinitionsdatei entsprechend mit dem nächsten Update angepasst hatten um dieses Programm nicht mehr anzumarkeln.



  • Hatte mal auch das Vergnügen das eins meiner Programme als Virus erkannt wurde. Irgenteine dumme Heuristik motzte da herum.

    War ein einfaches Program. Zeigte nur seine GUI an und rufte ein paar externe Programm auf. Noch nicht einmal im Ansatz war Virencode erkennbar.

    Hab das Ganze mal dadurch verschlimmbessert, in dem ich an den Compileroptionen herum gedreht habe. Als ich das automatische Inlining ausgeschaltet habe, schlug kein Virenscanner mehr an.

    Das ganze Antiviren-Zeugs inkl. fast jeder Art von "Security-Software" ist einfach nur völlig unnütz.

    Du NSA Troll. :p



  • Ich habe jetzt mal den Code auf folgendes reduziert:

    #include "Main.h"
    #include <iostream>
    #include <cstdlib>
    
    int i;
    
    using namespace std;
    
    int main(){
    	  int i = 4;
    	  cout << "i = "  << i << endl;
    	  return 0;
    }
    

    Und auch den Code außerhalb von Eclipse direkt mit g++ compiliert und das Ergebnis war das gleiche, also Virustotal.com meldete ebenfalls wieder Schadcode, völlig egal welcher Code compiliert wurde.

    Es war auch egal ob ich zuerst den Objektcode erzeugte oder das Compilat direkt erstellte.

    g++ -c -o Main.o ..\Main.cpp
    g++ -o main.exe Main.o
    
    g++ -o main.exe ..\Main.c++
    

    Lediglich der Scan des Objektcodes direkt erhab keine Schadcodemeldungen.

    GCC Version ist:

    g++ --version
    g++ (GCC) 4.7.2
    Copyright (C) 2012 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    

    md5sum des Compilers ist:

    688fba82ed3f1c542b57f15e5204b255  g++.exe
    

Anmelden zum Antworten