Public bug reported:

The version of apparmor-utils in Ubuntu 14.04 are completely unusable.
(2.8.95~2430-0ubuntu5)

jjohansen on IRC has provided me with this repo instead, which works far
better (2.8.98-0ubuntu2+utopic.backport). So I suggest you review this
or whatever process is normally used, work with the developers, and
update it urgently... apparmor tools are completely broken.

https://launchpad.net/~apparmor-dev/+archive/ubuntu/apparmor-backports/

Here is the most basic example possible... I have nothing complicated in
this system. It doesn't have any custom profiles, and I have copied
/bin/bash to my home to make a profile. Then I run the bash and run "ls"
to generate some logs. And then hit "s" to search.

# aa-genprof /root/basharmor
Writing updated profile for /root/basharmor.
Setting /root/basharmor to complain mode.

Before you begin, you may wish to check if a
profile already exists for the application you
wish to confine. See the following wiki page for
more information:
http://wiki.apparmor.net/index.php/Profiles

Please start the application to be profiled in
another window and exercise its functionality now.

Once completed, select the "Scan" option below in
order to scan the system logs for AppArmor events.

For each AppArmor event, you will be given the
opportunity to choose whether the access should be
allowed or denied.

Profiling: /root/basharmor

[(S)can system log for AppArmor events] / (F)inish
Reading log entries from /var/log/syslog.
Updating AppArmor profiles in /etc/apparmor.d.
Traceback (most recent call last):
  File "/usr/sbin/aa-genprof", line 150, in <module>
    lp_ret = apparmor.do_logprof_pass(logmark, passno)
  File "/usr/lib/python3/dist-packages/apparmor/aa.py", line 2246, in 
do_logprof_pass
    read_profiles()
  File "/usr/lib/python3/dist-packages/apparmor/aa.py", line 2564, in 
read_profiles
    read_profile(profile_dir + '/' + file, True)
  File "/usr/lib/python3/dist-packages/apparmor/aa.py", line 2590, in 
read_profile
    profile_data = parse_profile_data(data, file, 0)
  File "/usr/lib/python3/dist-packages/apparmor/aa.py", line 2700, in 
parse_profile_data
    filelist[file]['profiles'][profile][hat] = True
TypeError: 'bool' object does not support item assignment

aa-logprof doesn't crash the same way with this bash example, but there
are lots of ways to crash it too.

Here is an example of the most ridiculous error I got (which was
probably actually the ppa:apparmor-dev/apparmor-devel version
2.8.96~2541-0ubuntu3+abstract3, which was actually better than
2.8.95~2430-0ubuntu5). Just simply running "aa-logprof" would gtive me
this exception:

root@ganglia:/etc/apparmor.d# aa-logprof
Reading log entries from /var/log/audit/audit.log.
Updating AppArmor profiles in /etc/apparmor.d.
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apparmor/severity.py", line 181, in 
load_variables
    for line in f_in:
  File "/usr/lib/python3.4/codecs.py", line 704, in __next__
    return next(self.reader)
  File "/usr/lib/python3.4/codecs.py", line 635, in __next__
    line = self.readline()
  File "/usr/lib/python3.4/codecs.py", line 548, in readline
    data = self.read(readsize, firstline=True)
  File "/usr/lib/python3.4/codecs.py", line 494, in read
    newchars, decodedbytes = self.decode(data, self.errors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 41: 
invalid start byte

And then to figure out which file it was trying to read, I added another
exception that contains the name:

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/sbin/aa-logprof", line 52, in <module>
    apparmor.do_logprof_pass(logmark)
  File "/usr/lib/python3/dist-packages/apparmor/aa.py", line 2261, in 
do_logprof_pass
    handle_children('', '', root)
  File "/usr/lib/python3/dist-packages/apparmor/aa.py", line 1236, in 
handle_children
    sev_db.load_variables(profile)
  File "/usr/lib/python3/dist-packages/apparmor/severity.py", line 207, in 
load_variables
    raise Exception("failed reading prof_path = %s, e = %s" % (prof_path, e))
Exception: failed reading prof_path = /usr/sbin/apache2, e = 'utf-8' codec 
can't decode byte 0xb3 in position 41: invalid start byte


It is reading the apache2 binary! not a profile! Of course it can't decode it 
into UTF-8. So the backport is necessary. The newer devel one for Trusty is not 
good enough.

Please please upgrade the tools available.... there is no reason to
stick with this version. It is not like some "old stable" version... it
is the most bleeding edge possible, right after the conversion from perl
to python without any bug fixes. I use apparmor everywhere, and find
this to be encredibly annoying. (but at least for me, this backports ppa
will do well enough)

** Affects: apparmor (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1394612

Title:
  apparmor-utils on 14.04 aka trusty is completely unusable

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/1394612/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to