英语原文共 4 页
Android 网购应用中的漏洞测试
摘要: 随着 Android 操作系统作为智能手机主流产品的快速发展,网购应用的普及程度也在不断提高。市场上有各种购物的应用程序,这些应用程序最终会受到全球网络增强的影响。大多数应用程序都需要在应用程序内交易资金。因此,恶意程序开发人员可能会窃取应用程序中的漏洞,并试图利用这些风险来获取个人和财务信息。在本文中,我们选择了一些流行的在线购物 android 应用程序进行了实证研究,以观察七个漏洞。我们使用了质量工具来检查漏洞。我们记录了我们的测试结果,展示了统计数据,并讨论了避免这些漏洞的可能措施。我们的结果显示,即使像亚马逊和eBay这样的流行应用也存在漏洞。这项研究将帮助开发人员更好地意识到这一点,从而使潜在的用户受益。
- 介绍
随着智能手机行业和开发者公司的兴起,应用软件的使用量增加了。2015年,全球智能手机用户数量为 18.6亿,预计到 2020年将达到 28.7亿[1]。全世界约有 38% 人将在 2020 人以内使用智能手机,2011年这一比例为 10%。根据卡巴斯基实验室[2]进行的一项研究,孟加拉国被恶意软件攻击的移动用户比例排名第2,占 36.25%。Android 平台的应用程序开发在最近几天变得非常容易,可以看到,拥有一个小团队的年轻爱好者可以在 Google play store 上设计和部署工作应用程序。通常情况下,这种开发是由一些业余爱好者处理的,他们以前的经验很少,考虑到存储在其中的信息的安全性和完整性所面临的现有威胁。除此之外,这些应用程序是为那些也不知道这些漏洞或危害的大众设计的。这就是吸引恶意程序开发人员获取包括个人详细信息、财务活动、政府信息等有价值信息的原因。就像购物应用这样的移动支付应用而言,他们不仅持有个人信息,而且在某些情况下还处理金融交易。发布前对应用程序进行全面测试并不是强制性的。在开发人员中进行了一项调查[3],以了解他们如何处理应用程序的整体测试。调查发现,开发人员将 58.18% 的测试时间花在手动测试上,而手动测试往往不准确。他们大多数人都没有时间进行自动化测试,这反过来又会损害安全性。根据 CVE [4]的详细信息,到目前为止,2017年记录了 1,383 个 android 漏洞。仅支付活动就占总数的 25%[5]。关于 android 应用程序的不同漏洞和攻击,已经有很多工作要做。Luo 等人[6]声称,下载最多的前 20 个应用程序中有 86% 使用了 WebView,这可以通过 WebView 组件吸引用户访问恶意网页。许多 android 应用程序没有实现 HTTPS,这导致连接不安全,进而为中间人攻击铺平了道路。[7]指出这是由于开发人员的无知、服务器配置错误、库或协议问题或用户缺乏意识所致。他们还对这一问题提出了多种解决办法。尽管如此,漏洞仍然存在,使最终用户面临风险。
在这里,我们的工作旨在使用一些流行的工具查找一些现有购物应用程序的一些常见漏洞。我们选择了 16 个在线购物应用程序进行测试。我们之所以特别选择网上购物类别,是因为它们包含了用户的敏感个人数据。除此之外,许多用户在不知道安全问题的情况下分享他们的信用卡详细信息。根据 AppBrain 的 android 统计数据,在 Google Play [8]的 90449 个购物应用中,有 3598 个应用的下载量超过了 50,000。这些应用程序易受攻击,使大量用户面临风险。为了测试,我们不仅选择了在世界范围内使用的流行应用程序,还选择了在孟加拉国开发的一些应用程序。我们选择了四种流行的工具来测试应用程序。这些工具可以成功地测试所讨论的漏洞。结果表明,几乎所有的应用程序都存在漏洞。尽管就 Google Play 的应用程序数量而言,购物类别排在 15 位,但人们在日常生活中使用它们。因此,这些应用程序的安全性不容忽视。根据最新的 UPS 报告[9],96% 的普通在线购物者在智能手机上使用零售商的应用程序。当安全是一个问题时,这个数字不能被忽略。因此,我们的目的是让开发人员意识到这些问题,以便他们能够解决这些问题,并给予更多的关注,以提高应用程序的安全性。
第二节分析了已经就这个主题进行的研究工作,或者以某种方式涵盖了这个主题的历史。第三节讨论 android 应用程序中的基本安全机制。第四节讨论了我们选择测试的漏洞。第五节讨论了选择用于测试的工具。最后,第六节记录了结果和发现,而第七节总结了论文。
- 相关工作
在本节中,我们讨论了最近在 android 应用程序上发现漏洞的一些工作。Shewale 等人[10]分析了 android 应用程序中存在的漏洞,并根据 android 架构的不同层对其进行了分类。他们还指出,即使不断升级操作系统也无助于减轻安全威胁。一些工作还侧重于识别影响 android 操作系统[11]-[13]的漏洞。
每个应用程序都被分配了一些权限来限制其执行。[14] 表明,通过对应用程序进行缓冲区溢出攻击,可以提升此权限。许多检测工具用于检查应用程序上的漏洞。Fahl 等人推出了一个工具,用于检测中间人攻击 [15] 可能存在的漏洞。他们的分析显示,8% 的测试应用程序包含易受攻击的传输层安全性。Salva 等人介绍了安全测试方法,该方法生成测试用例来检查组件是否容易受到通过意图发送的攻击。[17]提出了一个静态分析框架,该框架使用逆向工程的生命周期模型来捕获 Android 组件的行为,并进一步用于检测特定事件顺序发起的攻击。[18] 提出了一种在客户端和服务器端同时运行的两阶段检测技术来检测恶意软件攻击。一些研究人员还使用机器学习技术来检测恶意软件 [19] 、 [20]。
3、ANDROID 基础安全机制
Android 的核心操作系统是基于定制的 Linux 版本。Android 应用程序是用 Java 编程语言编写的,在自己的虚拟环境中运行。Android 使用加密签名来验证应用程序的来源。这提供了高水平的保护。开发人员使用代码签名允许应用程序用户使用创建任何复杂的接口。事实上,应用程序签名是将应用程序放入应用程序沙箱的第一步。所有 android 应用程序都在应用程序沙箱中运行。Android 应用程序打包为 APK (Android 应用程序包)。每个 apk 都有证书签名。包管理器用 apk 中包含的证书验证签名。
每次安装时都有一个唯一的用户id (UID)。默认情况下,应用程序根据应用程序获得访问有限范围系统资源的权限。这种通过限制访问来保护敏感 APIS 的机制称为权限。APIS 包括摄像头功能、蓝牙功能、网络连接、本地数据、内容提供商等。用户在安装期间授予特定权限。
4、APP 漏洞
在本节中,我们将讨论我们选择用于测试的漏洞。所有这些都是可能导致数据泄漏或被操作的非常常见的漏洞。
- 未经授权的存储访问
Android 上的应用程序最常见的安全问题是其他应用程序是否可以访问这些数据。在设备上保存数据有三种基本方式 -- 内部存储、外部存储和内容提供商。如果文件存储在内部存储中,默认情况下它们是受保护的。但是,当文件在外部存储 (如 sd卡) 上创建时,问题就出现了。任何应用程序都可以修改外部存储,因此在那里存储敏感信息是不安全的。通常,为了限制对特定应用程序的数据访问,最好避免MODE_WORLD_READABLE和MODE_WORLD_WRITABLE模式。内容提供商还提供了一种存储机制,根据开发人员的选择,可以允许或限制其他应用程序访问数据。如果我们不希望其他应用程序访问提供的内容然后,它们应该在应用程序清单中标记为 android: exported = false。
- Webview 漏洞
Webview 用于在应用程序的活动中显示 web 内容。WebView 支持使用 JavaScript。如果加载到 Webview 中的应用程序需要 JavaScript 支持,则可以使用setJavascriptEnable(true)。通过将恶意 JavaScript 传递给应用程序界面,可以利用此功能。这给用户带来了潜在的风险,因为攻击者可以访问设备的本地文件。如果应用程序使用 webview 访问敏感数据,建议使用ClearCache()方法删除本地存储的任何文件。为了降低风险,设备必须确认 webview 对象只显示受信任的内容。
- 进程间通信 (IPC) 不安全
对于活动和广播接收器,intents 是 Android 中异步 IPC 的首选机制。许多安全元素是通过 IPC 机制共享的。如果应用程序的 IPC 机制不适合其他应用程序使用,则Android: exported这一属性应该设置为 false。Android 中有两种intent,显式intent和intent。使用隐式intent启动服务会带来安全风险,因为用户看不到哪个service启动了intent。因此,应该使用显式intent来确保应用程序的安全性。
- 中间人攻击
在设计移动应用程序时,通常以客户端-服务器的方式交换数据。当这些数据被交换时,它会通过运营商网络和互联网传播。安全套接字层 (SSL) 是一种常见的建筑,在技术上称为传输层安全 (TLS),客户端和服务器之间的加密通信块。应用程序可能会错误地使用 SSL,使得恶意实体能够通过网络拦截应用程序的数据,从而导致中间人 (MitM) 攻击。为了避免这种情况,最好将 SSL/TLS 应用于移动应用程序将用来向后端 API 传输敏感信息、会话令牌或其他敏感数据的传输通道。强烈建议使用具有适当密钥长度的强密码。
- 数据库漏洞
Android 提供了以关系数据库形式存储应用程序数据的功能,即所谓的 SQLite 数据库。最常见的问题之一是以纯文本存储文件,包括用户名、密码、电子邮件 id 、信用卡详细信息等。攻击者可以很容易地检索到这些数据。当设备处于安全模式或启用 USB 调试时,可能会发生这种情况。
- 缓冲区溢出
缓冲区溢出是一种异常现象,程序将数据写入缓冲区,溢出缓冲区边界,并覆盖缓冲区相邻的内存位置。攻击者通常使用缓冲区溢出来破坏应用程序的执行堆栈。攻击者只需在 Android 操作系统中找到一个允许突破用户空间的错误。通过向应用程序发送精心编制的输入,攻击者可以绕过分配的权限,从而接管设备,从而导致应用程序执行任意代码。
- 代码质量
代码质量差会导致安全漏洞。在移动应用中,代码质量问题相当普遍。攻击者经常使用执行静态分析的第三方工具。具有良好低级知识和专业知识的黑客能够有效地利用编码问题。他们可以为在移动代码中进行的方法调用提供精心制作的输入。这就是为什么开发人员在编程应用程序时应该更加小心。
5、测试工具
可通过互联网获得各种漏洞测试平台的数量。这些工具的共同目的是分析应用程序并检查应用程序的整体安全状况。每种工具都有两种类型的分析 -- 静态分析和动态分析。静态分析在不执行程序的情况下检查应用程序的源代码。动态分析运行应用程序并观察流程活动。静态分析工具通常会给出误报,这意味着可能识别的漏洞可能根本不是漏洞。这就是为什么我们使用了同时进行静态和动态分析的工具。这些工具将分析产生的报告结合起来,并提供总体调查结果。在我们的工作中,我们使用以下四个工具来检查漏洞。
- Andro Bugs
AndroBugs框架是一个高效的Android漏洞扫描程序,可以帮助开发人员或黑客发现Android应用程序中潜在的安全漏洞。该框架的关键功能是检查编码中的缺陷,检测危险的 shell 命令,检查安全过程,测试云的连接,并在良好的编码实践中检测缺失。
- Bluemix IBM
IBM Bluemix 是由 IBM 安全应用程序扫描开发的云平台即服务 (PaaS)。它支持多种编程语言和服务,以及集成的 DevOps,用于在云中构建、运行、部署和管理应用程序。
- Ostorlab
Ostorlab 扫描 android 应用程序并给出详细的安全报告。它在受控环境中运行应用程序,并观察 api 、网络、文件等之间的相互作用,以检测危险行为。
- Quixxi
Quixxi 分析应用程序的安全性,并提供漏洞的全面报告。扫描漏洞后,Quixxi 还可以使用机器学习来保护数据并管理和优化应用程序。
表 I 显示了所使用工具支持的漏洞测试。
6、结果与讨论
我们已经用选定的工具测试了 16 个流行的 android 在线购物应用程序。我们还在孟加拉国一些流行的网上购物应用程序上进行了测试,以进行比较分析。根据 SimilarWeb 报道,Bikroy 、 Daraz 、 Kaymu 、 AjkerDeal 、 Chaldal 、 Flexiplan 这些是排名靠前的应用程序 [21]。这些应用程序允许用户使用信用卡进行交易。正如第四节中提到的,我们已经测试了七个漏洞的应用程序。在获得我们收集这些信息并将数据制成表格的工具生成的测试结果后。
在图 1 中,我们显示了每个应用程序拥有的漏洞数量。在图 2 中,我们显示了应用程序中每个漏洞的出现次数。从图 2 中我们观察到,处于中间位置的人 (MitM) 的脆弱性是最常见的,几乎所有的人都面临风险。根据图 1 Etsy,Bikroy 、 Flexiplan 和 Daraz 在线购物应用程序都有六个漏洞,每个漏洞出现的次数最多。尽管 Zara 、 Gilt 和 Kaymu 是非常受欢迎的应用
资料编号:[4064]
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。