代码审计-业务逻辑漏洞
slug
series-status
status
summary
date
series
type
password
icon
tags
category
代码审计+业务逻辑漏洞
1、简单介绍一下你对代码审计的理解
- 代码审计是指具有开发和安全经验的人员,通过阅读源码或需求、设计文档(辅助),以自动化分析工具或人工为手段深入分析程序,提前全面的发现系统源码的漏洞并指导开发人员进行修复,保证应用系统的安全运行。
- 在了解业务开发的情况下往往通过审计源码能够更加全面的发现漏洞,代码审计是白盒测试中尤为重要的环节,是检测代码健壮性与安全性的重要途径。
- 随着国家对网络安全的重视以及安全风险左移驱动下,代码审计被越来越多的公司所认可,在行业内逐渐扮演者越来越重要的角色。
2、代码审计的思路是什么
1、快速了解这个系统使用的开发语言,技术,中间件,数据库,框架等常见技术
2、梳理源码对应的系统功能和API、应用到开源组件及版本
3、使用fortify等工具进行源码检测,并对结果人工确定误报。
4、结合各自的漏洞审计技巧,利用搜索引擎快速审计一些常见自编码漏洞、业务逻辑缺陷、通用型漏洞。
5、如有需求对审计的漏洞进行复现
6、出具一份代码审计报告
3、代码设计工作你们是怎么开展的?
(1)系统范围及频率:重点关注互联网系统,重点业务系统以及新上线系统,我们是互联网系统每个月做一次全量代码审计,内网系统上线前开展全量代码审计。
(2)漏洞修复范围:常见的top漏洞,重点sql注入、xss、js硬编码密码密钥、文件上传、命令执行、目录遍历以及高危容易利用的通用型漏洞,例如log4j等
(3)通过日常的安全编码培训给研发赋予漏洞产生原理及安全编码的技能和思维,提前提升代码安全的质量
(4)实行并实行代码审计工作规范,从制度上管理上推动工作落地,简单的说在规定什么部门什么人应该对什么样的系统开展代码审计及具体的要求什么。
(5)代码审计技能培训,因为代码审计专岗人员少,公司系统多,因此培训培养研发通过审计工具平台按照制度要求开展源码检测、误报排查、漏洞修复
(6)针对研发的检测和标记成误报的情况,基于质量进行检查通报。
(7)解决实际工具检测的误报和漏报的情况,具体需要对漏洞复盘,反哺白盒能力以优化检测规则和调整漏洞范围
4、介绍一下SDL分为哪些阶段及每个阶段你都干了什么
软件工程工程学, 软件设计师
系统的全生命周期包括:可行性研究、需求分析、系统设计、开发编码、测试、运营、退役
SDL:全生命周期的管理:
安全需求评审:和产品经理详细了解系统的所有需求,针对每个需求都考虑安全性,提出必要的安全需求。(1)产品经理给了一个登录认证的需求,我们需求了解清楚系统服务的用户有哪些?为谁用?有多少?将来是否开放到互联网?存储的系统信息都有什么重要程度是什么?业务能够程度什么风险?然后在提出至少要增加验证码,至于增加图形,滑块,短信结合上述调研情况来,总而言之对于业务重要,数据重要,开放到互联网上越满足这三个条件,验证码的要求越高。还有其他的安全需求,怎么最大限制的保证数据不泄露,比如通过限制查看敏感数据的条件,脱敏展示,查看时增加验证码,最大限度减少批量导出和查看敏感信息,对于批量下载数据的功能一定要慎重等等。(2)提出防御常见漏洞的需求
安全设计实现:(1)需求评审通过之后,设计将安全需求实现,例如验证码需要多少位应用什么技术去实现。(2)针对开发应用的具体技术进行安全设计,给出要求,帮助开发在技术选型上提前避免常见的漏洞,特别是不规范的开源组件漏洞,不规范引入的开源代码产生的漏洞 (3)系统具体业务功能的安全设计,尽量缩减用户的权限和互联网开发权限,例如后台管理不能开发到互联网上,批量下载功能用户范围最小化 (4)系统管理员和业务管理员进行分离。
安全编码:(1)向开发培训安全开发意识和安全编码技能 (2)提供能够实现安全需求的代码案例及解决方案 (3)控制代码泄外出泄露
安全测试:上线前借助于功能测试开展IAST灰盒测试,开展代码审计与渗透测试
安全运营:(1)缩减互联网暴露面 (2)下线不必要的服务和端口 (3)监控注意业务人员对敏感数据的使用和访问 (4)定期开展代码设计和渗透测试
5、在实际的工作中都遇到了什么问题及怎么解决的
1、人力不够用,人工协调投入时间长:开发了代码审计支持平台,实现了一些必要的自动化工作通知,例如将源码检测,漏洞误报确定、漏洞修复情况通知到研发技术对接人,以替代人工通知。
2、审计工具误报率高:例如XSS漏洞平台误报率高,通过统一规范XSS漏洞修复工具,将其配置在平台上,只要开发系统使用的统一工具,平台就不会检测到漏洞。
3、审计工具部分漏洞覆盖不到:例如常见的通用性未授权漏洞,前端硬编码密码密钥问题,通过新增产品漏洞检测规则和调整检测范围,一定程度上保障了漏洞的覆盖率。
4、研发不重视对工作不配合:及时向更好的责任部门反应,及时宣导制度,通报工作情况。
6、如何降低漏洞的误报率
针对误报率搞得漏洞重新评估,调整漏洞的检测规则,协调厂商对产品升级。
7、如果让你开发一套代码审计平台追求什么或应该注意什么
漏洞的误报率、漏洞的覆盖范围、对接开发其他的工具和平台、例如jenkins,并入开发流水线、漏洞的管理与推修,发现确定及修复漏洞的成果展示与输出【甲方很重要,反应开发的投入和产出,也就是说这个平台及这工作的价值】
8、你认为怎么治理开源组件的漏洞
(1)统一开发更新依赖库的源为公司的源,严禁私自添加开源组件
(2)对公司的maven仓库中的开源组件进行安全管理,及时给存在漏洞的开源组件打标签。需要对接maven官网【现在官网能查出来每个组件是否有漏洞,这个功能很好】或直接使用开源组件检测工具对maven进行检测并反馈给maven运维人员
(3)上线前对系统的开源组件漏洞进行检测,发现组件存在高危容易利用的漏洞要求修复。
(4)可使用青藤云的插件并入到应用服务器的进程中检测线上的组件使用情况。
9、你知道的业务风险都有哪些怎么解决













Loading...