Excel Document Macro Viruses (DMVs) - DMV.XLS Joel McNamara - joelm@eskimo.com 12/27/94 Visual Basic, Applications Edition (VBA) is Microsoft's effort to provide a common macro language for all of its products. It is an extremely powerful language, and combined with automatic macros, offers quite a bit of potential for targeting viruses or logic bombs against selected users. Microsoft Excel 5.0 was one of the first applications to implement VBA. I've only performed a little research on it (Windows version) as a potential trigger for files with DMVs. DMV.XLS is a quick and dirty demonstration of using VBA to infect Excel. The actual commented code is located in "Sheet01" of the workbook. This DMV is harmless, and only demonstrates potential malicious behavior. (For background reading on DMVs, refer to the DMV.DOC file - Word for Windows 6.0 format.) Excel uses a file called GLOBAL.XLM to house global macros. It also features automatic macros. DMV.XLS infects the GLOBAL.XLM file with a DMV that executes when documents are closed. Unlike the Word DMV.DOC sample, individual data files are not infected (although it would seem to be trivial to add the same functionality in Excel). On the surface, Excel appears to provide greater virus risks than Word since code can be triggered by events (double clicking, specified keys being pressed, when data is entered, etc.). VBA also offers some amazing capabilities of targeting specific types of users. This goes way beyond the random, shotgun approach used in conventional viruses. Additionally, as a common macro language, VBA offers the potential of cross-application infections. The DMV.XLS sample clearly demonstrates the chaos someone could spread combining VBA and automatic macros. It is another reason why software manufacturers need to make changes to existing applications to provide users with safeguards against malicious auto-macros. A simple dialog box that prompted whether an automatic macro should be executed would eliminate most of these risks.