【Android】logcat日志敏感信息泄露

前言

之前会遇到一些应用logcat打印敏感信息,包括但不限于账号密码,cookie凭证,或一些敏感的secretkey之类的,下面客观的记录下起危害性。

相关知识

 1. logcat

logcat是Android系统提供的一种记录日志的工具。它可以帮助开发人员诊断应用程序中的问题,例如崩溃、内存泄漏和性能问题。logcat通过查看Android系统的内核缓冲区和应用程序的日志输出来捕获日志事件。

在技术上,logcat是通过一个名为LogcatService的后台服务来实现的。当应用程序在设备上运行时,它会生成日志消息并将其发送到系统的日志记录器中。这些消息包含了与事件相关的详细信息,例如事件类型、时间戳、进程ID和标记等。

logcat可以根据不同的过滤器来过滤和显示日志信息。您可以使用命令行工具或Android Studio的日志cat窗口来查看logcat输出。这些工具提供了各种过滤选项,例如按标记、级别、进程ID等过滤日志消息。

2. 系统的日志记录器

所有应用程序都可以使用logcat记录和访问日志信息。但是,每个应用程序只能访问自己的日志信息,而不能访问其他应用程序的日志信息,因为Android系统使用Linux内核的安全机制来限制应用程序的访问权限。

在Android系统中,每个应用程序都运行在一个独立的进程中,并且每个进程都有自己的日志缓冲区。应用程序可以使用Android提供的Log类将日志信息写入自己的日志缓冲区中。

3. adb logcat

命令行中输入adb logcat命令可以查看所有应用程序的日志信息,是因为该命令使用了Android Debug Bridge(ADB)工具,该工具提供了一种特权模式,允许您访问设备的所有数据和文件,包括其他应用程序的日志信息。

4. SELinux

Android系统的安全机制与SELinux(Security-Enhanced Linux)安全模块密切相关。SELinux是一种基于Linux内核的强制访问控制(MAC)系统,可以对系统资源(如文件、进程和网络)的访问进行细粒度的控制和限制,从而提高系统的安全性和稳定性。

在Android系统中,默认情况下启用了SELinux安全模块,并使用SELinux策略对应用程序的权限进行控制和管理。每个应用程序都被分配了一个唯一的SELinux域,以此实现应用程序之间的隔离和安全。应用程序只能访问其自己的SELinux域内的资源,而无法访问其他应用程序和系统资源。

5.READ_LOGS

READ_LOGS是Android系统中的一项系统权限,用于允许应用程序读取系统日志信息。

在Android 4.1及以上版本中,Google对READ_LOGS权限进行了限制,只有具有root权限的用户和系统应用程序才能获取该权限。这是为了进一步提高系统的安全性,避免恶意应用程序获取敏感信息并导致安全问题。

如果您是开发人员,需要使用READ_LOGS权限来调试和排错应用程序,可以在应用程序的AndroidManifest.xml文件中添加以下代码:


但需要注意的是,如果应用程序没有具有系统签名的证书,那么应用程序在运行时请求READ_LOGS权限时会抛出SecurityException异常。

6. 系统签名证书

系统签名的证书是由Android系统的开发者设备制造商颁发的,用于对系统应用程序进行签名和授权。该证书通常是设备制造商或ROM开发者所持有的。

具体步骤

  1. 生成公钥和私钥
  2. 导出公钥
  3. 将公钥嵌入Android源代码(例如可以放到应用程序的assets目录或res/raw目录中,再通过代码读取)、

7. pm grant

pm grant是一个Android系统命令,用于授予应用程序特定的权限。该命令需要在具有root权限的设备上执行。

通过执行pm grant命令,您可以将指定应用程序的权限设置为允许或拒绝。

例如

pm grant com.example android.permission.READ_LOGS

需要注意的是,尽管您可以使用pm grant命令授予应用程序READ_LOGS权限,但是在Android 4.1及以上版本中,只有具有系统签名的应用程序才能请求并获得该权限。因此,如果您的应用程序没有具有系统签名的证书,即使您通过pm grant命令将其授予READ_LOGS权限,也无法读取系统日志信息

8. /system/bin/logcat

chmod 04755 /system/bin/logcat

用于修改系统日志工具logcat的权限,使得普通应用程序也可以读取系统日志信息。该命令需要在具有root权限的设备上执行。

后话

本文详细介绍了logcat敏感信息泄露的危害,可以看到,实际上在当前的android环境下,远程攻击的风险较小。多数是通过系统级别的操作或者物理攻击才有可能利用到logcat的泄露,但是还是存在一定的风险,建议修复。

你可能感兴趣的:(android,logcat,READ_LOGS)