📜  什么是 OWASP 及其主要风险?

📅  最后修改于: 2021-10-20 10:28:55             🧑  作者: Mango

OWASP 代表开放 Web 应用程序安全项目。它是一个致力于网络应用程序安全的国际非营利组织。 OWASP 的核心原则包括在其网站上免费提供且易于访问的材料。他们的动机是让任何用户都可以提高他们的 Web 应用程序安全性。他们提供的材料包括文档、视频、工具和论坛。 OWASP Top 10 是最著名的项目。 OWASP 基金会也在网络安全领域组织了许多领先的教育和培训项目。

OWASP 移动 10 大风险

1.平台使用不当

移动平台提供了一些开发人员可以访问的功能,但这些功能的不当使用可能会使您的应用程序暴露在攻击之下。此漏洞可谓是常见且容易被利用。它涵盖滥用平台功能或未能使用平台安全控制。这可能包括 Android 意图、平台权限、Touch ID 的滥用、钥匙链或其他一些恰好是移动操作系统一部分的安全控制。影响的严重程度和实际利用的难易程度取决于特定利用的类型以及具有恶意意图的攻击者设法获得控制的程度。

为了防止这种风险,必须在移动应用程序的服务器端使用安全编码和配置实践,并确保正确和正确地使用所有平台功能。

2. 不安全的数据存储

在最坏的情况下,这可能会导致许多用户丢失数据。它还可能导致技术影响,例如通过移动恶意软件提取应用程序的机密数据、修改或更改应用程序或取证工具。发生的业务影响的性质取决于被盗的信息。由于不安全的数据存储方法,身份盗窃、隐私侵犯、欺诈、声誉损害、外部政策违反或材料损失可能是业务影响。如今,攻击向量变化很大。从使用缓存、cookie 和其他信息收集受保护数据的第三方应用程序到能够物理获取设备和查看信息的对手。必须以多种方式正确处理数据存储,包括加密、身份验证和处理所有缓存功能。不安全的数据变得非常容易被利用。

为了防止这种情况,重要的是要对您的移动应用程序、操作系统、平台和框架进行建模,以了解应用程序处理的信息资产以及 API 如何处理这些资产。

3. 不安全的通信

不安全通信是大多数具有客户端-服务器结构的应用程序中最常见的漏洞。开发人员通常会准时使用身份验证程序和静态数据来保护他们的数据,但他们很少费心正确加密信息/数据。如果数据没有受到保护或加密,服务器端用户可能会面临中间人攻击。这些攻击通常来自路由器、恶意软件等网络设备。在设计移动应用程序时,数据通常以客户端-服务器格式进行交换。当解决方案传输其数据/信息时,它必须遍历移动设备的运营商网络和互联网。威胁代理可能会利用漏洞来访问在网络中传输的敏感数据。

这可以通过假设网络层不安全且容易被窃听、使用具有适当密钥长度的强大行业标准密码套件、始终使用由受信任的 CA 提供商签名的证书、始终需要 SSL 链验证等来防止。

4. 不安全的认证

不安全的身份验证包含会话处理和身份验证过程中的两个弱点。对于移动应用程序,犯罪者通常会创建自定义工具来完全绕过客户端应用程序并直接向用户提交请求。糟糕的身份验证方案允许攻击者在移动应用程序或移动应用程序使用的后端服务器中匿名执行功能。由于移动设备的输入形式因素,移动应用程序的较弱身份验证相当普遍。移动应用程序的身份验证方案比常规 Web 应用程序要精简得多。由于大多数应用程序需要离线工作,因此为用户提供了一个可以被利用的离线身份验证选项。这可能导致犯罪者获得对系统的完全控制。他们可以匿名窃取或删除数据,或向应用程序或服务器等发出命令,这可能会导致严重的技术和业务影响。

防止此问题的最佳方法是在服务器端处理所有身份验证请求时尽可能使用在线身份验证。

5. 密码学不足

Insufficient Cryptography 处理可能对业务产生极其恶劣影响的漏洞。不充分的加密将导致未经授权从移动设备检索机密信息。这可能会产生多种不同的业务影响,例如隐私侵犯、信息和代码盗窃、知识产权盗窃或声誉受损。

为防止您的数据受到此漏洞的影响,请尽可能避免在移动设备上存储任何敏感数据,应用能够经受未来至少 10 年时间考验的加密标准,并遵循 NIST (美国国家标准研究院)和技术)推荐算法指南。遵循最佳实践和标准是避免密码不足的最佳方法。

6. 不安全的授权

在身份验证过程中,不安全授权处理服务器端漏洞。此漏洞极为常见且难以检测。一旦攻击者知道授权方案如何容易受到攻击,他们就会以合法用户的身份登录应用程序。他们设法成功通过了身份验证控制。一旦他们通过身份验证,他们就会强制浏览到易受攻击的端点以执行管理功能。此过程是使用设备内的移动恶意软件或攻击者拥有的僵尸网络完成的。授权不良的技术影响类似于认证不良的技术影响。技术影响可能是广泛的。例如,本地管理功能的过度特权执行可能会破坏系统或对机密信息的访问。

防止这种情况的最佳方法是确保始终检查用户权限,在服务器端独立验证来自客户端的任何请求,确保它们是授权用户。

7. 客户端代码质量

专注于由于编码错误而产生的漏洞。黑客可以发现代码中的错误或漏洞,并利用它们来访问系统。例如缓冲区溢出和内存泄漏。属于此类别的漏洞利用会导致远程服务器端点上的外部代码执行或 DOS(拒绝服务)。但是,如果移动设备中确实存在缓冲区溢出/溢出,并且输入可以来自外部方,则这可能会产生非常高的技术影响。

处理这个问题的唯一方法是保持一致的编码标准,并编写易于阅读的注释良好的代码。使用缓冲区时,请验证任何传入缓冲区数据的长度不会超过目标缓冲区的长度。通过自动化,通过使用第三方静态分析工具识别缓冲区溢出和内存泄漏,并优先解决缓冲区溢出和内存泄漏,而不是其他“代码质量”问题。

8. 代码篡改

任何 攻击者可以对应用程序代码执行的修改称为代码篡改。攻击者或黑客使用代码篡改来获取高级功能、侵犯版权等,并完全绕过应用程序的现有分发模型。此漏洞可能难以检测。攻击者将使用托管在第三方应用程序商店中的应用程序的恶意形式来利用代码修改。攻击者还可能通过网络钓鱼攻击诱骗用户安装应用程序。攻击者将执行以下操作来利用此类别:对应用程序包的核心二进制文件进行直接二进制更改,对应用程序包内的资源进行直接二进制更改,重定向或替换系统 API 以拦截和执行恶意的外部代码。

防止这种情况的最佳方法是使用防篡改技术以及 root 和越狱检测。

9.逆向工程

逆向工程非常普遍,而且并不总是出于恶意。有时人们这样做是为了学习目的,而有时他们这样做是为了编写自己完全合法的应用程序。攻击者将从应用程序商店下载目标应用程序,并使用一套不同的工具在其本地环境中对其进行分析。

为防止有效的逆向工程,请使用混淆工具。每个应用程序都容易受到此漏洞的影响。

10. 额外的功能

该漏洞于2016年被添加到列表中,以涵盖极其严重但常见的漏洞。攻击者将在其本地环境中下载并检查移动应用程序。他们将检查日志文件、配置文件,也许还有二进制文件本身,以发现开发人员留下的任何类型的隐藏开关或测试代码。他们将尝试利用系统后端的这些开关和隐藏功能进行攻击。此功能的一个示例是开发人员帐户,它允许我们完全绕过安全检查并提供一组广泛的权限。这是一个后门,让攻击者可以完全控制应用程序。

为防止此漏洞,请使用最了解此代码的安全冠军或主题专家执行手动安全代码审查。这些漏洞很容易被利用,但也很容易捕捉和删除