当前位置: 编码机 >> 编码机优势 >> 微软VBA宏安全政策为何一再反复VBA真
前言
这一次是Office对VBA说No了么?
早在年2月的时候,微软就曾宣布,将于年4月,在版Office(也即Office版)上开始推出阻止来自网络不受信任位置的VBA代码的运行。将于年7月,在版Office(也即Office)上,开始推出阻止来自网络不受信任位置的VBA代码的运行。未来还计划在Office、Office和Office上做出相应的改变。
年7月7日,微软称根据用户反馈,将取消这一变动,不再阻止VBA宏。
年7月20日,微软再次宣布恢复最初的阻止VBA宏的政策。
被称之为巨硬的微软,在小小的VBA宏安全政策上反复如斯,正所谓事出反复必有妖啊!本文将围绕VBA的安全性,来解读这一现象背后的蹊跷,从此遇见VBA不再迷路。
一、是阻止VBA,还是禁用VBA?
有人说,这次对VBA的阻止,相当于禁用VBA。禁用岂不是相当于判了VBA死刑?这可不得了!有人说,这次阻止后,主要还是需要用户自行确认和启用VBA宏,跟以前的宏安全政策并没有本质的不同,就是多了个步骤而已。
微软官方,是这么阐述的:更改Office应用程序的默认行为,以阻止来自Internet文件中的宏。若Internet中的位置被确定为可信,则不会阻止。同时,被阻止的VBA,在一番设置确认后,可再次被启用运行。
由此可见,阻止并非禁用,否则Office可以直接干掉来自文件中的VBA,或者直接不再支持VBA,岂不更容易。既然允许VBA存在,为何还要拼命阻止?
二、Office原有默认行为是什么呢?为何解决不了Office安全问题?
1、Office对VBA的原默认行为
按理说,这么设置,也能有效阻止非信任宏的运行
既然这次是阻止Office文件中的宏运行,那原有默认行为肯定就没有阻止呗。事实上,原有VBA宏代码的安全性,是通过宏安全性设置来实现的。如果用户不信任宏,那设置为禁用即可,即可有效阻止不信任宏的运行。
2、为何Office原默认行为解决不了安全性问题?
Excel为例,也不是所有Office文件都可存储VBA代码
自Office以后,仅有特殊扩展名的Office文件,如Excel的.xlsm.xls等少数扩展名的文件,才可保存VBA代码,可以说通过扩展名就可以判断有无VBA代码,进而进一步断定文件中是否存在宏病毒。
可以说,Office的VBA宏威胁,经过前述的策略,可以降至很低了。但为何微软仍然要默认阻止VBA运行,来进一步提升Office的安全性呢?
原因其实很简单:用户得去设置宏安全性啊,谨慎运行带有宏的Office文件呀。可惜,现实中,如此简单的动作,也有很多用户会直接视而不见。不管什么文件,拿来就双击,遇到安全提示,则直接略过允许执行。染上病毒,又责怪Office安全性太差。
所以,所谓VBA安全威胁,并非VBA本身,而是用户行为。用户行为本身是一个巨大的敞口,这是Office本身难以控制的。真可谓,自己作死,Office背锅呀!
所以,微软不得不评估,那些缺乏安全意识的用户对Office声誉的影响。最后,来个彻底的,统一阻止VBA运行,要想运行,就得来个稍微复杂点的设置。反正懂VBA的也懂这个,不差那么一下两下,但对于不懂的小白用户们,他们就再也偷不了懒,再也放任不了潜在的威胁啦。
三、Office的安全关VBA什么事?为何必须要阻止VBA才能达成所愿?
难道仅仅是因为被人讨厌么?
开发工具千千万,Office开发,各路神仙都可以来凑热闹,为何安全责任唯独要让VBA来背?
1、VBA只是编程开发工具之一,不仅错不在己,也难堪大任!
VBA作为开发工具之一,尽管录制宏,成为事实上最早的机器写代码,但其本身并无主观恶意。作为工具,其行为是由使用者来驱动的。难不成杀人的刀,也有过错?相信大家都会有此疑惑。
要说制造木马病毒之类的,普遍作为脚本使用的VBA,肯定算不得上乘的选择。君不见,VBA缺陷一箩筐,是这也不行,那也不行。VB/VBA连函数指针都是藏了又藏,搞病毒,搞黑客技术,岂不是在说笑!
在专业人士眼里,VBA的源码极难隐藏自己的行踪,无论是识别还是阻止,所需成本极低。使用VBA进行所谓的黑客术,无异于皇帝新装,是很愚蠢的。所以,稍微有点计算机素养的攻击者,都不会选择VBA作为进攻武器,更别提专业人士了。
2、VBA导致的不是安全问题,而是安全意识
安全意识的淡泊,才是罪魁祸首
VB/VBA最大的问题在于其过于成功。而成功的关键点,就在于极大地降低了编程的门槛。这个门槛里,包含了两层含义。
其一,降低了编码的难度。几乎不需要计算机专业知识,就可以上手编码,利用编程来高效地驱动计算机进行作业。这使得该工具,天然成为业余人士的聚集地,在各自专业领域开发了数不清的VBA应用。在推广这些应用的过程中,这些业余人士充当了麻木安全意识的帮手。
让用户无视宏安全性,选择较低安全水平的设置。在出现安全提醒时,让用户无视,直接点击运行。久而久之,普通用户完全被麻木了,形成了极强的侥幸心理。这为宏病毒得以运行,创造了绝佳的温床。
其二,降低了VBA代码的执行难度。Office将自身的运行特征(如工作薄启动、工作表选择等事件)与VBA进行了捆绑,以此可获得良好的VBA自动化体验。这其实是降低了VBA代码执行的门槛,正所谓运行环境零配置嘛。
危险代码,必须要被执行才能发挥作用。而在现代系统中,执行代码,是需要非常高的权限的。外部攻击者,要获得这种权限,还要躲避系统安全、杀软等的监控,已是难上加难。不是专业人士,通常很难办到。
但是,Office提供的VBA无阻止模式,为危险代码的运行创造了极低的门槛。Office文件几乎是办公人士的日常对象,借助这一高频特征,危险代码就可以获得稳定的启动时机。
VBA虽然广受专业人士诟病,但可直接驱动系统API,甚至还可以直接ShellCode。尽管VBA直接攻击很愚蠢,但VBA作为桥梁,启动危险代码的执行,还是绰绰有余的。所以,阻止其实是提高VBA代码的执行门槛,让危险代码无桥可过。
安全意识的缺位,反倒让Office的便捷,给攻击者提供了便利。不是VBA很危险,而是使用极傻的策略,也能捞出一群傻鱼儿(这不就是电信诈骗的惯用伎俩么)!只不过,VBA这锅不背,那就得Office来背!所以,VBA这锅背的无话可说!
四、VBA被阻止运行,意味着什么?VBA不再是零配置了?
1、VBA被阻止自动运行,影响几何?
VBA在业余人士眼里是宝贝,不仅因为代码可读性好、计算机专业知识负担少,更是因为无需编译链接的所见即所得。但很多专业人士眼里尚能可用,是因为其拿来即用,便捷为王。如果VBA需要一番配置,才可用,那VBA势必又被作死一回。
一来,VBA应用的推广,将面临困难。VBA被阻止运行,随文件分发而分发的模式,将受到挑战。推广者,必须要教育用户,如何开启被阻止的VBA代码。虽然及其简单,但面向实际用户时,即便枝枝说在叶叶上,也未必能凑效。教育成年人学点新技能,就像人生大道理一样简单却复杂,想必有所经历的都懂。
二来,易用的可不止VBA一家了,Python和JS早就蠢蠢欲动。虽然单就语言性能,这些伺机而动者,未必是VBA的对手,但别人有C托底,还可跨平台,这在互联网时代,无疑让VBA难以招架。如此,在Office这块古老的天地里,VBA将会逐步让出生态位。
2、VBA被阻止运行,很难一刀切,阻止的是未来模式!
不过还好,这种阻止,目前并非一刀切。目前主要针对两个Windows版本,1个是传统PC版的Office,另一个是更移动化的Office。这并非微软心慈手软,给旧版留有残喘空间,因为其计划里还包含PC版的Office-。尽管如此,但却没有包含Office版之前的版本,这是为何?
微软的Windows系统和Office软件,在版本划分上有几个分水岭。Windows7及之前的NT版本,属于非移动互联网概念的NT版本,之后便进入移动互联网概念主导下的版本。Office则在版之前属于非移动互联网概念的版本,之后便进入移动互联网概念。
移动互联网,天然与大数据、云计算是一块儿的,是数字经济不可或缺的灵魂。为何说Win7和Office是最后一版经典系统和Office,原因就在这儿,懂的都懂。自此后,各大传统软件,都在移动互联网思维的主导下,开启了平台化。传统桌面软件,一去不返。
所以,作为传统桌面软件,包括Win系统在内,一经发售,官方的可控性就会被极大地削弱。因此,在没有专项补丁的情况下,微软很难阻止之前单机版的Office,而对于深度可控的Windows上的一切,就不是你我说了能算的了。这不仅在VBA被阻止一事中,可窥斑见豹,在政府采购中剔除这些版本,也能说明问题。
因此,对于VBA的阻止运行,就范围而言,仍然是基于其可控范围的未来模式。
3、VBA被阻止的范围?如何被阻止?
VBA于Office微软而言,守护的小白这条线,微软因此而发家,又岂肯轻易让出。干掉VBA,只会便宜其他潜在竞争者。阻止VBA,只会降低Office的易用性。这种损人不利己的事,微软怎么可能会因为小白用户的安全意识问题,而亲自埋单呢!所以这次的阻止,不但范围极其狭窄,更甚至仅算形式上回应舆论关切。
不但版本有限,还来了个一波三折的反复。阻止来自互联网的Office文件中的VBA,那用U盘拷贝的呢?用压缩包传递的呢?若Office文件中没有宏的呢?
是不是很熟悉?
再来看看VBA是如何被阻止的?添加WEB(MOTW)的标记,默认锁定文件。如果大家下载过chm电子书,一定不会感到陌生。下载后,运行前,解除锁定即可如初。但的确,可以规避无安全意识的小白们直接双击带来的风险。
事,就是这么个事儿,假不假BtOfficer说了不算,但VB修改文件属性即可完整规避相应的影响,倒是可以试一试。