污点分析是什么神奇的代码检查技术?

举报
码界小牛 发表于 2024/04/10 09:50:09 2024/04/10
【摘要】 本文尝试为大家做个简单的讲解:概述、优势、支持识别的漏洞(举例)、污点分析的步骤。

在代码检查领域,经常会被提及一个专业术语“污点分析”,对于一个刚接触的小伙伴来说会很困惑这是什么“高大上”的技术?为什么它会在整个软件开发生命周期里起到一个重要的作用呢?

本文尝试为大家做个简单的讲解:概述、优势、支持识别的漏洞(举例)、污点分析的步骤。

概述

污点分析 Taint Analysis,作为一种SAST静态代码分析里基于数据流分析的技术,用于识别和跟踪应用程序中的输入和输出数据,以及与其相关联的敏感信息,检测这些数据在整个处理过程中是否被篡改胡污染。通过对程序中输入和输出数据的跟踪,污点分析技术可以帮助研发人员识别软件内潜在的安全漏洞和错误。

优势

污点分析技术的应用,让代码检查更加全面和深入。对于整个软件开发过程里有如下这些优势:
1、识别潜在的漏洞:污点分析技术通过检测程序中哪些变量可以受到不可信输入的影响,来识别出潜在的漏洞,帮助研发人员更好地了解软件中可能存在的安全隐患。
2、自动化分析:污点分析技术通过对程序进行自动化分析,可以减少漏洞检测的人工工作量。
3、精细化的跟踪:污点分析技术支持精细化的跟踪可疑数据,找出软件中哪些变量和语句会影响这些数据;同时支持追踪代码执行路径,帮助研发人员更好地了解程序运行的方式。
4、监测攻击:污点分析技术可以监测拦截攻击并提供有关攻击来源的信息,从而更好地保护软件程序的安全性。

支持识别的漏洞

污点分析技术可以识别和注入相关的多种类型的漏洞和错误,包括但不限于以下几种:
1、跨站脚本攻击(XSS):污点分析技术可以检测哪些输入数据会影响web页面,并同时识别潜在的XSS漏洞。
2、SQL注入攻击:污点分析技术可以检测哪些输入数据会影响SQL的查询,并同时识别潜在的SQL注入漏洞。
3、路径遍历攻击(directory traversal):污点分析技术可以检测哪些输入数据会影响文件路径,并同时识别潜在的路径遍历漏洞。
4、代码注入攻击:污点分析技术可以检测哪些输入数据会被当作代码执行,并同时识别潜在的代码注入漏洞。

污点分析的步骤

污点分析技术的运用一般会包括如下几个步骤:
1、污点标记:首先需要先标记可能受到不可信输入影响的变量和输入数据,将其标记为“污点”;而污点通常是由用户或其他程序传递输入的数据。
2、污点传播:这些被标记为“污点”的数据之后会通过程序传播,而我们要做的就是跟踪污点的传播路径。举个例子,如果被标记为污点的数据被赋值给了一个新的变量,那么这个新变量也将被标记为污点。
3、污点检查:在程序执行过程中,污点可能被用于不信任操作,因而导致潜在的漏洞。所以我们需要对污点进行检查,以确保不会被执行于任何不安全的操作,比如输出到非信任的设备或用于执行危险的操作。
4、污点输出:最后,我们应记录所有与污点相关的数据和操作,用于后续的分析和调试。污点输出将提供相关程序中潜在漏洞的详细信息,这将有利于研发人员对软件进行修复与改进。

总的来说,污点分析是一项在SAST领域里非常实用的技术,可以帮助我们研发人员检测和修复程序中的潜在漏洞,提高程序的安全性。

参考链接

1、 https://en.wikipedia.org/wiki/Taint_checking
2、 https://www.synopsys.com/blogs/software-security/taint-analysis/

如果想体验华为云代码检查CodeArts Check,快点击代码检查CodeArts Check_精准定位_代码缺陷_安全检查_华为云体验吧

作者:gentle_zhou  原文链接:https://bbs.huaweicloud.com/blogs/396751

申明:本文已获作者授权,如需转载请联系原作者,如有侵权请联系删除。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。