React Native - 内存转储中的安全问题敏感信息

React Native - security issue sensitive information in memory dump

提问人:Franklin Velásquez 提问时间:9/30/2023 更新时间:9/30/2023 访问量:69

问:

我的 React Native 应用程序面临一些安全问题,特别是针对 Android。我正在使用 Fridump 运行一些渗透测试并查看内存中的内容。

https://frida.re/docs/android/

https://github.com/Nightbringer21/fridump

我注意到,在内存中有很多关于我的应用程序中发生的HTTPS请求的信息。这包括对身份验证端点的 POST,我在其中使用用户在登录表单上输入的凭据。

在 Fridum 创建的 strings.txt 文件中找到的信息包含如下信息:

network_XMLHttpRequest_https://my-api-.com/authenticate
`!;@p
https://my-api-.com/authenticate8`i
{"Password":"value","Username":"value"}

这只是一个例子,但在报告中还有许多其他地方提供network_XMLHttpRequest_https信息。

我正在使用的其他一些工具:

  • Redux 工具包
  • Redux 持久化
  • 用于执行 HTTP 请求的 Axios
  • 用于日志记录的哨兵

即使我在应用程序中注销,Fridum 报告的结果也是相同的,这将删除并替换所有以前的屏幕,只留下登录表单屏幕。

但是,如果我关闭应用程序并再次打开它,则敏感数据和 https 请求信息不再出现在内存报告中,问题在第一次登录 api 请求后开始。

关于如何解决这个问题的任何想法?

有没有人知道一个工具来检查应用程序可能使用的所有可能的网络中间件?

我试过什么:

  • 查看我的 redux 商店,看起来我没有在商店中存储密码。我只是在操作中用作有效负载,在该操作中,我调度中间件,该中间件使用 Axios 向身份验证端点执行 post 请求。

  • 禁用 Sentry,因为我注意到它记录了与 HTTP 请求相关的数据 我们

我希望找到一种方法从内存中删除此HTTP请求信息

javascript android react-native 安全性 axios

评论

0赞 Robert 9/30/2023
我不确定你期望什么。众所周知,如果您选择了一种带有垃圾收集器的语言,那么安全地删除内存中的数据可能具有挑战性,甚至是不可能的。如果你不想这样做,你必须使用一种编程语言,你可以手动覆盖变量的内存。
0赞 Onyx 10/10/2023
@Robert 嗨,罗伯特,我遇到了与这个问题的创建者相同的问题,并在我寻找防止 fridump 暴露密码等敏感数据的方法时发现了您的评论。我是否正确理解了不可能隐藏输入中写入或通过 Fridump 通过 Axios 发送的密码,因为数据保存在设备的 RAM 中,直到自动垃圾收集器设备将其删除?
0赞 Robert 10/10/2023
@Onyx是的。您只能最小化 RAM 中的副本数。但为此,我建议使用普通的 Java/Kotlin,而不使用其他执行运行时,如 react-native。在 Java 中,您可以存储敏感数据,如果不再需要它,请覆盖数组内容以删除包含的数据。 实例无法被覆盖,因此请尽可能避免使用它们。HTTP 请求不应在内存中准备(例如作为 String),而应直接写入 HTTP 输出流。char[]String

答: 暂无答案