信息安全缺陷周话.pdf
- 文档编号:14660840
- 上传时间:2023-06-25
- 格式:PDF
- 页数:398
- 大小:15.59MB
信息安全缺陷周话.pdf
《信息安全缺陷周话.pdf》由会员分享,可在线阅读,更多相关《信息安全缺陷周话.pdf(398页珍藏版)》请在冰点文库上搜索。
1录录1【缺陷周话】第1期:
空指针解引原创360代码卫代码卫2018-09-1015:
11收录于合集#缺陷周话59个聚焦源代码安全,罗国内外最新资讯!
*声明:
缺陷周话栏系列章由360代码卫团队原创出品。
未经许可,禁转载。
代码审计是使静态分析发现源代码中安全缺陷的法,能够辅助开发或测试员在软件上线前较为全地了解其安全问题,防患于未然,因此直以来都是学术界和产业界研究的热点,并且已经成为安全开发命周期SDL和DevSecOps等保障体系的重要技术段。
360代码卫团队基于主研发的国内款源代码安全检测商具,以及余年漏洞技术研究的积累,推出“缺陷周话”系列栏。
每周针对CWE、OWASP等标准中的类缺陷,结合实例和具使进详细介绍,旨在为开发和安全员提供代码审计的基础性标准化教程。
缺陷周话第1期空指针解引1、空指针解引C语空指针的值为NULL。
般NULL指针指向进程的最地址,通常这个值为0。
试图通过空指针对数据进访问,会导致运时错误。
当程序试图解引个期望空但是实际为空的指针时,会发空指针解引错误。
对空指针的解引会导致未定义的为。
在很多平台上,解引空指针可能会导致程序异常终或拒绝服务。
如:
在Linux系统中访问空指针会产Segmentationfault的错误。
详细请参见CWEID476:
NULLPointerDereference(http:
/cwe.mitre.org/data/definitions/476.html)。
2、空指针解引的危害空指针解引是C/C+程序中较为普遍的内存缺陷类型,当指针指向效的内存地址并且对其引时,有可能产不可预的错误,导致软件系统崩溃。
空指针引缺陷可能导致系统崩溃、拒绝服务等诸多严重后果。
2018年19,CVE中共有100多条漏洞信息与其相关。
其中包括18个Linuxkernel漏洞,部分漏洞如下:
2CVE-2018-16517NetwideAssembler的asm/labels.c件中存在空指针解引,导致允许攻击者进拒绝服务攻击。
CVE-2018-16428GNOMEGlib2.56.1,gmarkup.中的g_markup_parse_context_end_parse()函数存在个空指针解引。
CVE-2018-16329ImageMagick7.0.8-8之前版本,MagickCore/property.c件中的GetMagickProperty()函数存在空指针解引。
CVE-2018-16328ImageMagick7.0.8-8之前版本,MagickCore/log.c件中的CheckEventLogging()函数存在空指针解引。
3、示例代码3.1缺陷代码上述例代码虽然在第16对指针p进了空验证,但由于验证逻辑不完整,在第20传函数foo中的指针p仍可能为空指针。
从导致空指针解引的发。
使360代码卫对上述例代码进检测,可以检出“空指针解引”缺陷,显等级为。
如图1所:
3图1空指针解引检测例3.2修复代码4在上述修复代码中,在第19对指针p为空的情况进了处理,当指针p为空时,函数npd_check_call_might()返回,避免了第23传函数foo中的指针p为空指针。
使360代码卫对修复后的代码进检测,可以看到已不存在“空指针解引”缺陷。
如图2:
5图2:
修复后检测结果4、开源代码检测计划某项空指针解引示例开源代码检测计划是项免费的公益计划。
通过使360代码卫对开源项进源代码检测和审计,找到源代码中存在的安全缺陷并及时与项开发员进沟通和确认,使得开源项的安全性得到提。
以下是开源项检测计划中检测出的个“空指针解引”例,如图3所。
图3开源项检出“空指针解引”4.1缺陷代码在缺陷代码中,指针P在第133通过ibwgetnode(iface)函数返回值进赋值,并在第136p-limit=speed;中进使,通过ibwgetnode(iface)函数的实现分析,可以看到在162中返回NULL值,因此当p-limit=speed;操作时,由于在之前并没有对P是6否为空进判断,导致空指针解引。
4.2修复代码针对该空指针解引问题的提出,开发员在近期对相关代码进了修复。
在139对p进解引前,进了空判断,从避免了解引空指针。
5、如何避免空指针解引7为了避免空指针解引的发,需要在代码编写过程中养成良好的编程习惯,如:
(1)指针在使前需要进健壮性检查,从避免对空指针进解引操作;
(2)当调函数的返回值可能为空时,需要对函数返回值进空验证,从避免空指针解引;(3)在释放指针指向的空间后,需要将指针的值赋为空。
(4)确保异常被正确处理。
关联阅读开源软件源代码安全缺陷分析报告框架类软件专题开源软件源代码安全缺陷分析报告CNCERT发布开源软件代码安全缺陷分析报告360代码卫帮助思科公司修复多个产品危安全漏洞(附详细技术分析)ISC2018|听360代码卫讲述AdobeReaderDC漏洞挖掘的那些事“360代码卫”帮助Linux内核发现多个安全漏洞(附技术分析)*360代码卫团队原创出品。
未经许可,禁转载。
转载请注明“转360代码卫”。
【缺陷周话】第2期:
SQL注原创360代码卫代码卫2018-09-1717:
10收录于合集#缺陷周话59个聚焦源代码安全,罗国内外最新资讯!
*声明:
缺陷周话栏系列章由360代码卫团队原创出品。
未经许可,禁转载。
代码审计是使静态分析发现源代码中安全缺陷的法,能够辅助开发8或测试员在软件上线前较为全地了解其安全问题,防患于未然,因此直以来都是学术界和产业界研究的热点,并且已经成为安全开发命周期SDL和DevSecOps等保障体系的重要技术段。
360代码卫团队基于主研发的国内款源代码安全检测商具,以及余年漏洞技术研究的积累,推出“缺陷周话”系列栏。
每周针对CWE、OWASP等标准中的类缺陷,结合实例和具使进详细介绍,旨在为开发和安全员提供代码审计的基础性标准化教程。
缺陷周话第2期SQL注1、SQL注所谓SQL注,就是通过将SQL命令插应程序的http请求中,并在服务器端被接收后于参与数据库操作,最终达到欺骗服务器执恶意的SQL命令的效果。
理论上来讲,应程序中只要是与数据库有数据交互的地,论是增删改查,如果数据完全受户控制,应程序又处理不当,那么这些地都是可能存在SQL注的。
前乎所有的开发语如:
JAVA、PHP、Python、ASP等都可以使SQL数据库来存放数据,处理不当就可能导致SQL注问题的发。
本篇章以JAVA语源代码为例,分析SQL注产的原因以及修复法。
SQL注详细请见CWE-89:
ImproperNeutralizationofSpecialElementsusedinanSQLCommand(SQLInjection)(http:
/cwe.mitre.org/data/definitions/89.html)。
2、SQL注的危害恶意攻击者除了可以利SQL注漏洞获取数据库中的信息(例如,管理员后台密码、站点的户个信息)之外,甚在数据库权限够的情况下可以向服务器中写句话马,从获取webshell或进步获取服务器系统权限。
2017年12018年9,CVE中共有793条漏洞信息与其相关。
部分CVE如下:
CVE-2018-13050ZohoManageEngineApplicationsManager13.x中存在SQL注漏洞,通过/j_security_checkPOST请求中的j_username参数可以注sql语句。
9CVE-2017-16542ZohoManageEngineApplicationsManager13程序可以通过manageApplications.do?
method=insert请求中的name参数进SQL注。
CVE-2017-16849ZohoManageEngineApplicationsManager13允许通过/MyPage.do?
method=viewDashBoard中的forpage参数进SQL注。
CVE-2017-5570在eClinicalWorksPatientPortal7.0build13中发现MessageJson.jsp中存在的盲注,但是只能由经过份验证的户通过发送HTTPPOST请求来利。
并且恶意攻击者可以通过该漏洞使诸如select_loadfile()之类的法将数据库数据转储到恶意服务器。
3、示例代码3.1缺陷代码本章节中使例代码来源于SamateJulietTestSuiteforJavav1.3(https:
/samate.nist.gov/SARD/testsuite.php),源件名:
CWE89_SQL_Injection_connect_tcp_execute_01.java。
1011在上述代码可以看到数据在54被污染,在第58中将污染数据传递给data,并未经任何安全处理就在第115中直接于SQL拼接,且参与数据库操作,从导致SQL注的产。
使360代码卫对上述例代码进检测,可以在件第115检出“SQL注”缺陷,显等级为,同时,提供跟踪路径可以清晰分析缺陷产的过程。
如图1、图2所:
12图1SQL注检出缺陷的source点13图2SQL注检出缺陷的sink点3.2修复代码在上述修复代码中的第305,执SQL时采的预编译,使参数化的语句,户的输就被限制于个参数当中。
通过图3可以看出,360代码卫对修复后的代码并未检出。
14图3SQL注修复例4、如何避免SQL注常见的修复法:
1.使预编译处理输参数:
要防御SQL注,户的输就不能直接嵌套在SQL语句当中。
使参数化的语句,户的输就被限制于个参数当中。
如下所:
2.输验证:
检查户输的合法性,以确保输的内容为正常的数据。
数据检查应当在客户端和服务器端都执,之所以要执服务器端验证,是因为客户端的校验往往只是减轻服务器的压和提对户的友好度,攻击者完全有可能通过抓包修改参数或者是获得页的源代码后,修改验证合法性的脚本(或者直接删除脚本),然后将法内容通过修改后的表单提交给服务器等等段绕过客户端的校验。
因此,要保证验证操作确实已经执,唯的办法就是在服务器端也执验证。
但是这些法很容易出现由于过滤不严导致恶意攻击者可能绕过这些过滤的现象,需15要慎重使。
3.错误消息处理:
防范SQL注,还要避免出现些详细的错误消息,恶意攻击者往往会利这些报错信息来判断后台SQL的拼接形式,甚是直接利这些报错注将数据库中的数据通过报错信息显出来。
4.加密处理:
将户登录名称、密码等数据加密保存。
加密户输的数据,然后再将它与数据库中保存的数据较,这相当于对户输的数据进了“消毒”处理,户输的数据不再对数据库有任何特殊的意义,从也就防了攻击者注SQL命令。
推荐阅读【缺陷周话】第1期:
空指针解引360代码卫帮助思科公司修复多个产品危安全漏洞(附详细技术分析)“360代码卫”帮助Linux内核发现多个安全漏洞(附技术分析)*360代码卫团队原创出品。
未经许可,禁转载。
转载请注明“转360代码卫”。
【缺陷周话】第3期:
内存泄漏原创360代码卫代码卫2018-09-2511:
54收录于合集#缺陷周话59个聚焦源代码安全,罗国内外最新资讯!
*声明:
缺陷周话栏系列章由360代码卫团队原创出品。
未经许可,禁转载。
代码审计是使静态分析发现源代码中安全缺陷的法,能够辅助开发或测试员在软件上线前较为全地了解其安全问题,防患于未然,因此直以来都是学术界和产业界研究的热点,并且已经成为安全开发命周期SDL和DevSecOps等保障体系的重要技术段。
16360代码卫团队基于主研发的国内款源代码安全检测商具,以及余年漏洞技术研究的积累,推出“缺陷周话”系列栏。
每周针对CWE、OWASP等标准中的类缺陷,结合实例和具使进详细介绍,旨在为开发和安全员提供代码审计的基础性标准化教程。
缺陷周话第3期内存泄漏1、内存泄漏内存泄漏指由于疏忽或错误造成程序未能释放已经不再使的内存。
内存泄漏并指内存在物理上的消失,是应程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从造成了内存的浪费。
或者说,由于软件法有效跟踪和释放分配的内存,从导致性能下降。
详细请参见CWEID401:
ImproperReleaseofMemoryBeforeRemovingLastReference(MemoryLeak)(http:
/cwe.mitre.org/data/definitions/401.html)。
2、内存泄漏的危害内存泄漏是C/C+程序中常见的漏洞类型,会因为减少可内存的数量降低计算机的性能,甚导致全部或部分设备停正常作或者应程序崩溃。
2018年19,CVE中共有63条漏洞信息与其相关。
部分漏洞如下:
CVE-2018-17234HDFHDF51.10.3版本H5Ocache.c中的H5O_chunk_deserialize()函数存在内存泄漏,导致允许攻击发起拒绝服务攻击。
CVE-2018-16807Bro是个开源的络分析和安全监控的框架。
Bro2.5.5及之前版本中的Kerberosprotocol解析器的scripts/base/protocols/krb/main.bro件存在内存泄漏。
攻击者可利该漏洞造成拒绝服务。
CVE-2018-16750ImageMagick是美国ImageMagickStudio公司的套开源的图象处理软件。
该软件可读取、转换、写多种格式的图。
ImageMagick7.0.7-1729版本及之前版本中的coders/meta.c件的formatIPTCfromBuffer()函数存在内存泄漏。
CVE-2018-16641ImageMagick7.0.8-6版本中的coders/tiff.c件的TIFFWritePhotoshopLayers()函数存在内存泄漏漏洞。
攻击者可利该漏洞造成拒绝服务。
3、示例代码本章节中使例代码来源于SamateJulietTestSuiteforC/C+v1.3(https:
/samate.nist.gov/SARD/testsuite.php),源件名:
CWE401_Memory_Leak_int64_t_malloc_01.c。
3.1缺陷代码上述例代码在第29使malloc()函数进内存分配,并在第30对分配是否成功进了判断。
但在第36函数结束时,并没有对分配的内存data进有效合理释放,产内存泄漏。
使360代码卫对上述例代码进检测,可以检出“内存泄漏”缺陷,显等级为中。
如图1所:
18图1内存泄漏检测例3.2修复代码在上述修复代码中,在第29使malloc()函数进内存分配,在第36函数结束前对申请的内存使free()函数进释放,从避免了内存泄漏的发。
使360代码卫对修复后的代码进检测,可以看到已不存在“内存泄漏”缺陷。
如图2:
19图2:
修复后检测结果4、开源代码检测计划某项内存泄漏示例开源代码检测计划是项免费的公益计划。
通过使360代码卫对开源项进源代码检测和审计,找到源代码中存在的安全缺陷,使得开源项的安全性得到提。
以下是开源项检测计划中检测出的个“内存泄漏”例,如图3所。
20图3开源项检出“内存泄漏”4.1缺陷代码在缺陷代码中,内存在第445通过new进申请,但是在第448函数返回时,没有进释放,从导致内存泄漏。
4.2修复代码针对该内存泄漏问题的提出,开发员在近期对相关代码进了修复。
在448使delete对内存进释放,从避免了内存泄漏。
5、如何避免内存泄漏要避免内存泄漏,需要注意以下点:
21
(1)在允许的情况下,尽量避免动管理内存,如在C+开发中,使智能指针可以减少内存泄漏的发。
(2)在代码编写过程中养成良好的编程习惯,保证malloc/new和free/delete匹配使。
(3)在同个模块、同个抽象层中分配内存和释放内存。
(4)使源代码静态分析具,进动化的检测,可以有效的发现源代码中的内存泄漏问题。
关联阅读【缺陷周话】第2期:
SQL注【缺陷周话】第1期:
空指针解引*360代码卫团队原创出品。
未经许可,禁转载。
转载请注明“转360代码卫”。
【缺陷周话】第4期:
XML外部实体注原创360代码卫代码卫2018-10-0815:
30收录于合集#缺陷周话59个聚焦源代码安全,罗国内外最新资讯!
22*声明:
缺陷周话栏系列章由360代码卫团队原创出品。
未经许可,禁转载。
代码审计是使静态分析发现源代码中安全缺陷的法,能够辅助开发或测试员在软件上线前较为全地了解其安全问题,防患于未然,因此直以来都是学术界和产业界研究的热点,并且已经成为安全开发命周期SDL和DevSecOps等保障体系的重要技术段。
360代码卫团队基于主研发的国内款源代码安全检测商具,以及余年漏洞技术研究的积累,推出“缺陷周话”系列栏。
每周针对CWE、OWASP等标准中的类缺陷,结合实例和具使进详细介绍,旨在为开发和安全员提供代码审计的基础性标准化教程。
缺陷周话第4期XML外部实体注1、XML外部实体注XML外部实体注漏洞也就是我们常说的XXE漏洞。
XML作为种使较为泛的数据传输格式,很多应程序都包含有处理xml数据的代码,默认情况下,许多过时的或配置不当的XML处理器都会对外部实体进引。
如果攻击者可以上传XML档或者在XML档中添加23恶意内容,通过易受攻击的代码、依赖项或集成,就能够攻击包含缺陷的XML处理器。
XXE漏洞的出现和开发语关,只要是应程序中对xml数据做了解析,这些数据又受户控制,那么应程序都可能受到XXE攻击。
本篇章以java程序为例给家介绍XXE漏洞的成因及修复。
XXE漏洞详细请见CWE-611:
ImproperRestrictionofXMLExternalEntityReference(XXE)(http:
/cwe.mitre.org/data/definitions/611.html)。
2、XML外部实体注XXE漏洞可能会于提取数据、执远程服务器请求、扫描内部系统、执拒绝服务攻击和其他攻击。
业务影响主要取决于受影响的引程序和数据保护需求。
2018年今,CVE中共有发布了92条漏洞信息与其相关。
部分CVE如下:
CVE-2018-8027ApacheCamel2.20.0到2.20.3和2.21.0Core在XSD验证处理器中存在XXE漏洞。
CVE-2018-13439微信付JavaSDK中的WXPayUtil类中存在XXE漏洞。
CVE-2018-1000548在版本号于14.3的Umlet中,在件解析中存在XML外部实体注漏洞,可能导致机密数据泄露、拒绝服务、服务器端请求伪造。
此攻击可以通过特制的UXF件进攻击。
CVE-2018-1364IBMContentBavigator2.0和3.0版本中在处理XML数据时,易受XML外部实体(XXE)攻击。
远程攻击者可以利此漏洞暴露敏感信息或占内存资源。
3、示例代码3.1缺陷代码本节使示例代码来源为某开源付JavaSDK(https:
/2期:
SQL注【缺陷周话】第1期:
空指针解引*360代码卫团队原创出品。
未经许可,禁转载。
转载请注明“转360代码卫”。
【缺陷周话】第5期:
越界访问原创360代码卫代码卫2018-10-1517:
06收录于合集#缺陷周话59个聚焦源代码安全,罗国内外最新资讯!
*声明:
缺陷周话栏系列章由360代码卫团队原创出品。
未经许可,禁转载。
代码审计是使静态分析发现源代码中安全缺陷的法,能够辅助开发或测试员在软件上线前较为全地了解其安全问题,防患于未然,因28此直以来都是学术界和产业界研究的热点,并且已经成为安全开发命周期SDL和DevSecOps等保障体系的重要技术段。
360代码卫团队基于主研发的国内款源代码安全检测商具,以及余年漏洞技术研究的积累,推出“缺陷周话”系列栏。
每周针对CWE、OWASP等标准中的类缺陷,结合实例和具使进详细介绍,旨在为开发和安全员提供代码审计的基础性标准化教程。
缺陷周话第5期越界访问1、越界访问越界访问简单的说就是预先申请了块内存,但在使这块内存的时候超出了申请的范围从引发越界。
例如当程序访问个数组中的元素时,如果索引值超出数组的长度,就会访问数组之外的内存。
C/C+没有对数组做边界检查,不检查下标是否越界可以提升程序运的效率,但同时也把检查是否越界的任务交给了开发员,因此开发员在编写程序时,需要额外注意避免越界访问。
2、越界访问的危害越界访问是C/C+语中常见的缺陷,它并不定会造成编译错误,导致的后果也不确定。
当出现越界时,由于法得知被访问空间存储的内容,所以会产不确定的为,可能是程序崩溃、运算结果预期,也有可能没有影响。
2018年19,CVE中越界访问9个相关漏洞中,有8个来于开源项FFmpeg,部分漏洞信息如下:
CVE-2018-1999015FFmpegcommit5aba5b89d0b1d73164d3b81764828bb8b20ff32a之前版本中的ASF_F格式分离器存在数组越界读取漏洞,导致栈内存读取。
CVE-2018-1999014FFmpegcommitbab0716c7f4793ec42e05a5aa7e80d82a0dd4e75之前版本中的MXF格式分离器存在数组越界访问漏洞。
攻击者可利该漏洞造成拒绝服务。
29CVE-2018-1999010FFmpegcommitcced03dd667a5df6df8fd40d8de0bff477ee02e8之前版本中的mms协议存在多个数组越界访问漏洞。
攻击者可利该漏洞造成拒绝服务。
3、示例代码本节例代码源于SamateJulietTestSuiteforC/C+v1.3(https:
/samate.nist.gov/SARD/testsuite.php),源件名:
CWE121_Stack_Based_Buffer_Overflow_CWE129_fgets_01.c。
3.1缺陷代码上述例代码在第48对data的长度进了判断,但只判断了长度是否为负数,并没有对上限进限制(边界检查不完整),当data的值于9时,在第50处bufferdata的数组下标越界。
使360代码卫对上述例代码进检测,可以检出“越界访问”缺陷,显等级为。
如图1所:
30图1越界访问检测例3.2修复代码在上述修复代码中,在第48中对data的边界进了完整的检查,因此避免传第50bufferdata时越界。
使360代码卫对修复后的代码进检测,可以看到已不存在“越界访问”缺陷。
如图2:
31图2:
修复后检测结果4、如何避免越界访问要避免越界访问,需要注意以下点:
(1)进有效的边界检查,确保操作在合法的范围之内。
尤其当使外部输数据作为数据源进内存相关操作时,应格外注意进边界检查,污染数据是造成越界访问的重要原因之。
(2)显式的指定数组边界,不仅可以使程序的可读性提,同时,多数的编译器在数组长度于初始化值列表的长度时会给出警告,这些警告信息可以帮助开发员尽早发现越界问题。
(3)在使循环遍历数组元素时,注意防范off-by-one(个字节越界)的错误。
关联阅读32【缺陷周话】第4期:
XML外部实体注【缺陷周话】第3期:
内存泄漏【缺陷周话】第2期:
SQL注【缺陷周话】第1期:
空指针解引*360代码卫团队原创出品。
未经许可,禁转载。
转载请注明“转360代码卫”。
【缺陷周话】第6期:
命令注原创360代码卫代码卫2018-10-2213:
52收录于合集#缺陷周话59个聚焦源代码安全,罗国内外最新资讯!
*声明:
缺陷周话栏系列章由360代码卫团队原创出品。
未经许可,禁转载。
代码审计是使静态分析发现源代码中安全缺陷的法,能够辅助开发或测试员在软件上线前较为全地了解其安全问题,防患于未然,因此直以来都是学术界和产业界研究的热点,并且已经成为安全开发33命周期SDL和DevSecOps等保障体系的重要技术段。
360代码卫团队基于主研发的国内款源代码安全检测商具,以及余年漏洞技术研究的积累,推出“缺陷周话”系列栏。
每周针对CWE、OWASP等标准中的类缺陷,结合实例和具使进详细介绍,旨
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息 安全 缺陷