A quick and dirty way to fix it is to just add someting along the lines
of

#New ptrace rules require something like this
ptrace (read),

to our profile for firefox (/etc/apparmor.d/usr.bin.firefox) and then
reload the profile (sudo apparmor_parser -r
/etc/apparmor.d/usr.bin.firefox)

Here's the full text of my firefox profile

# vim:syntax=apparmor
# Author: Jamie Strandboge <[email protected]>

# Declare an apparmor variable to help with overrides
@{MOZ_LIBDIR}=/usr/lib/firefox

#include <tunables/global>

# We want to confine the binaries that match:
#  /usr/lib/firefox/firefox
#  /usr/lib/firefox/firefox
# but not:
#  /usr/lib/firefox/firefox.sh
/usr/lib/firefox/firefox{,*[^s][^h]} {
  #include <abstractions/audio>
  #include <abstractions/cups-client>
  # TODO: finetune this for required accesses
  #include <abstractions/dbus>
  #include <abstractions/dbus-accessibility>
  #include <abstractions/dbus-session>
  #include <abstractions/gnome>
  #include <abstractions/ibus>
  #include <abstractions/nameservice>
  #include <abstractions/p11-kit>

  # Addons
  #include <abstractions/ubuntu-browsers.d/firefox>

  # for networking
  network inet stream,
  network inet6 stream,
  @{PROC}/[0-9]*/net/if_inet6 r,
  @{PROC}/[0-9]*/net/ipv6_route r,
  @{PROC}/[0-9]*/net/dev r,
  @{PROC}/[0-9]*/net/wireless r,

  # should maybe be in abstractions
  /etc/ r,
  /etc/mime.types r,
  /etc/mailcap r,
  /etc/xdg/*buntu/applications/defaults.list    r, # for all derivatives
  /usr/share/xubuntu/applications/defaults.list r,
  owner @{HOME}/.local/share/applications/defaults.list r,
  owner @{HOME}/.local/share/applications/mimeapps.list r,
  owner @{HOME}/.local/share/applications/mimeinfo.cache r,
  owner /tmp/** m,
  owner /var/tmp/** m,
  /tmp/.X[0-9]*-lock r,
  /etc/udev/udev.conf r,
  # Doesn't seem to be required, but noisy. Maybe allow 'r' for 'b*' if needed.
  # Possibly move to an abstraction if anything else needs it.
  deny /run/udev/data/** r,

  /etc/timezone r,
  /etc/wildmidi/wildmidi.cfg r,

  # firefox specific
  /etc/firefox*/ r,
  /etc/firefox*/** r,
  /etc/xul-ext/** r,
  /etc/xulrunner-2.0*/ r,
  /etc/xulrunner-2.0*/** r,
  /etc/gre.d/ r,
  /etc/gre.d/* r,

  # noisy
  deny @{MOZ_LIBDIR}/** w,
  deny /usr/lib/firefox-addons/** w,
  deny /usr/lib/xulrunner-addons/** w,
  deny /usr/lib/xulrunner-*/components/*.tmp w,
  deny /.suspended r,
  deny /boot/initrd.img* r,
  deny /boot/vmlinuz* r,
  deny /var/cache/fontconfig/ w,
  deny @{HOME}/.local/share/recently-used.xbel r,

  # TODO: investigate
  deny /usr/bin/gconftool-2 x,

  #Ptrace seems to need something like this
  ptrace (read),

  # These are needed when a new user starts firefox and firefox.sh is used
  @{MOZ_LIBDIR}/** ixr,
  /usr/bin/basename ixr,
  /usr/bin/dirname ixr,
  /usr/bin/pwd ixr,
  /sbin/killall5 ixr,
  /bin/which ixr,
  /usr/bin/tr ixr,
  @{PROC}/ r,
  @{PROC}/[0-9]*/cmdline r,
  @{PROC}/[0-9]*/mountinfo r,
  @{PROC}/[0-9]*/stat r,
  owner @{PROC}/[0-9]*/task/[0-9]*/stat r,
  @{PROC}/[0-9]*/status r,
  @{PROC}/filesystems r,
  /sys/devices/pci[0-9]*/**/uevent r,
  owner @{HOME}/.thumbnails/*/*.png r,

  /etc/mtab r,
  /etc/fstab r,

  # Needed for the crash reporter
  owner @{PROC}/[0-9]*/environ r,
  owner @{PROC}/[0-9]*/auxv r,
  /etc/lsb-release r,
  /usr/bin/expr ix,
  /sys/devices/system/cpu/ r,
  /sys/devices/system/cpu/** r,

  # about:memory
  owner @{PROC}/[0-9]*/statm r,
  owner @{PROC}/[0-9]*/smaps r,

  # Needed for container to work in xul builds
  /usr/lib/xulrunner-*/plugin-container ixr,

  # allow access to documentation and other files the user may want to look
  # at in /usr and /opt
  /usr/ r,
  /usr/** r,
  /opt/ r,
  /opt/** r,

  # so browsing directories works
  / r,
  /**/ r,

  # Default profile allows downloads to ~/Downloads and uploads from ~/Public
  owner @{HOME}/ r,
  owner @{HOME}/Public/ r,
  owner @{HOME}/Public/* r,
  owner @{HOME}/Downloads/ r,
  owner @{HOME}/Downloads/* rw,

  # per-user firefox configuration
  owner @{HOME}/.{firefox,mozilla}/ rw,
  owner @{HOME}/.{firefox,mozilla}/** rw,
  owner @{HOME}/.{firefox,mozilla}/**/*.{db,parentlock,sqlite}* k,
  owner @{HOME}/.{firefox,mozilla}/plugins/** rm,
  owner @{HOME}/.{firefox,mozilla}/**/plugins/** rm,
  owner @{HOME}/.gnome2/firefox*-bin-* rw,
  owner @{HOME}/.cache/mozilla/{,firefox/} rw,
  owner @{HOME}/.cache/mozilla/firefox/** rw,
  owner @{HOME}/.cache/mozilla/firefox/**/*.sqlite k,

  #
  # Extensions
  # /usr/share/.../extensions/... is already covered by '/usr/** r', above.
  # Allow 'x' for downloaded extensions, but inherit policy for safety
  owner @{HOME}/.mozilla/**/extensions/** mixr,

  deny @{MOZ_LIBDIR}/update.test w,
  deny /usr/lib/mozilla/extensions/**/ w,
  deny /usr/lib/xulrunner-addons/extensions/**/ w,
  deny /usr/share/mozilla/extensions/**/ w,
  deny /usr/share/mozilla/ w,

  # Miscellaneous (to be abstracted)
  # Ideally these would use a child profile. They are all ELF executables
  # so running with 'Ux', while not ideal, is ok because we will at least
  # benefit from glibc's secure execute.
  /usr/bin/mkfifo Uxr,  # investigate
  /bin/ps Uxr,
  /bin/uname Uxr,

  # Site-specific additions and overrides. See local/README for details.
  #include <local/usr.bin.firefox>
}

Testing this out, forcing a firefox crash without the amendment to the
profile gives a warning that a crash dump couldn't be generated and a
message in /syslog, with the amendment there is a crash report generated
and no warning in /syslog.

A firefox crash can be forced by entering the following in a scratchpad
instance with the environment set to "browser"

Cu.import("resource://gre/modules/ctypes.jsm");
let zero = new ctypes.intptr_t(8);
let badptr = ctypes.cast(zero, ctypes.PointerType(ctypes.int32_t));
badptr.contents;

I'm going to mess around with this a bit further and see if there's a
better more inclusive way to go about allowing ptrace, eventually will
put a patch together.

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to firefox in Ubuntu.
https://bugs.launchpad.net/bugs/1322738

Title:
  Apparmor prevents the crash reporter from working

Status in “firefox” package in Ubuntu:
  Confirmed

Bug description:
  Recently Firefox crashed on me twice. Looking at "about:crashes" showed 
nothing but very old crash reports.
  Looking at the audit.log I found that Apparmor is not allowing the crash 
report to use ptrace:

  type=AVC msg=audit(1400782417.435:3304): apparmor="DENIED" operation="ptrace" 
profile="/usr/lib/firefox/firefox{,*[^s][^h]}" pid=20821 comm="firefox" 
requested_mask="read" denied_mask="read" 
peer="/usr/lib/firefox/firefox{,*[^s][^h]}"
  type=SYSCALL msg=audit(1400782417.435:3304): arch=c000003e syscall=0 
success=no exit=-13 a0=60 a1=7f17b2501c48 a2=10 a3=22 items=0 ppid=5690 
pid=20821 auid=4294967295 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 
egid=1000 sgid=1000 fsgid=1000 ses=4294967295 tty=(none) comm="firefox" 
exe="/usr/lib/firefox/firefox" key=(null)
  type=AVC msg=audit(1400874279.170:5966): apparmor="DENIED" operation="ptrace" 
profile="/usr/lib/firefox/firefox{,*[^s][^h]}" pid=29895 comm="firefox" 
requested_mask="read" denied_mask="read" 
peer="/usr/lib/firefox/firefox{,*[^s][^h]}"
  type=SYSCALL msg=audit(1400874279.170:5966): arch=c000003e syscall=0 
success=no exit=-13 a0=33 a1=7fdaad5b6c48 a2=10 a3=22 items=0 ppid=29515 
pid=29895 auid=4294967295 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 
egid=1000 sgid=1000 fsgid=1000 ses=4294967295 tty=(none) comm="firefox" 
exe="/usr/lib/firefox/firefox" key=(null)

  Those messages are not in the usual format as I run auditd but the
  actual content should be the same.

  More information:

  $ lsb_release -rd
  Description:  Ubuntu 14.04 LTS
  Release:      14.04

  $ apt-cache policy firefox apparmor linux-image-$(uname -r)
  firefox:
    Installed: 29.0+build1-0ubuntu0.14.04.2
    Candidate: 29.0+build1-0ubuntu0.14.04.2
    Version table:
   *** 29.0+build1-0ubuntu0.14.04.2 0
          500 http://archive.ubuntu.com/ubuntu/ trusty-updates/main amd64 
Packages
          500 http://security.ubuntu.com/ubuntu/ trusty-security/main amd64 
Packages
          100 /var/lib/dpkg/status
       28.0+build2-0ubuntu2 0
          500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
  apparmor:
    Installed: 2.8.95~2430-0ubuntu5
    Candidate: 2.8.95~2430-0ubuntu5
    Version table:
   *** 2.8.95~2430-0ubuntu5 0
          500 http://archive.ubuntu.com/ubuntu/ trusty/main amd64 Packages
          100 /var/lib/dpkg/status
  linux-image-3.13.0-27-generic:
    Installed: 3.13.0-27.50
    Candidate: 3.13.0-27.50
    Version table:
   *** 3.13.0-27.50 0
          500 http://archive.ubuntu.com/ubuntu/ trusty-proposed/main amd64 
Packages
          100 /var/lib/dpkg/status

  ProblemType: Bug
  DistroRelease: Ubuntu 14.04
  Package: firefox 29.0+build1-0ubuntu0.14.04.2
  ProcVersionSignature: Ubuntu 3.13.0-27.50-generic 3.13.11
  Uname: Linux 3.13.0-27-generic x86_64
  AddonCompatCheckDisabled: False
  ApportVersion: 2.14.1-0ubuntu3.2
  Architecture: amd64
  AudioDevicesInUse:
   USER        PID ACCESS COMMAND
   /dev/snd/controlC0:  simon      4895 F.... pulseaudio
   /dev/snd/pcmC0D0p:   simon      4895 F...m pulseaudio
  BuildID: 20140428193813
  Channel: Unavailable
  CurrentDesktop: Unity
  CurrentDmesg: dmesg: klogctl failed: Operation not permitted
  Date: Fri May 23 15:50:44 2014
  DefaultProfileIncompatibleExtensions:
   Français Language Pack - [email protected]
   Default - {972ce4c6-7e08-4474-a285-3208198ce6fd}
  DefaultProfilePlugins:
   Google Talk Plugin - /opt/google/talkplugin/libnpgoogletalk.so 
(google-talkplugin)
   Google Talk Plugin Video Renderer - /opt/google/talkplugin/libnpo1d.so 
(google-talkplugin)
   TLSAValidatorPlugin_x86_64 - 
[Profile]/extensions/[email protected]/plugins/npTLSAValidatorPlugin_x64.so
   DNSSECValidatorPlugin_x86_64 - 
[Profile]/extensions/[email protected]/plugins/npDNSSECValidatorPlugin_x64.so
   Shockwave Flash - /usr/lib/adobe-flashplugin/libflashplayer.so 
(adobe-flashplugin)
  DefaultProfilePrefSources:
   prefs.js
   
[Profile]/extensions/[email protected]/defaults/preferences/preferences.js
   [Profile]/extensions/[email protected]/defaults/preferences/dnssec.js
  ForcedLayersAccel: False
  InstallationDate: Installed on 2014-01-26 (116 days ago)
  InstallationMedia: Ubuntu 14.04 LTS "Trusty Tahr" - Alpha amd64 (20140124)
  Profile1IncompatibleExtensions: Default - 
{972ce4c6-7e08-4474-a285-3208198ce6fd}
  Profile1Plugins:
   Google Talk Plugin - /opt/google/talkplugin/libnpgoogletalk.so 
(google-talkplugin)
   Google Talk Plugin Video Renderer - /opt/google/talkplugin/libnpo1d.so 
(google-talkplugin)
   Shockwave Flash - /usr/lib/adobe-flashplugin/libflashplayer.so 
(adobe-flashplugin)
  Profile1PrefSources:
   prefs.js
   
[Profile]/extensions/[email protected]/defaults/preferences/preferences.js
  Profile2IncompatibleExtensions: Default - 
{972ce4c6-7e08-4474-a285-3208198ce6fd}
  Profile2Plugins:
   TLSAValidatorPlugin_x86_64 - 
[Profile]/extensions/[email protected]/plugins/npTLSAValidatorPlugin_x64.so
   DNSSECValidatorPlugin_x86_64 - 
[Profile]/extensions/[email protected]/plugins/npDNSSECValidatorPlugin_x64.so
   Shockwave Flash - /usr/lib/flashplugin-installer/libflashplayer.so
   Google Talk Plugin - /opt/google/talkplugin/libnpgoogletalk.so 
(google-talkplugin)
   Google Talk Plugin Video Renderer - /opt/google/talkplugin/libnpo1d.so 
(google-talkplugin)
  Profile2PrefSources:
   prefs.js
   [Profile]/extensions/[email protected]/defaults/preferences/dnssec.js
  Profiles:
   Profile0 (Default) - LastVersion=29.0/20140428193813 (In use)
   Profile1 - LastVersion=29.0/20140428193813
   Profile2 - LastVersion=28.0/20140410211200 (Out of date)
  RfKill:
   0: phy0: Wireless LAN
        Soft blocked: no
        Hard blocked: no
  RunningIncompatibleAddons: True
  SourcePackage: firefox
  UpgradeStatus: No upgrade log present (probably fresh install)
  dmi.bios.date: 02/14/2013
  dmi.bios.vendor: LENOVO
  dmi.bios.version: 6IET85WW (1.45 )
  dmi.board.name: 2516CTO
  dmi.board.vendor: LENOVO
  dmi.board.version: Not Available
  dmi.chassis.asset.tag: No Asset Information
  dmi.chassis.type: 10
  dmi.chassis.vendor: LENOVO
  dmi.chassis.version: Not Available
  dmi.modalias: 
dmi:bvnLENOVO:bvr6IET85WW(1.45):bd02/14/2013:svnLENOVO:pn2516CTO:pvrThinkPadT410:rvnLENOVO:rn2516CTO:rvrNotAvailable:cvnLENOVO:ct10:cvrNotAvailable:
  dmi.product.name: 2516CTO
  dmi.product.version: ThinkPad T410
  dmi.sys.vendor: LENOVO

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

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to