Sistemul de automatizare pentru birouri Microsoft este o altă lacună pentru virusul macro

Pachetul de software Microsoft Office este nu numai standardul real al software-ului de birou, ci și un mediu foarte complex și multifuncțional care vă permite să creați soluții concepute în primul rând pentru a utiliza funcțiile Microsoft Office și pentru a automatiza acțiunile de rutină ale utilizatorilor atunci când lucrați cu documente. Această platformă software, numită Model de obiect Microsoft Office sau Microsoft Office Automation, se bazează pe modelul de obiect COM și conține un set extins de clase care oferă acces la aproape orice element sau acțiune disponibilă pentru utilizator atunci când rulează cu Microsoft Office prin interfața grafică.


Model de obiect Microsoft Word (parțial)

Vorbind despre programarea pentru Microsoft Office, adesea înseamnă programe "interne" - macro-uri scrise în VBA (Visual Basic for Applications, implementarea Visual Basic în Microsoft Office) și încorporate direct în documente.


Crearea unui macro pentru Microsoft Excel

Sistemul de automatizare pentru birouri Microsoft este o altă lacună pentru virusul macro

Propuneți utilizatorului să permită macrocomenzi într-un document care conține cod rău intenționat

Obiectele Microsoft Office sunt disponibile nu numai din macro-uri, ci și din programe "externe" în orice limbă care suportă COM. Acestea din urmă pot fi compilate în limbi precum C ++ sau Delphi, aplicații gestionate în Java sau .Net sau scripturi în VBScript și PowerShell - tehnologia COM este disponibilă pentru aproape tot ceea ce se poate executa pe Windows.

Sistemul de automatizare pentru birouri Microsoft este o altă lacună pentru virusul macro

Accesați modelul obiect Microsoft Office de la PowerShell

Modelul de obiect Microsoft Office reprezintă aplicațiile Microsoft Office ca obiecte COM. Dar există și posibilitatea de a adăuga la documente și alte obiecte COM - controale ActiveX care nu sunt legate de Microsoft Office, dar prezente în sistemul de operare. Fiind incluse în document, aceste elemente pot interacționa cu codul de macrocomenzi sau pot executa propriul cod pe baza "proprietăților" obiectului adăugat în document. În mâini cu îndemânare, încorporarea comenzilor ActiveX poate duce de asemenea la execuția codului arbitrar, astfel încât în ​​cele mai recente versiuni de Microsoft Office, în mod implicit, ActiveX-ul încorporat este dezactivat, cu excepția câtorva "whitelist" de elemente. Cu toate acestea, în acest caz, utilizatorul poate permite executarea în mod explicit, dacă se dorește.


Avertizare despre ActiveX încorporat

Oferta de a permite (sau de a interzice) lansarea conținutului activ va fi livrată utilizatorului atunci când documentul este deschis în mod normal în aplicația corespunzătoare. Ce se întâmplă dacă deschideți același document folosind modelul de obiect Microsoft Office?
Exemple de astfel de programe sunt o mare varietate într-o varietate de limbi și pentru o varietate de scopuri:

Exemplu în VBScript

Un exemplu despre PowerShell

Când am studiat aceste exemple, doar o dată am găsit o linie interesantă în cod:

Aplicație.AutomatizareSecuritate proprietate (Excel)
...
Returnează sau stabilește o constanță MsoAutomationSecurity care reprezintă modul de securitate pe care îl utilizează Microsoft Excel când deschide programele fișiere.
...
MsoAutomationSecurity poate fi una dintre aceste constante MsoAutomationSecurity.

msoAutomationSecurityByUI. Folosește setarea de securitate specificată în caseta de dialog Securitate.
msoAutomationSecurityForceDisable. Dezactivează toate macrocomenzile din toate fișierele.
msoAutomationSecurityLow. Activează toate macrocomenzile. Aceasta este valoarea implicită la pornirea aplicației.

Se pare că, dacă aplicația Microsoft Office este pornită ca element de automatizare, atunci codul macro din documentele deschise va fi executat în mod implicit. Cu excepția cazului în care, desigur, modificați în mod specific nivelul de securitate al programului de control. Această valoare implicită nu depinde de setările efectuate de utilizator sau de administrator. Pe lângă macrocomenzi, codul pentru toate controalele ActiveX adăugate în document va fi, de asemenea, încărcat și executat.

Sistemul de automatizare pentru birouri Microsoft este o altă lacună pentru virusul macro

Executarea unei macrocomenzi la deschiderea unui document prin automatizare

Această caracteristică neobișnuită, judecată după tot, este rareori luată în considerare. De exemplu, programele de birou de la alți producători utilizează modelul obiect Microsoft Office pentru a importa și a exporta date în documente Word și Excel. Destul de des există exemple pentru 1C:

Programele 1C, numite "procesare", pot utiliza, de asemenea, COM în general și modelul de obiect Microsoft Office în special. Unele procesări utile sunt furnizate utilizatorului de către producător, de exemplu, prelucrarea "Încărcarea datelor din Desktop Document.epf" vă permite să încărcați datele din documentele de tabelă externe în baza de date.

Sistemul de automatizare pentru birouri Microsoft este o altă lacună pentru virusul macro

Executarea unei macrocomenzi la deschiderea unui document prin procesarea 1C

După cum puteți vedea, proprietatea AutomationSecurity a fost uitată de programatorii 1C.
Pe de o parte, acesta este un exemplu clasic al necesității de a se gândi la securitate în procesul de programare, indiferent de limbajul folosit. Pe de altă parte, care a fost motivul pentru care Microsoft a forțat să părăsească modelul de obiect neprotejat atunci când înăsprirea setărilor de securitate Microsoft Office?

Articole similare