代码审计方式和几种常见的漏洞种类

黑客通常利用的漏洞有:软件编写存在bug、设计存在缺陷、系统配置不当、口令失窃、嗅探未加密通讯数据、系统攻击等等,因此提前做好代码审计工作,非常大的好处就是将先于黑客发现系统的安全隐患,提前部署好安全防御措施,保证系统的每个环节在未知环境下都能经得起黑客挑战,可以进一步巩固客户对企业及平台的信赖。

代码审计

何为代码审计?以及审计方式有哪些?

所谓代码审计是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析,它被认为是安全过程中最关键的阶段之一。是白盒测试的常用方法,相较于黑盒测试,由于白盒测试能更加详细的理解业务程序逻辑,也能更全面地发现安全风险。

代码安全审计通常可以分为:自动化审计和人工审计。为了实现常态化、持续性的安全能力测试,许多企业开始大量使用自动化审计的方法,一定程度上会节省成本,但需要指出的是:目前的自动化审计方式无法准确理解开发人员的代码含义,存在误报的情况,且误报率较高。而人工审计的费用较高和耗时较长(具体费用和时间与代码量有关),但是可以做到三懂:懂代码、懂业务、懂安全,因此自动化和人工审计两种方法并不是相互对立的,而是互为补充,二者并用才是业界代码安全审计的最佳实践。

代码审计

代码审计流程

1.确认的源代码审计范围、最终对象、审计方式、审计要求和时间等内容。

2.先使用源代码审计的扫描工具对源代码进行扫描,完成初步的信息收集,然后由人工的方式对源代码扫描结果进行人工的分析和确认。

3.对源代码审计发现的问题整改或加固。经整改或加固后,源代码审计服务人员进行回归检查,即二次检查。

4.根据第一次和第二次的审查结果,整理源代码审计服务输出成果,最后汇报项目领导。

代码审计常见漏洞

代码审计常见的漏洞

1. 硬编码(密码明文存储)——是指将敏感数据(包括口令和加密密钥,部分账号的密码以及其他敏感信息等)硬编码在程序中。既不安全,也难以维护:password,pass,pwd,jdbc等

2. 跨站脚本漏洞——攻击者可以利用存在XSS漏洞的Web网站攻击浏览相关网页的用户,窃取用户会话中诸如用户名和口令(可能包含在Cookie里)等敏感信息、通过插入恶意代码对用户执行挂马攻击、XSS漏洞还可能被攻击者用于网页篡改。

3. 短信验证码——时间限制防止可爆破,次数限制防止对手机产生攻击,可否自定义防止发送不良信息。

4. SQL注入——注入攻击的本质,是程序把用户输入的数据当作代码执行。sql语句中出现+,append,$(),#等拼接字眼且没有配置SQL过滤文件,则存在sql漏洞。根本解决办法是预编译,也就是sql语句事先编译好了,随后传入参数填坑,不会重新再编译,也就不会有sql注入:select,update,delete,insert等

5. 跨站请求伪装漏洞——攻击者可利用跨站请求伪装 (CSRF) 漏洞假冒另一用户发出未经授权的请求,即恶意用户盗用其他用户的身份使用特定资源。

6. 调试程序残留——代码包含调试程序,如:主函数。调试程序会在应用程序中建立一些意想不到的入口点被攻击者利用。

7. 任意文件上传——未过滤用户输入文件名,导致能够上传恶意可执行文件。需注意有没有配置文件上传白名单,是否有检查后缀名,配置文件是否设置了白名单或者黑名单:upload,write,fileName,filePath等

8. 命令执行漏洞——系统中使用了一些调用操作系统函数的命令,在调用过程中,如果命令的来源不可信,系统可能执行恶意命令。如删除系统文件。

9. 缓冲区溢出——直接拷贝或*,未考虑大小:strcpy,strcat,scanf,memcpy,memmove,memeccpy,Getc(),fgetc(),getchar,read,printf等

10. XML注入——在导入配置、数据传输接口等场景,留意XML解析器是否禁用外部实体:DocumentBuilder、XMLStreamReader、SAXBuilder、SAXParser、SAXReader 、XMLReader、SAXSource 、TransformerFactory 、SAXTransformerFactory 、SchemaFactory等

11. 日志伪造漏洞——将未经验证的用户输入写入日志。攻击者可以利用该漏洞伪造日志条目或将恶意内容注入日志。

12. URL跳转——注意是否配置了url跳转白名单:sendRedirect,setHeader,forward等

13. 敏感信息泄露及错误处理——查看配置文件是否配置了统一错误页面,如果有则不存在此漏洞,如果没有则搜索定位看是否泄露敏感信息:Getmessage,exception等

14. 反序列化漏洞——当输入的反序列化的数据可被用户控制,那么攻击者即可通过构造恶意输入,让反序列化产生非预期的对象,在此过程中执行构造的任意代码:ObjectInputStream.readObject,ObjectInputStream.readUnshared,XMLDecoder.readObject,Yaml.load,XStream.fromXML,ObjectMapper.readValue,JSON.parseObject

15. 不安全的Ajax调用——系统存在不安全的Ajax调用。攻击者能够利用该漏洞绕过验证程序或直接编写脚本调用Ajax方法实现越权操作。

最后,代码审计意义重大,是整个安全保障体系中核心又最重要的工作,往往被人们忽视。天磊卫士提示大家一定不要疏忽代码审计的重要性,防备安全隐患。有助于进一步健全安全建设体系,遵循了相关安全策略、符合安全合规的要求。

展开阅读全文

页面更新:2024-03-07

标签:漏洞   代码   攻击者   口令   源代码   恶意   种类   敏感   常见   方式   程序   用户   系统

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top