paint-brush
揭示移动应用程序中的安全漏洞经过@induction
1,539 讀數
1,539 讀數

揭示移动应用程序中的安全漏洞

经过 Vision NP13m2023/06/01
Read on Terminal Reader

太長; 讀書

移动应用程序面临各种安全问题,并且由于其广泛使用和处理的宝贵数据而容易受到不同类型的攻击。随着应用程序开发技术随着新框架和方法的发展而不断发展,攻击者也在不断发展他们的技术。尽管更喜欢最佳实践,但有时移动应用程序中的错误可能会在很长一段时间内不被注意。 Android 和 iOS 等平台在历史上对移动应用程序表现出重大的安全风险。
featured image - 揭示移动应用程序中的安全漏洞
Vision NP HackerNoon profile picture
0-item
1-item

在当今的数字环境中,移动设备在简化我们的生活方面发挥着重要作用。


随着应用程序开发过程的不断发展,确保任何类型的移动应用程序(例如混合、区块链或本机)的安全性至关重要。移动应用程序经常处理敏感的用户数据并与各种网络服务交互,这些服务可能使它们成为恶意攻击的潜在目标。


有时,代码中的一个简单错误会让攻击者窃取敏感的用户数据,因此在开发移动应用程序时投入时间非常重要。

所以,伙计们,我们不要像瓷器店里的公牛那样匆忙完成编码或应用程序开发过程😁。


但有时,尽管我们尽了最大努力,那些讨厌的错误就是不会退缩。不要害怕!本文旨在为您提供一系列调试解决方案,这些解决方案将使那些顽固的错误在虚拟启动时颤抖。


📥使移动应用程序容易受到攻击的关键因素:

尽管保留了最佳实践,但有时移动应用程序中的错误可能会在很长一段时间内不被注意。移动应用程序面临各种安全问题,并且由于其广泛使用和处理的宝贵数据而容易受到不同类型的攻击。随着应用程序开发技术随着新框架和方法的发展而不断发展,攻击者也在不断发展他们的技术。


随着移动应用程序开发人员努力创建创新且功能丰富的应用程序,攻击者或网络犯罪分子抓住机会利用漏洞并调整他们的策略以瞄准这些进步。


⬇️操作系统 (OS) 中的错误:

这是可能使攻击者能够通过未经授权访问移动应用程序系统来窃取应用程序数据的最关键因素。 Android 和 iOS 等平台历来对移动应用程序显示出重大的安全风险。因此,仅专注于应用程序开发和调试技术而不在您开发移动应用程序的平台上保持更新被证明在解决安全问题方面效率较低。


以下是一些值得注意的事件:


⚠️ Stagefright(安卓):

怯场漏洞于 2015 年被发现,通过允许攻击者利用媒体播放引擎中的缺陷影响数百万 Android 设备。当时,攻击者使用各种方法,包括恶意多媒体文件和特制的彩信,在受感染的设备和应用程序中执行远程代码。


⚠️ XcodeGhost (iOS):

2015年苹果Xcode开发环境恶意版本, Xcode幽灵, 分布于中国。 XcodeGhost 允许攻击者将恶意代码注入并传播到使用受损 Xcode 版本构建的 iOS 应用程序中。


⚠️脏牛(Linux内核):

脏牛漏洞该漏洞于 2016 年首次被发现,并影响了各种基于 Linux 的系统,包括 Android 设备。攻击者使用它获得对 Linux 内核中只读内存映射的未经授权的写入访问,从而使他们能够提升权限并执行任意代码。


⚠️ StrandHogg 2.0(安卓):

该漏洞已命名StrandHogg 2.0由于与之前的 StrandHogg 漏洞有相似之处并且。

资料来源:Promon


⚠️显示 WhatsApp 正在访问麦克风的错误(Android):

这是 2023 年 Android 发生的最新事件,当时发现安全漏洞在 Android 中导致隐私仪表板中的隐私指示器和通知不正确。这个错误允许 WhatsApp 访问设备的麦克风,即使应用程序未在使用中也是如此。该缺陷损害了用户隐私,并引发了对未经授权的录音的担忧。


✅如何调试您的应用程序

当 Android 或 iOS 等底层操作系统 (OS) 本身存在错误时调试应用程序可能具有挑战性。但是,这里有一些策略可以帮助您应对这种情况:


  • 重现并隔离问题以确认错误是否持续存在于操作系统或您的应用程序中。
  • 尝试研究在操作系统供应商的站点/论坛或其他资源上发布的错误报告是否与您的情况相匹配。如果存在操作系统供应商或社区提供的任何解决方法或临时修复程序,那么作为主要解决方案立即修补错误将很方便。
  • 这是分析日志和崩溃报告以检测错误的一种非常有效的方法,因此,保留有关错误或意外行为的信息,并寻找可以帮助您查明问题原因的任何模式或线索。注意任何可能指示操作系统相关问题的错误消息或堆栈跟踪。
  • 如果错误出现在特定的操作系统版本上,请尝试在不同版本上测试您的应用程序,以确定它是否是由于最近的操作系统更新而产生的新问题。
  • 要报告操作系统错误,请联系操作系统供应商的开发人员支持渠道或论坛。提供错误重现步骤、日志和崩溃报告等详细信息,以提高认识并加快问题的解决。
  • 在您的应用程序中实施临时解决方法以避免操作系统错误的影响。这可能包括禁用应用程序的某些功能或修改应用程序行为以避免出现问题。将这些变通办法清楚地传达给应用程序用户,直到永久修复可用。
  • 及时了解操作系统更新和补丁报告。


⬇️弱认证:

管理不善或实施不当的身份验证机制(例如弱密码或缺少多因素身份验证 (MFA))可能会使移动应用程序容易受到未经授权的访问(称为身份验证攻击),允许攻击者进入用户帐户或冒充合法用户。


✅预防技巧:

为确保安全的移动应用程序身份验证,请遵循以下准则:


  • 通过确保移动用户具有相同或更强的身份验证因素,将移动应用程序的身份验证要求与 Web 应用程序的身份验证要求相匹配。
  • 不鼓励使用 4 位 PIN 码或可猜测的数字(例如 DOB)作为身份验证密码。
  • 避免本地用户身份验证,因为它可能导致客户端绕过漏洞,尤其是在越狱设备上。
  • 当需要离线认证时,在服务端进行认证请求,认证成功后才将应用数据加载到设备上。
  • 如果需要客户端数据存储,请使用从用户登录凭据安全派生的加密密钥来加密数据。这可以防止未经授权访问存储的数据。
  • 使用可由用户撤销的特定于设备的身份验证令牌实施持久身份验证(记住我),防止丢失或被盗的设备进行未经授权的访问。
  • 避免使用设备标识符或地理位置等可欺骗性的值来进行用户身份验证。
  • 在移动应用程序中使持久身份验证选择加入而不是默认启用。


⬇️数据加密不足和数据存储不安全:

存储在应用程序内或传输过程中的敏感数据的管理薄弱的加密机制使其容易被拦截,因为攻击者可以利用此弱点访问和操纵机密用户信息。此外,在没有适当安全措施的情况下存储敏感数据的过程会增加数据泄露的风险。


✅预防技巧:


  • 使用 AES(高级加密标准)等强大的加密算法来保护敏感的用户数据。例如,使用bcrypt 或 PBKDF2等强哈希算法对用户密码进行加密可确保即使存储的密码被泄露,也极难解密。
  • 使用特定于平台的安全存储机制安全地存储敏感信息 例如,您可以利用操作系统提供的 iOS 上的钥匙串服务来安全地存储用户凭据和其他敏感数据。在 Android 上,Android Keystore 系统提供了一个安全的存储设施。
  • SSL/TLS 配置薄弱的不安全通信会导致多种基于网络的攻击,例如攻击者拦截和更改通信的中间人(MitM)攻击和分布式拒绝服务 (DDoS) 攻击,这些攻击会使应用程序的服务器不堪重负大量请求,导致服务中断。实施 HTTPS(HTTP 安全)等协议来加密移动应用程序和服务器之间传输的数据,例如,电子商务应用程序通过 HTTPS 安全地传输客户支付详细信息,确保敏感财务信息的机密性。
  • 为防止数据在设备被盗或丢失时丢失,您可以启用远程擦除功能以允许用户或管理员远程擦除存储在设备上的敏感数据。此外,强制执行全设备加密,即使设备落入未经授权的人手中也可以保护数据。


⬇️第三方库中的漏洞:

移动应用程序经常利用第三方库和框架来协助应用程序的开发过程。但是,如果这些类型的库具有已知的安全漏洞或未定期更新,它们可能成为攻击者通过非法访问应用程序系统来利用和破坏应用程序安全性的切入点。


✅预防技巧:

为防止移动应用程序中第三方库中的漏洞,请将库更新到最新版本。例如,定期更新 Retrofit 或 Firebase SDK 等流行库可确保及时解决任何报告的安全漏洞。


⬇️输入验证不足:

用户输入验证不充分会导致各种安全漏洞(例如 SQL 注入或跨站点脚本(XSS)攻击)。攻击者可以利用这些漏洞来操纵应用程序行为,以对他们有利,从而获得未经授权的访问或注入恶意代码。


✅预防技巧:

开发人员应实施严格的输入清理、参数化查询、输出编码和白名单技术。应采用正则表达式验证以及客户端和服务器端验证的组合来防止这些问题。


⬇️缺乏安全会话管理:

管理不善的应用程序会话会使移动应用程序容易受到会话劫持或会话固定攻击。攻击者可以使用弱会话处理来获得未经授权的访问。


✅预防技巧:

首选以下步骤来防止持续存在的问题:

  • 实施强大的会话令牌生成,
  • 设置适当的会话过期时间,
  • 安全地存储会话数据,
  • 使用安全的通信协议,
  • 在身份验证时重新生成会话令牌,以及
  • 实施强大的访问控制机制。


⬇️代码混淆和逆向工程:

缺乏代码混淆技术的移动应用程序容易受到逆向工程的攻击,攻击者可以在逆向工程中分析和理解应用程序的源代码。这暴露了潜在的安全漏洞或应用程序的虫洞,允许攻击者利用它们进行恶意目的,例如修改合法应用程序、使用恶意软件有效负载重新打包它们,以及通过非官方应用程序商店或恶意网站分发它们。


以下是一些值得注意的事件:


⚠️神奇宝贝GO:

2016 年,流行的增强现实游戏Pokémon GO面临与代码逆向工程相关的问题。攻击者对应用程序的代码进行逆向工程,以开发未经授权的第三方应用程序,这些应用程序提供不公平的优势,例如 GPS 欺骗和自动游戏。


⚠️BankBot 和 Acecard:

BankBot 和 Acecard 等各种移动银行木马利用代码逆向工程来破坏金融应用程序。BankBot 于 2017 年首次被发现,而 Acecard 自 2014 年以来一直活跃。攻击者对应用程序进行逆向工程以提取敏感信息,拦截通信,并进行欺诈交易。


✅预防技巧:

您可能会遵循实际上非常有效的技术来防止黑客对您的应用程序进行逆向工程。


👉🏿在许多情况下,移动应用程序主要通过官方平台(如 Google PlayStore)或内置平台特定商店(如三星设备的 GalaxyStore)分发。通过利用这一点,开发人员可以执行检查以验证应用程序的安装源并在未通过授权平台安装时限制其功能。这可以通过使用库或实施自定义解决方案来实现,该解决方案检查安装源并相应地实施限制并实施强大的数据库加密。


👉🏿重命名变量和方法、删除调试信息和添加虚拟代码片段等技术可以帮助防止逆向工程尝试。例如,ProGuard 或 DexGuard 等工具可用于混淆 Android 应用程序,而 iOS 开发人员更喜欢 SwiftShield 或 Obfuscator-LLVM 等工具。对于 Android,您可以通过在app/build.gradle文件中包含以下内容来实现使用proguard-rules.pro文件中的规则。

 android { buildTypes { getByName("release") { // Enables code shrinking, obfuscation, and optimization for only // your project's release build type. Make sure to use a build // variant with `isDebuggable=false`. isMinifyEnabled = true // Enables resource shrinking, which is performed by the // Android Gradle plugin. isShrinkResources = true // Includes the default ProGuard rules files that are packaged with // the Android Gradle plugin. To learn more, go to the section about // R8 configuration files. proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } ... }

代码来源: Android开发者平台


👉🏿将防篡改机制集成到应用程序中以检测和防止运行时修改。实施校验和验证、完整性检查和代码签名,以识别未经授权的修改并防止代码被篡改。 Google Play Protect 和 App Store 的代码签名验证等服务为应用分发提供了内置的防篡改措施。


👉🏿集成 RASP 解决方案,主动监控应用程序的运行时行为并检测潜在的攻击或篡改企图。 App-Ray、GuardSquare 的 iXGuard 或 Arxan 的 App Threat Intelligence 等工具提供运行时保护功能,可以检测和缓解运行时漏洞和未经授权的活动。


👉🏿实施根/越狱检测机制,以识别应用程序是否在受感染的设备上运行。可以集成适用于 Android 的 RootBeer 或 SafetyNet API 以及适用于 iOS 的越狱检测库等库来检测 root 或越狱状态。一旦检测到,该应用程序可以采取适当的措施,例如限制功能或显示警告,以防止潜在的安全风险。


⬇️硬件或处理器缺陷:

想象一下,您通过首选所有安全措施或标准开发了一款高级应用程序,但该应用程序分布在硬件资源和处理器存在显着缺陷的设备上,在这种情况下,您的努力的有效性如何?好吧,看看以下给我们上课的非凡的过去事件。


⚠️Qualcomm Snapdragon 漏洞 (2018):

在 Android 设备中广泛使用的 Qualcomm Snapdragon 芯片组中发现了多个漏洞。好消息是,它已经解决了但在那之前,这些漏洞允许攻击者获得根访问权限、绕过安全措施并执行任意代码。通过利用这些缺陷,攻击者可以危及在配备受影响的 Snapdragon 芯片的设备上运行的移动应用程序的安全性。


⚠️三星 Exynos 芯片组中的 18 个零日漏洞(2022 年末至 2023 年初发现):

在 2022 年末和 2023 年初之间,Google 的零日项目(著名的零日错误搜寻团队)发现并披露了18 个零日漏洞三星的 Exynos 芯片组广泛应用于移动设备、可穿戴设备和汽车。在这些漏洞中,有四个被认为特别严重,因为它们促进了从 Internet 到基带的远程代码执行 (RCE)。


✅可以实施以下几项安全措施:

  • 随时了解硬件或处理器制造商提供的最新安全补丁和固件更新。
  • 在移动应用程序中实施有效的权限控制,并确认应用程序仅请求其预期功能所需的必要权限。
  • 实施 MDM 解决方案,因为 MDM 工具提供了执行安全策略、控制应用程序安装以及在丢失或被盗时远程擦除设备等功能。
  • 调整强大的安全监控机制,及时发现和应对潜在的安全事件。监控设备和应用程序行为是否存在异常并实施事件响应计划以减轻和解决任何安全漏洞。

移动应用安全方面的挑战:

移动应用程序开发技术的快速进步为攻击者利用安全漏洞开辟了新途径。以下是一些值得注意的挑战:


  • 移动应用程序开发技术的快速进步给跟上新出现的安全威胁和攻击技术带来了挑战,因为攻击者也在不断适应和寻找新的方法来利用移动应用程序中的安全漏洞。
  • 移动设备、操作系统和版本的多样性增加了移动应用程序安全性的复杂性。
  • 由于生态系统的碎片化导致大量设备运行可能包含已知漏洞的过时软件版本,因此移动设备在接收操作系统更新方面经常面临延迟。
  • 移动应用程序处理大量引发隐私问题的个人和敏感用户数据。

样本图像


💡移动应用程序调试是有回报的活动:

移动应用程序调试是一项有趣、引人入胜且有益的活动,可让您提高应用程序开发和安全方面的技能。它不仅使您能够创建高级和安全的应用程序,而且还为各种企业提供调试现有应用程序的机会,使您能够赚取可观的收入。


通过利用您在移动应用程序调试方面的专业知识,您可以为组织提供有价值的服务,识别和修复他们应用程序中的安全问题,并为他们的成功做出贡献。此外,参与漏洞赏金计划和自由调试项目,例如 Google ( 谷歌漏洞奖励计划 (VRP) )或苹果(苹果安全赏金)可以进一步帮助您的收入。因此,拥抱令人兴奋的移动应用程序调试世界,您的技能和热情可以带来个人成长和经济回报。

结论:

整个开发过程中的安全编码实践对于最大程度地减少移动应用程序中的严重安全问题至关重要。由于攻击者技术的不断发展,调试应用程序安全性可能是一项具有挑战性的任务,因此必须确定最佳实践的优先级并及时了解最新信息和标准,以保护用户数据和隐私。请务必注意,Android 或 iOS 等底层应用程序平台以及设备可能存在漏洞,因此有必要使用最适合的调试策略和安全措施来使应用程序保持最新状态。


移动调试不限于开发人员;即使作为用户,您也可以为保护全球数百万用户做出贡献。此外,移动调试可以提供赚钱的机会。