等保测评2.0:应用访问控制 – 作者:起于凡而非于凡

 1. 说明

本篇文章主要说一说应用测评中访问控制控制点的相关内容和理解,以及Scada软件的一些介绍。

 2. 测评项

a)应对登录的用户分配账户和权限;

b)应重命名或删除默认账户,修改默认账户的默认口令;

c)应及时删除或停用多余的、过期的账户,避免共享账户的存在;

d)应授予管理用户所需的最小权限,实现管理用户的权限分离;

e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则;

f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级;

g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问。

3. 测评项a

a)应对登录的用户分配账户和权限;

3.1. 要求1

如果从字面意思来看,就是一个废话,用户都登录账户了,自然就存在着账户。
这里的意思是应该是你本来就存在“多个账户”,然后当用户使用时要适当的“分配账户”给用户,而账户再拥有不一样的权限,这样就实现了将权限通过账户分配给用户(自然人)。
所以,该测评项就需要应用系统中存在至少两个账户,且这两个账户的权限不一样。

嗯……实际测评中我还真遇到过基本缺乏访问控制功能的,倒不是完全缺乏访问控制(鉴别)功能,在不登录的情况下,可直接访问后台地址。
这是属于高风险项:

图片[1]-等保测评2.0:应用访问控制 – 作者:起于凡而非于凡-安全小百科

而是只有一个账户或者数个账户,但是登录后没有权限分配机制,没有在代码中做这个功能……

3.2. 要求2

在测评要求中测评实施如下:

图片[2]-等保测评2.0:应用访问控制 – 作者:起于凡而非于凡-安全小百科

对于应用系统,这个没什么好查的,可忽略。

 4. 测评项b

b)应重命名或删除默认账户,修改默认账户的默认口令;

其实就是看一看有没有存在admin、system等常见的默认账户用户名,如果存在,不管它到底是不是实际的默认用户,都算是不完全符合要求。
另外有些应用系统的默认账户虽然不使用admin、system等常见的默认账户用户名,但是它这个软件都是用的这个默认用户名,这样的话也得改。

 5. 测评项c

c)应及时删除或停用多余的、过期的账户,避免共享账户的存在; 

主要针对管理员账户、后台账户进行判定,一般都是符合的。

 6. 测评项d

d)应授予管理用户所需的最小权限,实现管理用户的权限分离; 

如果业务比较多,比如医院的系统、财务系统或者其他系统,权限本来就会分得比较细,甚至非常细。
这种情况下,给个符合是没有多大问题的。

如果业务规模比较小,可能权限分配的粒度就非常粗了。
我就遇到过,某个应用系统就两个角色,一类是普通用户,一类是后台用户,这种只能往部分符合、不符合的方向去判定了。

 7. 测评项e

e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则; 

没什么好说的,一般都是超级管理员或者系统管理员具备这方面的权限,基本上是可以判定为符合的。

 8. 测评项f

f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级; 

8.1. 访问控制的粒度为用户级

这里其实细究的话,从某个角度上来说,有一部分应用系统是不完全符合的。
基本上应用系统的权限分配方式都是角色拥有权限,用户再属于某个角色,这样用户也就获得了权限。

但是如果要达到访问控制的粒度为用户级,应该还要有一个功能,就是也能直接把某个具体的权限赋予给某个具体的用户。
这样,粒度就确切的达到了用户级。

否则,你想调整权限,实际就得调整角色的权限,角色下面有多个用户,你就相当于调整了某一类用户的权限。
除非你为了实现细粒度的控制,某些角色下面只有一个用户……

当然,实际测评中根据具体情况进行结果判定,没有必要这么深究。

8.2. 访问控制的粒度达到表级

这里并不是让你跑去数据库中进行查看,直接在应用系统中判断就好。
应用系统中一个表单页面可以大概的类比于数据库中的一个表,比如个人信息表、业务表等。
(当然,可能某些表单页面是由多个表复合而成的,这个就不管它了。)

所以这个就是要看权限分配的时候,是否能直接对表单页面的权限进行分配,比如允许访问什么的。
表单页面的权限一般就是功能栏、菜单栏的权限分配,大部分应用系统都可以做到。
甚至有些做得更细致,比如细致到某个表单的按钮的权限上。

8.3. 访问控制的表现

在应用系统中,限制了用户的某些权限,比如查看某个表单的权限,一般有两种方式。

一种是表单的栏目直接不显示:
C/S架构中,这样基本上就没有问题了,除非它的那个表单实质上是另外一个窗口,存在exe,而exe里没有对用户的权限进行判定。
B/S架构中,这样基本上也没问题了,但是最好还是试验下,比如你先登录有相关权限的账户,将表单的地址记下来,然后再登录没有权限的账户,直接通过地址去访问表单,看是否能够成功。有些B/S的表单可能是用ajax方式显示的,这样的话,你需要找到接口,登录后使用jquery的get方法或者post方法去访问相关接口。

实际上这就是另外一个高风险判定的一部分吧(虽然不是这个测评项):

图片[3]-等保测评2.0:应用访问控制 – 作者:起于凡而非于凡-安全小百科插一句嘴,对于这个高风险项,如果要搞清楚,其实需要对应用系统做渗透

另外一种就是没有权限的按钮或菜单等照样显示,但是你点不进去,菜单或者按钮处于禁用状态。
对于B/S架构的,其实还是要按照上面的方式试一试它的后台有没有同样做了权限控制,还是只是在前端进行了限制。

 9. 测评项g

应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问。 

这个就没什么好说的了,基本就没有能实现的。

 10. Wonderware公司的Scada软件

对Wonderware公司的Scada软件涉及到访问控制方面的东西进行一些小小的介绍。

Scada的含义如下:

SCADA(Supervisory Control And Data Acquisition)系统,即数据采集与监视控制系统。SCADA系统是以计算机为基础的DCS与电力自动化监控系统;它应用领域很广,可以应用于电力、冶金、石油、化工、燃气、铁路等领域的数据采集与监视控制以及过程控制等诸多领域。

大概长这样:

图片[4]-等保测评2.0:应用访问控制 – 作者:起于凡而非于凡-安全小百科

这里主要说一说使用Wonderware公司的产品编写出来的Scada软件。
(下文涉及到的Scada软件均指使用Wonderware公司的产品编写出来的Scada软件)

Scada软件内部有一个叫做访问级别的属性。
软件中会存两个默认用户:Administrator和None
其访问级别为:9999(最高等级)和0
他们的访问级别不能更改,同时至少Administrator账户是不能删除的。
Administrator账户的默认口令是wonderware,访问级别 “=9000” 的用户可以更改“Administrator”口令,但无法更改“None”操作员的口令。

有可能在软件界面上会显示用户的访问级别:

图片[5]-等保测评2.0:应用访问控制 – 作者:起于凡而非于凡-安全小百科

一般来说,这种Scada软件在都会做得比较简陋,极大概率不可能在页面上给你做一个什么权限分配、角色分配的功能。
甚至,有些软件连口令修改功能都没有,如果要修改口令,还需要重新在WindowMaker 开发工具(类似于visual studio)中重新设置口令。
而且访谈也不靠谱,极有可能配合人员是不清楚这些东西的……

Scada软件实现权限判断,主要就是依靠这个访问级别:

图片[6]-等保测评2.0:应用访问控制 – 作者:起于凡而非于凡-安全小百科图片[7]-等保测评2.0:应用访问控制 – 作者:起于凡而非于凡-安全小百科图片[8]-等保测评2.0:应用访问控制 – 作者:起于凡而非于凡-安全小百科

 

所以Scada的访问控制的粒度可以很细,比如客体达到某个动画组件、文本框的级别:

图片[9]-等保测评2.0:应用访问控制 – 作者:起于凡而非于凡-安全小百科

知道了这些,根据不靠谱的访谈,大概就能对访问控制的测评项做出一个基本的判断了,这里就不列举了。

来源:freebuf.com 2020-07-19 21:30:49 by: 起于凡而非于凡

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论