
获得徽章 8
- 漏洞 | Switch中省略了break语句导致的代码缺陷
1、什么是Switch中省略了break语句导致的代码缺陷?
break语句通常用在循环语句和switch语句中。当break用于switch语句中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则会从满足条件的地方(即与switch(表达式)括号中表达式匹配的case)开始执行,直到switch结构结束。
如果程序在switch或类似构造中省略了break语句,则会导致多个条件相关联的代码被执行。当程序员只打算执行与一个条件相关的代码时,这可能会引起问题,可能导致关键代码在不该执行的情况下执行。
2、Switch中省略了break语句导致的代码缺陷构成条件有哪些?
①switch语句的catch块中没有break指令。
3、Switch中省略了break语句导致的代码缺陷会造成哪些后果?
关键字:改变执行逻辑
可能导致执行意外的辑和其他意外的应用程序行为。
4、Switch中省略了break语句导致的缺陷防范和修补方法有哪些?
①省略一个break语句会导致用户无法区分是忘记编写break语句还是开发人员故意为之。如果确认是故意使两种情况以上使用同一种处理逻辑,确保逻辑正确。
②使用if语句替代该功能,这更安全。展开评论点赞 - DevSecOps自动化安全测试常用工具:
软件成分分析 (SCA):SCA 工具可识别集成的开源代码中已知的易受攻击的组件,还可以帮助监控代码质量和管理许可证合规性。
静态应用程序安全测试 (SAST):SAST 工具直接分析处于非运行状态的源代码,标记潜在漏洞并可将缺陷定位到代码行。同时也被称为“白盒”工具。
动态应用程序安全测试 (DAST):DAST 工具在应用程序运行时从外部探测应用程序,检测上下文中的潜在漏洞。相同的DAST工具可以在基于Web的应用程序上使用,因为它们独立于编程语言。他们通过首先绘制应用程序,然后测试所有已识别的输入向量来寻找注入和其他攻击的机会。
交互式应用程序安全测试 (IAST):IAST 工具在应用程序运行时(发布之前或之后)检查应用程序的内部工作情况,对关自研代码以及链接库和框架进行检测。存在各种类型的IAST,其中一些需要插桩。展开评论点赞 - 漏洞 | Switch中缺少default导致的代码缺陷
1、什么是Switch中缺少default导致的代码缺陷?
switch用在编程中,如C语言中它经常跟case一起使用,是一个判断选择逻辑结构。其功能就是控制流程流转。switch语句的语法如下(switch,case,break和default是关键字):
switch ( 变量表达式 )
{
case 常量1 :语句;break;
case 常量2 :语句;break;
case 常量3 :语句;break;
...
case 常量n:语句;break;
default :语句;break;
}
当变量表达式所表达的量与其中一个case语句中的常量相符时,就执行此case语句后面的语句,并依次下去执行后面所有case语句中的语句,遇到break则中断并跳出当前case分支执行语句。如果常量表达式的量与所有case语句的常量值都不相符,则执行default语句中的语句。
那代码在switch语句中没有default语句,这可能会导致复杂的逻辑问题并由此产生安全隐患。此缺陷代表了软件开发中的常见问题,其中并非所有可能的变量值都由给定过程考虑或处理。因此,根据不良信息做出进一步的决策,并导致级联故障。这种级联故障可能会导致许多安全问题,并构成系统中的重大故障。
2、Switch中缺少default导致的代码缺陷构成条件有哪些?
①switch语句没有default情况。
3、Switch中缺少default导致的代码缺陷会造成哪些后果?
关键字:改变程序执行逻辑;
①当switch中的逻辑进行数据检查等,攻击者可以注入不执行任何case分支的数据,则攻击者可以绕过安全检查,或导致程序处理逻辑上错误。
4、Switch中缺少default导致的缺陷防范和修补方法有哪些?
①switch语句中应该添加default标签;
②在一些情况下,default应该作为检查无效输入的情况,而不应该作为一个表示假定的选项。展开评论点赞 - 漏洞 | 不安全的反射漏洞
1、 什么是不安全的反射漏洞?
反射这一概念最早由编程开发人员Smith在1982年提出,主要指应用程序访问、检测、修改自身状态与行为的能力。这一概念的提出立刻吸引了编程界的极大关注,各种研究工作随之展开,随之而来引发编程革命,出现了多种支持反射机制的面向对象编程语言。
在Java编程语言中,Java反射机制主要提供了以下功能:
·在运行时判断任意一个对象所属的类;
·在运行时构造任意一个类的对象;
·在运行时判断任意一个类所具有的成员变量和方法;
·在运行时调用任意一个对象的方法;
·生成动态代理。
不安全的反射是指应用程序使用具有反射功能的外部输入来选择要使用的类或代码,可能被攻击者利用而输入或选择不正确的类或代码。如果发生这种情况,那么攻击者可能会创建开发人员不想要的逻辑路径。这些路径可能会绕过身份验证或访问控制检查,或者导致应用程序异常运行。执行未经授权的代码或命令、改变执行逻辑、崩溃、退出或重启,读取应用程序数据等。
2、不安全的反射漏洞的构成条件有哪些?
①不可靠的外部输入进入程序;
②程序使用外部输入进行实例化类并运行。
3、不安全的反射漏洞会造成哪些后果?
①攻击者可能能够执行攻击者无法直接访问的代码;
②攻击者可以在错误的位置或错误的时间调用其它代码,这可能会更改关键的系统状态。
③攻击者能够使用反射来调用错误的代码,使用违反API的意外参数,这可能导致应用程序退出或挂起。通过导致调用错误的代码,攻击者可能能够触发运行时错误,从而泄露错误消息中的敏感信息。
4、如何防范修补不安全的反射漏洞?
①重构代码以避免使用反射;
②尽量避免使用用户控制的输入来选择和加载类或代码。展开等人赞过评论5 - 漏洞 | XPath注入漏洞
1、什么是XPath注入漏洞?
XPath是一种用来在内存中导航整个XML树的语言,它使用路径表达式来选取XML文档中的节点或者节点集。
XPath注入是指程序使用外部输入动态构造用于从XML数据库检索数据的XPath表达式,但它没有过滤或错误地过滤该输入,这使攻击者可以控制查询的结构。攻击者可以控制从XML数据库中选择的信息,并可能使用该功能来控制应用程序流,修改逻辑,检索未经授权的数据或绕过重要检查(例如身份验证)。
2、XPath注入漏洞的构成条件有哪些?
①数据是从不可靠的来源(包括但不局限于不可靠用户的输入信息或是不可靠用户可能更改的文件)进入应用程序的;
②用户输入未经过验证,被查询语句直接使用并执行。
3、XPath注入漏洞会造成哪些后果?
关键词:绕过验证;读取重要数据;
①控制应用程序流程(例如绕过身份验证),从而进行一些未授权的行为;
②攻击者可以读取未授权的XML内容。
4、如何防范修补XPath注入漏洞?
①使用参数化的XPath查询(例如使用XQuery)。这有助于确保数据平面和控制平面之间的分离;
②对用户输入的数据提交到服务器上端,在服务端正式处理这批数据之前,对提交数据的合法性进行验证。检查提交的数据是否包含特殊字符,对特殊字符进行编码转换或替换、删除敏感字符或字符串,如过滤[ ] ‘ “ and or 等全部过滤,像单双引号这类,可以对这类特殊字符进行编码转换或替换;
③通过加密算法,对于数据敏感信息和在数据传输过程中加密。展开等人赞过评论7 - 软件开发生命周期(SDLC)中的应用程序测试分为两大类:白盒测试和黑盒测试。
白盒测试通过了解系统内部的代码,在不运行代码的情况下,查找所有可执行路径中存在的安全缺陷及漏洞,静态应用程序安全测试工具(SAST)就属于这一类。
黑盒测试在 SDLC 中稍后执行,可以用来发现运行时可利用的缺陷及漏洞。动态应用程序安全测试工具(DAST)属于这一类。
所有这些测试都占据了SDLC中已知的、已建立的位置,可以用来在进行最终功能验收测试前,提高软件安全性并及时进行修复。展开赞过评论2 - SAST 与 DAST
SAST(静态应用程序安全测试)也被称为“白盒测试”,已经存在了十多年。它允许开发人员在软件开发生命周期的早期发现应用程序源代码中的安全漏洞。在不实际执行底层代码的情况下检测是否符合编码指南和标准,直接面向所有源码,并且可以定位缺陷所在的代码行数。OWASP TOP 10 安全漏洞中60-70%的安全漏洞类型可通过源代码静态分析技术检测出来。
DAST,或动态应用安全测试,也称为“黑盒”测试,可以发现运行中的应用程序的安全漏洞和弱点,通常是web应用程序。通过在应用程序上使用故障注入技术(例如向软件提供恶意数据)来识别常见的安全漏洞,例如SQL 注入和跨站点脚本。DAST 可以聚焦静态分析无法识别的运行时问题,例如身份验证和服务器配置问题,以及仅在已知用户登录时可见的缺陷。
交互式应用程序安全测试 (IAST)
IAST旨在通过结合SAST 和 DAST 两种方法来解决SAST和DAST各自的缺点。IAST在应用程序中放置一个探针,并在开发过程 IDE、持续集成环境、QA 甚至生产中的任何位置实时在应用程序中执行所有分析。
因为IAST探针在应用程序内部工作,它可以将其分析应用于整个应用程序所有代码。其运行控制和数据流信息、它的配置信息、HTTP请求和响应、库及框架和其他组件、以及后端连接信息。
运行时应用程序安全保护 (RASP)
与IAST一样,RASP或运行时应用程序安全保护在应用程序内部工作,但它不是一个测试工具,而是一个安全工具。它被插入到应用程序或其运行时环境中,可以控制应用程序的执行。RASP 保护应用程序,即使网络的外围防御被破坏并且应用程序包含开发团队错过的安全漏洞。RASP允许应用程序对自身进行持续的安全检查,并通过终止攻击者的会话并向防御者发出攻击警报来响应实时攻击。展开评论点赞 - 什么是 XSS?
XSS漏洞发生在web应用程序中,这些应用程序在不进行编码或验证的情况下接受用户输入并在响应中使用它。恶意用户编写恶意代码并通过输入表单提交。目标服务器包含这个脚本及其响应,客户机浏览器执行它。由于浏览器信任web服务器,它授予恶意脚本访问本地存储的cookie、会话令牌和其他敏感客户端信息的权限。
XSS是一个常见的攻击矢量,成功攻击的影响通常因不同的场景而不同,包括:
泄露用户文件
安装恶意软件/木马
窃取网上银行信息
HTML/DOM 内容修改
将用户重定向到未知网站
XSS 攻击类型
XSS 攻击主要分为三类:存储型 XSS 攻击/持久型 XSS/Type-I XSS
在存储式跨站攻击中,注入的恶意代码被永久地存储在易受攻击的web应用程序的不同组件中,如数据库、评论字段、访客日志、消息论坛等。每当客户端访问受感染网站或向web服务器发起请求时,该请求就会在用户的浏览器中执行恶意脚本。
无目的 XSS
一种混合形式的XSS攻击,其中攻击者的脚本被存储并反映来自后端应用程序的用户。
反射/非持久性 XSS
在反射式跨站点脚本中,恶意脚本会从 Web 服务器反射出来,例如搜索结果、错误消息或任何其他包含某些用户输入的 Web 服务器响应。该脚本通过外部路径传递给受害者,例如不同的网站或电子邮件。当受害者提交表单、浏览黑客网站或点击可疑链接时,恶意脚本会被发送到该网站,然后反映在客户端的浏览器中。
基于 DOM 的 XSS
在基于 DOM 的跨站脚本中,恶意脚本是通过修改受害者浏览器的文档对象模型环境而执行的。这种攻击不会改变 Web 服务器的 HTTP 响应,但会由于 DOM 修改而改变客户端代码的执行。展开2点赞 - 漏洞 | 什么是HTTP标头注入?
HTTP标头注入漏洞是一个Web应用程序安全性的术语,指当攻击者诱骗web应用插入额外的HTTP头到合法的HTTP响应。HTTP标头注入是一种可用于促进恶意攻击的技术,例如跨站点脚本、Web缓存中毒等。反过来,这些可能会导致信息泄露、您的应用程序被用于网络钓鱼攻击以及其他严重后果。
HTTP标头注入是一种更通用的攻击类别的特定案例:CRLF注入。如果攻击者能够在响应中注入CRLF序列(回车和换行),他们就能够添加各种虚假条目或更改现有数据:不仅是标题,甚至是整个响应正文。
什么导致HTTP标头注入漏洞?
就像大多数 Web 应用程序安全漏洞一样,HTTP标头注入漏洞(以及一般的CRLF注入漏洞)是过度信任用户输入的结果。
如果 Web 应用程序的开发人员直接在 HTTP 响应中使用外部数据,则通常可以执行 HTTP 标头注入攻击。展开赞过评论1