OWASP Top 10 2022 介绍

1.失效的访问控制

2.加密机制失效

3.注入

4.不安全的设计

5.安全配置错误

6.易受攻击和过时的组件

7.识别和认证失败

8.软件和数据完整性故障

9.安全日志记录和监控失败

10.服务器端请求伪造(SSRF)

.失效的访问控制

失效的访问控制指的是在系统中存在访问控制漏洞,攻击者可以利用漏洞绕过安全措施,获取到应该被限制的资源或数据。这种漏洞往往是由于应用程序的设计或配置错误导致的。

为了防止失效的访问控制,开发人员和系统管理员需要对系统中的访问控制机制进行彻底的安全审计和测试,保证应用程序的每个权限控制点都能够起到应有的作用。同时,需要对访问日志进行监控和分析,及时发现潜在的安全威胁。

预防措施

1.强制身份验证:在系统中建立强制身份验证的机制,确保只有经过认证的用户才能够访问敏感资源和数据。

2.细化权限管理:对系统中每个权限控制点进行详细的权限设置,确保用户只能够访问他们应该被授权访问的资源,不会出现资源未被正确限制的情况。

3.审计和监控:对系统中的访问日志进行监控和审计,及时发现访问控制漏洞,并进行修复和预防。

4.设计和测试:在系统设计和开发过程中,考虑访问控制机制的设计,进行代码审查和安全测试等步骤,降低系统出现访问控制漏洞的风险。

5.合理配置安全控制:在操作系统、数据库、应用程序等各个层面,对安全控制进行合理的配置,确保能够防范外部攻击和内部滥用。

6.及时更新和修复漏洞:在发现访问控制漏洞后,及时修复漏洞,更新系统版本,确保系统安全性得到保障。

.加密机制失效

加密机制失效是指在使用加密算法的过程中,由于加密算法的实现或配置问题,导致加密的安全性受到威胁,数据可能被窃取、篡改或伪造。常见的加密机制失效包括对称加密算法的密钥管理不当,公钥加密算法中的私钥泄露,以及使用过时或弱加密算法等。

预防措施

1.使用安全的加密算法:选择具有行业认可和证明安全性的加密算法(如AES、RSA等)。

2.正确配置加密算法:对于可配置的加密算法,需要适当的配置,包括密钥生成和管理,算法参数的设置和初始化向量生成等。

3.密钥管理:密钥管理应考虑保护密钥的保密性、完整性和可用性,例如使用强密码保护密钥,并使用安全的存储和传输方式。

4.定期更新算法和密钥:经过长时间使用的加密算法和密钥将可能遭受破解,应定期更新算法和密钥来保证加密机制的安全性。

5.安全审计:对加密的实现方案进行全面审计,以确保安全措施的实际执行达到预期目标。

6.加强培训:对员工进行安全培训、加固安全意识、防范攻击等安全培训,进一步提高其安全意识,减少因人为疏忽而导致加密机制失效的情况。

三.SQL 注入

SQL注入是一种常见的安全漏洞,攻击者通过构造恶意的SQL语句,欺骗应用程序,让应用程序执行恶意的操作(如删除、修改数据等),从而获取敏感数据或控制数据库系统。注入包括SQL注入、命令注入、CRLF注入、LDAP注入等。

预防措施

1.编写安全的SQL语句:编写程序时应采用参数绑定(parameter binding)等安全编码方法,避免动态拼接SQL字符串,从而避免SQL注入。

2.过滤输入:对于用户输入的数据进行合理的验证和过滤,可以使用正则表达式、过滤函数、转义字符等多种方法进行防护。

3.减少误报:尽可能减少误认为可执行SQL语句的字符,例如";"、“–"等。

4.限制用户权限:限制用户的访问权限,按实际需要,让用户只能够访问其所需的数据和操作。

5.对敏感信息进行加密:对于敏感数据,应进行加密处理,确保在数据库中数据的安全性。

6.更新和维护程序:定期更新和维护Web应用程序,确保应用程序内外部漏洞得到及时修复,提高系统的安全性。

7.监控和日志管理:开启安全审核功能,定期检查日志和监控数据,发现和排查SQL注入等攻击事件,保障系统的安全性。

四.不安全的设计

一个不安全的设计可能会导致整个系统易受攻击,它在设计之初就具有安全漏洞。典型的例子是数据流图、数据模型或系统设计中未考虑安全性问题。攻击者可能会利用系统设计缺陷,通过更改输入,欺骗或扰乱程序行为,从而绕过系统访问控制或者直接攻击。例如,一个网站如果使用明文存储用户密码,或者弱密码加密存储,就是一个不安全的设计

预防措施

1.安全设计原则:在系统设计之初,应该遵循安全设计原则,例如只尽可能少地揭露系统信息、采用最小特权原则、必须有原则等,以确保设计是安全的。

2.安全评估:对于已有的系统设计,应该进行必要的安全评估和测试,寻找漏洞和隐患,并采取正确的方法进行修复。

3.与业界标准接轨:参考业界标准,例如OWASP指南或NIST框架等,这些标准提供了系统安全规划和设计的最佳实践。

4.安全查询和编码规范:创建安全开发生命周,保证开发人员有最佳实践和工具,例如创建安全编码规范、安全代码审查程序和代码扫描程序。

5.安全培训:培训全体员工安全知识,包括业务用于产品开发的调用接口、访问权限管理、加密处理规范、弱点扫描注意事项等。

6.持续视察:一旦系统开始工作,应定期研究系统操作,并持续关注新的漏洞。这一步常常需要配合弱点扫描工具和模拟白帽攻击进行,以保证系统的任何部分都不是脆弱和容易攻击的。

五.安全配置错误

安全配置错误通常是由于不当的配置、错误的设置或及时的安全更新等导致系统存在漏洞。攻击者可能会利用这些漏洞来执行各种攻击,比如访问控制错误、缓存不安全、权限配置错误、功能失效、代码混淆和漏洞利用等。

预防措施

1.了解最佳实践:根据操作系统、应用程序或服务的指南学习最佳实践,这些指南提供了针对特定操作系统或应用程序的安全设置详细说明。

2.按照安全标准进行配置:根据相关的安全标准或合规性规定配置系统,并且注意使用至少有可靠的加密算法、密钥过期策略等等。

3.审查和监视配置文件:定期审查和监视配置文件,确保保护敏感信息并防止不必要的配置更改,尤其是对可信的配置文件、数据库、应用程序进行监视。

4.安全更新和维护:安装所有必要的安全更新和打补丁、升级软件版本。

5.加密数据传输:使用协议加密、VPN等技术加密数据传输,确保在传输过程中数据的安全性。

6.加强访问控制:加强对系统访问控制的管理,包括对敏感内容进行身份验证和授权,限制对安全数据的访问和修改。

7.加强日志的管理:监控管理员操作审计、防御密码暴力破解,实时观察控制台异常日志,防止特权访问和网络入侵等。

8.游客或新用户的访问:游客和新用户在访问之前必须经过身份验证和分配权限,授权访问等级,有效防止或降低安全配置错误。

六.易受攻击和过时的组件

易受攻击和过时的组件,例如操作系统、应用程序、框架、库和模块等,存在一些已知的漏洞和弱点,攻击者有可能利用这些漏洞入侵系统。对于这些组件,软件供应商通常会发布安全更新,以修补这些漏洞,因此及时更新这些组件是非常重要的。

预防措施

1.持续性更新:及时更新操作系统、应用程序、框架、库和模块等系统组件,并保持其最新状态,特别是与安全相关的更新。

2.组件审核:审查第三方组件的安全性,并考虑使用已过时组件的情况。优先选择有良好声誉、质量可靠、品牌有保障的厂商提供的组件。

3.针对已安装组件的漏洞进行整改:对于已经安装的组件,仔细查看其漏洞信息,并对已知的高风险漏洞采取适当的措施,例如关闭或升级特定版组件等。

4.日志分类和备份:开启日志审核控件和集中式流式处理,分类日志类型,对日志审计实时监测,审计发现不符合安全性规范的用户或行为,备份得手令牌、密钥等解除组件升级过程中的压力。

5.监控检查:通过使用弱点扫描工具,监控已经安装的组件,寻找有没有存在漏洞的组件,并及时进行整改之前摆脱安全威胁。

6.报告包含受影响组件的所有组件:创建和保留所有安装的组件列表,方便追踪所有组件和其维护状态,包含组件开发者名称和版本,并包含有关已知漏洞信息。

七.识别和认证失败

身份认证是确保用户访问应用程序的正确身份的过程。一旦身份得到验证,应用程序会将其与特定用户帐户或角色相匹配,从而为用户提供所需的访问权限。如果身份认证和授权失败,攻击者就可能会访问系统,进行不当的操作,甚至获取敏感信息。

预防措施

1.设计和实现强密码策略:要求用户创建复杂且不易猜测的密码,并通过加密和哈希等方法存储它们,防止黑客通过恶意手段轻易获得用户密码信息。

2.实施多因素身份验证: 实施多因素身份认证可增加系统安全性。例如,在使用用户名和密码登录系统时,还需要输入一次性口令或获取短信验证码等等。

3.多角色管理:根据用户的角色,为每个角色赋予不同的权限和访问范围。关键数据和系统操作应限制为最少人员才有权访问。

4.系统内部监控:开启可能的反向代理、监控威胁和异常未知流量,使用安全信息和事件管理系统(SEIM)、统一日志管理(ULM)等进一步监管来自客户端和内部用户对系统的访问。

5.控制访问权限:可以通过控制用户访问时段来降低攻击风险,避免异常时间段和IP段。不要在生产服务器上运行测试环境应用程序。使用内容分发网络 (CDN) 和负载均衡器等工具来防止攻击。

6.以错误回应作为警示:当交互性错误处理不正确时,例如电子邮件订阅失败、密码重置或支付处理时,最好给出通用错误回复。不能将有关错误处理的详细信息直接发送到Web页面上,这可能会为攻击者暴露信息。

7.IPC 执行权限:通过禁止或限制非系统管理员用户的操作系统命令在生产服务器上执行来限制恶意用户执行操作。

八.软件和数据完整性故障

软件和数据完整性故障是指未经授权的人员或者程序对软件、数据进行恶意篡改、删除或者破坏,从而破坏了系统的可用性和安全性。这种类型的故障往往是由于缺乏适当的安全措施而导致的,例如缺乏数据备份、缺乏审计轨迹等等。

这是一个新类别,它侧重于假设软件更新、重要数据和 CI/CD 程序的完整性,而无需对其进行验证。一个例子是当应用程序使用来自内容交付网络 (CDN) 或未经授权的来源的扩展、模块或存储库时。未受保护的持续集成/持续交付 ( CI/CD ) 流程可能会增加恶意代码、系统受损或未经授权访问的风险。

预防措施

1.数据备份:周期性地对数据进行备份,保证数据安全可以被恢复。备份的数据可能会用于还原或者重新创建数据,经常进行验证测试,确保成功率为100%。

2.访问控制:加强应用程序的访问控制和权限管理,确保只有授权用户才能访问和修改数据。

3.数据加密:对敏感数据进行加密,并确保访问被授权。在硬盘,网络传输过程中均要使用加密。可以通过采用对称加密、非对称加密、哈希和签名等算法实现数据加密。

4.审计:记录用户对系统中各项更改,例如数据删除或更改等等。实时审计数据,了解谁执行了何种操作,确保数据的完整性和安全性。

5.软件更新:采用自动或手动更新机制更新软件以保持最新状态,并及时进行修复,同时督促用户安装所有安全更新和修补程序,保证应用程序的完整性。

6.持续性监控:通过使用入侵检测系统和威胁情报系统等安全工具来持续监控数据和系统,及时发现并防御攻击趋势。

7.实施审计:定期对数据资产的普惠性进行审计,实施清理和整理数据,去除不需要的部分。

九.安全日志记录和监控失败

安全日志记录和监控失败通常是由于不正确的配置、未及时更新安全日志监视器或检测时间过长等问题导致的。这些故障可能会导致安全事件未能被及时发现和应对,从而增加系统被攻击的风险。

在存在可疑行为和事件的情况下缺乏跟踪可能会扩大不受监控的时间间隔,从而使安全漏洞被忽视的时间比使用更好的日志记录的时间更长。此 OWASP Top 10 2021 部分旨在帮助识别、升级和解决最近的违规行为。如果没有记录和监控,就不可能检测到安全漏洞。

预防措施

1.配置合理:安全日志记录和监控器应该正确地配置,包括合理设置存储位置和备份策略等。确保系统和用户交互信息的安全性,并对日志进行加密和完整性保护。

2.及时更新:安全日志记录和监控器都应该及时更新,以提高监视的效果。系统管理人员应该经常更新监测系统、日志记录器和其他相关工具的完整性和可用性等问题。

3.自动告警:通过设置自动清除、告警策略和通知部门等方式,及时检测安全事件并通知相关人员进行应急响应,主动防范安全威胁,有效提升个人隐私信息安全。

4.审核:对存储在日志记录器中的数据进行周期性验证,并定期集成治理监督工具。通过人员审查排除威胁,及时发现及阻止未经授权的交互问题。

5.记录时间:记录安全日志的时间应当保持短暂,不超过一个月,因为平均一个月内,数据损失恢复易造成的损失要远高于一般安全问题。

6.工具集成:利用入侵检测系统、流量分析工具、高级制导系统等相关工具,使监控日志管理的制度化更人性化、更安全。

十.服务器端请求伪造(SSRF)

服务器端请求伪造(SSRF)是一种网络攻击方式,攻击者通过错用服务端的功能实现向外部网络访问并取回更多的数据,甚至是攻击目标本身网络中的数据。常见的SSRF攻击方式包括网络扫描、端口扫描、攻击者通过攻击解析器对服务器进行文件包括、取回服务器上的所有文件内容等。一旦遭受SSRF攻击,可能会导致机密数据等敏感信息的泄露,进而影响业务。

预防措施

1.检查并限制客户端传进来的参数,避免用户能够输入一些控制参数,进行对外部站点的构造以及进一步防御攻击

2.限制外部执行范围,可以对客户端请求访问外部网络的方式、协议、端口号等参数进行限制和规范,有效降低攻击协议趋势。

3.使用白名单,让只有需要调用外部服务的模块才能访问外部网络,从而杜绝攻击者利用其他服务进行访问或者连通攻击的风险。

4.增强防火墙功能,在企业内网内部网络部署防火墙,采用强度大、表现快捷的防火墙产品或者服务。

5.限制内部网与外部网络之间的访问,进行网络隔离,规范应用程序的数据来源,增加网络安全防护。

6.整体提高安全意识,对用户及操作人员进行管理和审计,并定期适合并辅助测试方法的安全演练减少人为操作失误和疏漏。

猜你喜欢

转载自blog.csdn.net/2301_77285187/article/details/130952353