之前会遇到一些应用logcat打印敏感信息,包括但不限于账号密码,cookie凭证,或一些敏感的secretkey之类的,下面客观的记录下起危害性。
logcat是Android系统提供的一种记录日志的工具。它可以帮助开发人员诊断应用程序中的问题,例如崩溃、内存泄漏和性能问题。logcat通过查看Android系统的内核缓冲区和应用程序的日志输出来捕获日志事件。
在技术上,logcat是通过一个名为LogcatService的后台服务来实现的。当应用程序在设备上运行时,它会生成日志消息并将其发送到系统的日志记录器中。这些消息包含了与事件相关的详细信息,例如事件类型、时间戳、进程ID和标记等。
logcat可以根据不同的过滤器来过滤和显示日志信息。您可以使用命令行工具或Android Studio的日志cat窗口来查看logcat输出。这些工具提供了各种过滤选项,例如按标记、级别、进程ID等过滤日志消息。
所有应用程序都可以使用logcat记录和访问日志信息。但是,每个应用程序只能访问自己的日志信息,而不能访问其他应用程序的日志信息,因为Android系统使用Linux内核的安全机制来限制应用程序的访问权限。
在Android系统中,每个应用程序都运行在一个独立的进程中,并且每个进程都有自己的日志缓冲区。应用程序可以使用Android提供的Log
类将日志信息写入自己的日志缓冲区中。
命令行中输入adb logcat
命令可以查看所有应用程序的日志信息,是因为该命令使用了Android Debug Bridge(ADB)工具,该工具提供了一种特权模式,允许您访问设备的所有数据和文件,包括其他应用程序的日志信息。
Android系统的安全机制与SELinux(Security-Enhanced Linux)安全模块密切相关。SELinux是一种基于Linux内核的强制访问控制(MAC)系统,可以对系统资源(如文件、进程和网络)的访问进行细粒度的控制和限制,从而提高系统的安全性和稳定性。
在Android系统中,默认情况下启用了SELinux安全模块,并使用SELinux策略对应用程序的权限进行控制和管理。每个应用程序都被分配了一个唯一的SELinux域,以此实现应用程序之间的隔离和安全。应用程序只能访问其自己的SELinux域内的资源,而无法访问其他应用程序和系统资源。
READ_LOGS
是Android系统中的一项系统权限,用于允许应用程序读取系统日志信息。
在Android 4.1及以上版本中,Google对READ_LOGS
权限进行了限制,只有具有root
权限的用户和系统应用程序才能获取该权限。这是为了进一步提高系统的安全性,避免恶意应用程序获取敏感信息并导致安全问题。
如果您是开发人员,需要使用READ_LOGS
权限来调试和排错应用程序,可以在应用程序的AndroidManifest.xml
文件中添加以下代码:
但需要注意的是,如果应用程序没有具有系统签名的证书,那么应用程序在运行时请求READ_LOGS
权限时会抛出SecurityException
异常。
系统签名的证书是由Android系统的开发者或设备制造商颁发的,用于对系统应用程序进行签名和授权。该证书通常是设备制造商或ROM开发者所持有的。
具体步骤
assets
目录或res/raw
目录中,再通过代码读取)、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
权限,也无法读取系统日志信息。
chmod 04755 /system/bin/logcat
用于修改系统日志工具logcat
的权限,使得普通应用程序也可以读取系统日志信息。该命令需要在具有root权限的设备上执行。
本文详细介绍了logcat敏感信息泄露的危害,可以看到,实际上在当前的android环境下,远程攻击的风险较小。多数是通过系统级别的操作或者物理攻击才有可能利用到logcat的泄露,但是还是存在一定的风险,建议修复。