VBA - Gefährlichkeit

Hallo,

da das Thema etwas emotional angefasst wurde, möchte ich hier gern mal konkret nachfragen:

Was meinen die Profis, was man unverantwortlich in VBA tun kann, wenn man „keine Ahnung“ hat?
Also Viren-Programmierung kann es ja nicht sein, da man da durchaus viel Ahnung haben muss.
Etwas anderes fällt mir dazu nicht ein.

Also - gern mal konkret und detailiert, was damit gemeint sein könnte.
Feuer frei.

Hallo Tobi,

die einzige Gefahr, die ich kenne, liegt nicht direkt in dem, was Du an Deinem PC tust.

Makros in Office-Dokumenten werden schon seit längerer Zeit für Angriffe auf Rechner benutzt. Dabei werden die Nutzer überlistet und dazu gebracht, anscheinend wichtige Office-Dokumente zu öffnen. Nach dem Öffnen sieht man keinen Inhalt, statt dessen wird einem ein gefälschtes Infofeld untergeschoben, das zum Beispiel vorgibt, dass eine Schrift nachgeladen werden soll. In Wirklichkeit werden Programme nachgeladen, die den Rechner zu verschiedenen Zwecken übernehmen wollen.

Aus diesem Grunde wird geraten, Makros komplett zu deaktivieren.

Wenn Du selbst jetzt also VBA-Makros schreibst, musst Du für Dich Makros aktivieren und steigerst das Gefahrenpotential. Falls Du dieses Makro dann auch noch anderen zur Verfügung stellen möchtest „nötigst“ Du sie dazu, ihren eigenen Schutz abzubauen.

Falls ich eine direkte Gefahr übersehen habe, bitte ich um Ergänzung und Korrektur.

Grüße
Pierre

2 Like

Hallo Pierre,

diese Problematik ist mir bekannt.
Auch in meinem Job ist das den Verantwortlichen bekannt. Deshalb ist grundsätzlich „VBE“ bei uns abgeschaltet (also der Programmpunkt - man kommt da echt nicht mehr rein - außer man weiß, wie ;-)).

Gerade deshalb weiß ich, was ich zb auf Arbeit tun muss, damit alles „seinen Gang“ geht.

Aber Nutzer des Forums (zb. „Sporadisch“) sehen da irgendwelche Teufel an der Wand - aber es erklärt keiner so wirklich, was sie denn nun unter den Gefahren sehen.
Und ich weiß, wer meine Programme erhält - meist nämlich ich selbst nur. Und in anderen Fällen nur ein Kollegenstamm bei dem man weiß, dass Verantwortung für sie sehr hoch angesiedelt ist, da wir in einem sensiblen Bereich arbeiten. Und ich gebe ihnen nur die Rechte, das zu nutzen, was ich ihnen präsentiere.
Und da ich weiß, dass es sein kann, dass meine Auswertprogramme evtl. Rechtsvertretern vorgelegt werden (um „Bearbeitung an Daten“ nachvollziehen zu können), weiß ich, dass ich mir da ebenfalls keinen Mist erlauben darf.

Aber VBA ist ja sooo schlimm und mit VBA kann man nicht Programmierung lernen und … was weiß ich. Auf eine sachliche Erklärung warte ich jedoch immer noch. :slight_smile:

Danke für deine sachliche Antwort.
Tobi@s

1 Like

@Pierre hat es doch ausführlich erklärt.
Andersrum gesagt: Du wohnst in einem Mehrfamilienhaus (das Netzwerk) und lässt deine Wohnungstür (Office) sperrangelweit offen (Makroaktivierung) , weil ja sowieso die Haustür absichert.
Merkst du was?

1 Like

Ich behaupte immer noch, zum Programmieren lernen kommt es nicht darauf an, welche Sprache man benutzt (ja, es ging in dem anderen Thread konkret um Objektorientierung… aber auch das haben wir in VBA, so prinzipiell), aber das nur nebenbei.

Bei uns ist VBA zumindest in der Entwicklungsabteilung erlaubt und wird auch genutzt. So ein VBA Makros kann einem schließlich viel Arbeit ersparen.
Aber es ist halt auch ein Risiko.
So ein Makro kann schließlich schon beim bloßen Öffnen eines Office-Dokuments zur Ausführung kommen.
Und solche Dokumente kommen mitunter sehr vertrauenswürdig daher.

Die von @Tomh genannte Analogie mit der Wohnungstür würde ich eher so sehen: Du hast eine Wohnungtür höchster Widerstandsklasse, mit entsprechendem Schließzyliner, mit Türspion und extra Panzerriegel - aber in deiner Wohnung wohnt halt auch die Omma. Und wenn du nicht da bist und sie den netten „Polizisten“ reinlässt, nützt das alles nix.

Gruß,

Kannitverstan

2 Like

Hast du dir mal überlegt, wie man die Ausführung von Makros einschänkt? Auf die Makros, die ihr selber programmiert habt?

Weißt du, was passiert, wenn man bei einem Dokument aus einer Email auf „Bearbeitung aktivieren“ klickt?

Ja! VBA IST DAS ALLERLETZTE, WAS MAN FÜR EINE PROGRAMMERSTELLUNG VERWENDEN SOLLTE!

Bei jedem anderen Programm kann man genau bestimmen, ob man es ausführen lässt oder eben nicht. Bei einem VBA-„Programm“ kann man das NICHT!

Lies:
https://www.allianz-fuer-cybersicherheit.de/ACS/DE/Informationspool/Themen/Emotet/emotet_node.html
Zitat:

Deaktivierung von Makros und [OLE-Objekten](https://support.microsoft.com/de-de/help/4032364/how-to-control-the-blocking-of-ole-com-components-in-microsoft-office External Link) in Microsoft Office, Verwendung von signierten Makros: Die generelle Ausführung von Makros sollte (zentral per Gruppenrichtlinie) deaktiviert werden. Innerhalb der Organisation verwendete Makros sollten digital signiert sein. Es sollten nur Makros mit festgelegten digitalen Signaturen von konfigurierten vertrauenswürdigen Orten zugelassen werden.

Die eigentlich einzige Gefahr geht davon aus, dass der Anwender sein Werkzeug -und somit auch die damit verbundenen Schwachstellen und Sicherheitsmaßnahmen - nicht genug kennt.

IMHO ist es Schwachsinn, VBA zu verteufeln. Es werden Möglichkeiten geboten, VBA „sicher“ (in Sinne „nur selbst zugelassene Produkte“) zu verwenden. Damit ist man auf einem ähnlichen Level wie kompilierte Produkte. Hier sich die Administratoren gefragt. Die allgemein angewandte Unlogik „friss oder stirb“ war noch nie wirklich zielführend.

Darüber hinaus muss der Programmierer wissen, prüfen, welche Seiteneffekte sein angedachten Code hat. Bei VBA werden z. B. viel häufiger in einem Produkt unverifiziert ein Blumenstrauß irgendwelcher Bibliotheken genutzt. Das liegt aber nicht an VBA selbst, sonden an dem typischen Nutzerkreis.

Das sind jetzt aber mehrere paar Schuhe. Zum einen muss man aufdröseln, was man mit „Sicherheit“ überhaupt meint (Fragestellung: „vor wem/was will ich mich eigentlich schützen“)

Ein ganz anderer Aspekt ist das Lernen. Hier ist das lernen des Programmieren und das Lernen einer Programmiersprache auseinander zu halten. Oder anders ausgedrückt: Man sollte Sprachen für Lernen und Sprachen für die produktive Nutzung auseinander halten. In erstere sind Paradigmen (z. B. die Objektorientierung) „sauber“ implementiert, so dass das Mischen mehrere Paradigmen nicht möglich ist. Beim produktiven Programmieren ist dieses Mischen im gewissen Rahmen sinnvoll.

Hier musst man aber auch schauen, welcher Lerntyp man ist. Wer durch kurzfristige Erfolge motiviert wird (wer wird das nicht?), Sich aber dann nicht davon blenden lässt, kann auch mit VBA Programmieren lernen und es ist dann ggf. sogar effektiver. Dazu gehört dann halt eine gehörige Portion Selbstreflektion.

Ja, ich merke was. Du verallgemeinerst von einem Haus auf alle Häuser.

Du weißt nicht, wie unsere Firma aufgebaut ist und was für „Geschütze“ und „Mauern“ da sind. Bei uns sitzen keine „alten Omis“ denen man mit einem Enkel-Trick kommen kann.

Hast du dir mal überlegt, wie man die Ausführung von Makros einschänkt? Auf die Makros, die ihr selber programmiert habt?

Da gibt es genügend kompetentes Personal bei uns. Ich muss da nichts wissen, da ich nicht an so einer Position bin.

Weißt du, was passiert, wenn man bei einem Dokument aus einer Email auf „Bearbeitung aktivieren“ klickt?

Ja, das wissen alle bei uns. Und alle werden regelmäßig geschult, Firewall etc.

Ja! VBA IST DAS ALLERLETZTE, WAS MAN FÜR EINE PROGRAMMERSTELLUNG VERWENDEN SOLLTE!

So kannst du das ja gern handhaben und sehen. Und ich bin froh, dass ich mit VBA Dinge erstellen kann (wir arbeiten eh viel mit dem Office-Programm). Von daher nutzt mit Java etc. absolut Nichts

Bei jedem anderen Programm kann man genau bestimmen, ob man es ausführen lässt oder eben nicht. Bei einem VBA-„Programm“ kann man das NICHT!

Nun, ich bin nicht in der Position neue Programme überhaupt bei uns einzuführen. Aber auch da kann man nie zu 100% wissen, ob da nicht doch irgendwo Schadcode drin ist was irgendwann mal sich auslöst - wenn man es am wenigsten rechnet.

Die eigentlich einzige Gefahr geht davon aus, dass der Anwender sein Werkzeug -und somit auch die damit verbundenen Schwachstellen und Sicherheitsmaßnahmen - nicht genug kennt.

korrekt. Und wir sind keine Firma wo „alte Omis“ am Computer sitzen und Hochsicherheitsarbeit leisten.

ebenfalls korrekt.

Klar. In unserem Bereich sitzen aber nur Leute, die wissen, wie man damit umgeht. Auch sind die Programme für jeden Admin offen (falls sie das überhaupt kapieren, was passiert). Und wenn man ein Tool hat, welches 20x „Suchen und Ersetzen“ mit verschiedenen Optionen durchführt oder in einer Excel-Tabelle Daten auswertet (ohne „außerhalb“ irgendwas einzusetzen), KANN man nicht wirklich was falsch machen.
Und wenn dann Leute ankommen, (die unsere Firma unsere Struktur und das, was wir brauchen, nicht kennen) und anfangen zu reden, als wäre man der erste Mensch ist das nicht zielführend. Das erzeugt nur Abneigung und kein „ach, ich höre es mir mal an“

Ich habe zu DDR-Zeiten mit Basic angefangen (KC 85/3) und später aus den Augen verloren. Wieder später habe ich mal was gelesen über den Makro-Recorder und festgestellt: Mensch, das kennst du doch. Das war der Startschuss, mich damit überhaupt zu beschäftigen.
Und warum soll ich Java, C# etc. lernen, wenn es überhaupt keinen Grund für mich gibt, das zu tun? Das, was ich lösen will, habe ich bisher in VBA gut lösen können. Natürlich werde ich keine Action-Spiele programmieren, aber das will ich auch gar nicht. Und ein „4-gewinnt“ kann man auch in Excel gut programmieren :-).
Und auf Arbeit arbeiten wir nun mal mit dem MS-Office-Paket. Und eigene Software dürften wir überhaupt nicht ins Firmennetz bringen. Wäre auch nicht sinnvoll - da ich ja in VBA genügend „Spielraum“ habe. Und das, was ich programmiert habe, hat mir schon mehr als „Stunden“ an Arbeit im Laufe der Jahre gespart. Warum aber mit Kanonen auf Spatzen schießen - vor allem, wenn man keine Kanonen verwenden darf :slight_smile:

Du bist der Programmierer. Du bindest das Zertifikat ein.

Die unternimmt was genau bei einem Mailanhang?

O.M.G.

Hilft offensichtlich nichts.

1 Like