如果反向工程是可能的,如何保护应用程序IPA免受黑客攻击

35

我们最近为一家大型银行开发并发布了一款移动银行应用程序,该银行聘请了一家安全公司对应用程序进行道德黑客攻击,以查看它是否以任何方式泄露机密数据。

我们最近收到了该公司的黑客攻击报告,尽管报告称没有严重的安全问题存在,但其中包含了项目所有类文件、方法名称和汇编代码的列表。

现在客户坚持要求我们修复这些安全漏洞并重新发布应用程序。然而,我们不知道他们如何从应用程序的IPA中获得所有这些细节。我在Stack Overflow上搜索到了一篇特定的帖子,提到了这个链接,该链接指出你无法防止应用程序被黑客攻击。

请帮助我修复这些安全漏洞,或者如果不可能,如何说服客户。

编辑: 最近发现了这个页面。看起来,Arxan的EnsureIT可以防止应用程序IPA被反向工程。有任何使用它的经验吗?


1
你应该查看这个问题:https://dev59.com/UW035IYBdhLWcg3wNdPg - andreamazz
道德黑客?如果有人尝试非道德黑客行为怎么办? - peko
但这是不可能的,也不应该有任何线程,许多项目都将它们的代码公开,并且仍然被视为安全,例如TrueCrypt、sshd和许多其他项目。 - peko
你们把应用程序中的所有符号信息都删除了吗?(我指的是调试符号...)当然,有更好的方法来保护你的应用程序,但也许你们会忽略这个简单的事情? - Goles
@peko 和 Gando,我们没有留下任何调试符号。安全公司表示没有严重的安全威胁。他们唯一能找到的是所有类文件和方法名称的名称(至少在他们的报告中是这样提到的)。但客户感到震惊的是,这意味着任何严重的黑客都可以侵入应用程序并获取业务逻辑(Web服务URL等)。 - Vin
显示剩余10条评论
2个回答

13

总是有风险存在。即使你自己没有引入漏洞,平台也可能存在漏洞,最终可能为恶意攻击者提供一个入口。

至于你的问题:不能安全地假设硬编码的URL,即使超出了人们的理解范围,也不能从你的产品中删除。请始终设计您的应用程序,以保证用户数据的安全(尽可能),即使内置资源被破坏。如果该URL的知识本身构成安全威胁,则您的整个方法和客户端API本质上都是不安全的。请记住,此类信息也可能被中间人攻击(和其他攻击方式)捕获。

避免安全观察。仅在必要时将敏感数据存储在磁盘上。通常不允许PIN / TAN存储。

以下是一些想法,它们可能会(或可能不会)使您的客户相信您的应用程序尽可能安全:

  • 只要应用程序运行在未越狱的设备上,攻击者即使了解您的应用程序内部情况,也不太可能获取任何用户数据,因为iPhone通常不提供与您的应用程序干扰的机会
  • 如果攻击者能够接触到您的用户数据,并且提供了所有在iOS下可用的保护该数据的手段(->密钥链->加密芯片-> ...),那么这不是您的错。这意味着设备要么越狱了,要么存在系统本身的漏洞已被攻击利用,你无法防范其中任何一种可能性。
  • 无法防止反向工程您的应用程序。即使您花费更多的精力进行混淆,有强烈动机的攻击者仍然能够得到他想要的。这是一个事实,您的客户需要习惯这个事实。
  • 其他平台也存在类似的漏洞,在iPhone上至少有一个相对封闭的环境和较小的受木马等攻击的风险。
  • 政府和安全公司经常遭受攻击,尽管他们应该知道如何保护自己。这意味着生活本质上是不安全的,请适应这一点。

你的观点有点像,嘿,即使政府也会被黑客攻击,那我为什么不能呢?说真的,这些都不是论据。你不能假设设备没有越狱等等。 但正如你所说,安全并不取决于隐蔽性。 - peko
我提出这一点只是为了让事情更清晰明了。这并不意味着我们可以不关心安全问题。相反,它应该解释说,即使采取了最复杂的安全措施,你也不能百分之百地确定你的产品是安全的。 - Toastor
5
当然我无法假设设备没有越狱。但我可以假设使用该越狱设备的用户在越狱时知道自己在做什么,并且他或她可能会危及设备的安全性。因此,如果由于越狱而导致用户将关键个人数据失去给攻击者,那是用户自己的责任。请注意,这里并未对设备是否越狱进行判断。 - Toastor

4
我最近在研究这个问题时发现了这篇文章,特别是其中提到的部分很有帮助:
原生应用程序的代码存储在二进制可执行文件中,该文件进一步加密。只有当处理器将可执行文件加载到随机访问内存中并且整个解密过程发生在硬件级别时,才会执行其解密。这就是为什么创建离线解密工具非常困难的原因。解密加密的二进制数据的唯一方法是在越狱设备上安装一些特殊工具。
来源:iOS中的安全性:通过Stoyan Stoyanov保护.ipa文件内容

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接