代码审计

代码审计

检查源代码中的安全缺陷、编码不规范的地方。

通过自动化工具或人工审查的方式,对程序源代码逐条进行检查和分析,发现这些代码缺陷引发的安全问题,并提供修订措施和建议

代码审计的对象包括并不限于JAVA、C、C#、ASP、PHP、JSP、JS

审计包括

前后台分离的运行架构

WEB服务的目录权限

认证会话与应用平台的结合

数据库的配置规范

SQL语句的编写规范

WEB服务的权限配置

对抗爬虫引擎的处理措施

常见高风险漏洞

非边界检查函数可能导致缓冲区溢出漏洞

可能干扰后续检查的缓存区的指针操作

调用类似于exec()、执行管道这类的命令函数,尤其是使用非静态参数时

输入验证,例如SQL中

文件引入功能

对可能与恶意代码链接的库,返回对内部可变数据结构的引用。恶意代码可能会尝试修改结构或保留引用以观察将来的更改

等……

常见低风险漏洞

客户端代码漏洞不影响服务器端(XSS)

用户名枚举

目录遍历(在WEB应用程序中)

常用的代码审计思路

常见的代码审计方式有:根据敏感关键字回溯参数,查询不可控变量,寻找敏感功能点,通读全文

重点关注:输入点、数据流、输出点(例:打开网页来判断输入点,常见输入点登录,搜索,留言,公告的URL)

通过输入点追踪数据流,主要关注是否存在过滤代码

判断文出错函数是否被其它文件调用

审计内容

参数:参数是否安全,参数是否由用户输入,参数是否进行有效校验

参数格式:参数格式是否进行校验,如:JSON流内容是否合法,字节序列是否合法

其它输入内容:输入内容匹配白名单

输出:输出是否限定字段,输出内容是否在允许范围内,输出关键信息是否加密

信道:信道是否加密

权限:是否限定访问内容

数据库:是否存在默认配置,是否限定访问范围

配置文件:配置文件是否处在不可读位置,是否存在默认配置信息

框架:使用三方框架或三方包时,是否调用了存在问题的函数或方法。如Struts的OGNL,MyBatis的#

CVE:是否包含已公布的漏洞代码。如:序列化漏洞

自动化代码审计工具

RIPS开源的一款工具,具有较强的漏洞挖掘能力,PHP的代码审计工具

​ 检测XSS,SQL注入,文件泄露,本地/远程文件包含,远程命令执行等多种漏洞

​ 有5种级别选项用于显示以及辅助调试扫描结果

​ 标记存在漏洞的代码行

​ 对变量可以高亮显示

findBugs开源的java代码审计工具,静态分析工具,更多工具是收费

​ Bad practice 坏的实践

​ Correctness 一般的正确性问题(可能导致错误的代码)

​ Dodgy 危险代码

​ performance 性能问题

​ Multithreaded correctness 多线程的正确性问题

​ Internationalization 国际化问题(国际化编码转码的时候)

其它的自动化工具:C++ —> cppcheck、flawfinder; JS —> eslint、eslint-plugin-security; python—>pylint、bandit、py-find-injection、pyt

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值