On 03/29/2013 05:35 PM, Persaud, Ryan K. wrote:
Thanks, I pulled down the update grouper policies and updated the device with 
them.  I'm seeing a few more puzzling denials that I was hoping you could shed 
some light on.

1) audit(1364517929.121:116): avc:  denied  { write } for  pid=7872 
comm="m.amazon.kindle" 
path=2F6465762F6173686D656D2F6C696265787061744B52462E736F202864656C6574656429 dev=tmpfs 
ino=16790 scontext=u:r:untrusted_app:s0:c42,c256 
tcontext=u:object_r:untrusted_app_tmpfs:s0:c42,c256 tclass=file

This is similar to what Joshua Brindle saw last October 
(http://www.mail-archive.com/seandroid-list@tycho.nsa.gov/msg00141.html).  At the time, 
you said "That becomes another means of write+execute to the same file/memory.  It 
would be preferable if we could get it into a different type."  I don't quite 
understand what you mean by that.  Can you please clarify?  Also, what is the actual 
directory that tmpfs represents, and how would I determine that from looking at the 
policy files (I see it in te_macros, but I don't see how it's related to a physical 
directory).

Passing this through ausearch -i (after tweaking it by hand to include the type=AVC msg= prefix expected by ausearch), we can decode the pathname:

type=AVC msg=audit(03/28/2013 20:45:29.121:116) : avc: denied { write } for pid=7872 comm=m.amazon.kindle path=/dev/ashmem/libexpatKRF.so (deleted) dev=tmpfs ino=16790 scontext=u:r:untrusted_app:s0:c42,c256 tcontext=u:object_r:untrusted_app_tmpfs:s0:c42,c256 tclass=file

The path was hex encoded by the kernel because it contained whitespace characters - the " (deleted)" suffix, which was added automatically by the kernel when generating a pathname for audit because the underlying tmpfs file is unlinked. The "/dev/ashmem/" prefix tells you that it is an ashmem region (which are backed by tmpfs files). The libexpatKRF.so is the ashmem region name provided by userspace, presumably derived from the asset file name (see below).

Looking around a bit, I think this is a case of a native code library being packaged as an asset of the .jar file and manually extracted by the app rather than being packaged as a lib and extracted by the system. See for example:
http://blog.crittercism.com/2012/08/22/packaging-android-libraries-with-native-code/

I suspect that we just have to allow it if we want to support this behavior, although I have not seen this in any cts test case.

2) audit(1364517725.581:115): avc:  denied  { open } for  pid=125 comm="debuggerd" 
name="libCore.so" dev=mmcblk0p9 ino=217299 scontext=u:r:debuggerd:s0 
tcontext=u:object_r:system_data_file:s0 tclass=file

The app (air.WatchESPN) crashes, and it appears that debuggerd is attempting to 
open a library in the app's lib directory:
shell@android:/data/data/air.WatchESPN/lib # ls
libCore.so

I think this happening when debuggerd attempts to load the symbol table for 
libCore.so
The call graph is: dump_backtrace -> load_ptrace_context -> 
load_ptrace_map_info_data -> load_symbol_table

That seems ok to allow.

3) audit(1364518882.161:133): avc:  denied  { write } for  pid=241 comm="SurfaceFlinger" 
name="aggressiveness" dev=sysfs ino=3549 scontext=u:r:surfaceflinger:s0 
tcontext=u:object_r:sysfs:s0 tclass=file

This one occurs when com.fingersoft.cartooncamera is running, and I'm not 
entirely sure what is going on.

I don't have a Nexus 7 in front of me, but we do have a restorecon /sys/devices/tegradc.0/smartdimmer/aggressiveness in our init.grouper.rc file and a corresponding entry in the grouper/sepolicy/file_contexts file. Maybe we also need the equivalent for /sys/class/graphics/fb0/device/smartdimmer/aggressiveness.



--
This message was distributed to subscribers of the seandroid-list mailing list.
If you no longer wish to subscribe, send mail to majord...@tycho.nsa.gov with
the words "unsubscribe seandroid-list" without quotes as the message.

Reply via email to