[Bug 1823979] [NEW] Replace use of chown in maintainer scripts

Mathieu Trudel-Lapierre mathieu.tl at gmail.com
Tue Apr 9 14:51:26 UTC 2019


Public bug reported:

>From Seth's security review:

TL;dr: please see if we could replace the use of chown -R with something
else.

"""
I reviewed heat-dashboard version 1.4.0-0ubuntu1 as checked into cosmic.
This shouldn't be considered a full audit but rather a quick gauge of
maintainability.

heat-dashboard is a web interface to the heat openstack orchestration
tool, which can help spin up repeatable instances of guests and networks.

- No CVEs in our database
- Huge list of build-depends, long enough I'll skip pasting it here
- pre/post inst/rm scripts mostly automatically added, but there is a
  section to "compress the JS and CSS"[1] that also uses a recursive
  chown. This is dangerous on many kernels.
- No init scripts
- No systemd units
- No dbus services
- No setuid
- No binaries in PATH
- No sudo fragments
- No udev rules
- There are some tests but I didn't see their results in the logs
- No cron jobs
- lintian failure in the build logs[2]

- No processes spawned
- No file IO
- Minimal logging, looked fine
- No environment use
- No privileged functions
- Random numbers are generated in Javascript for some reason; using safe
  sources before falling back to unsafe sources
- OpenStack settings OPENSTACK_SSL_NO_VERIFY and OPENSTACK_SSL_CACERT can
  configure TLS verification and trust root
- No temp files
- Extensive networking via django; a handful of inspected methods looked
  properly defensive
- No WebKit
- No PolicyKit

I also found and reported a potential problem with incorrectly escaped
URLs: https://storyboard.openstack.org/#!/story/2004454
I can't tell if this would break anything important or not.

Security team ACK for promoting heat-dashboard to main. I'd like to see
the chown -R removed but don't know what to suggest in its place.

Thanks

[1]: Note especially the 'chown -R' command; on kernels that follow
hardlinks from one uid to another, this can allow horizon to gain
ownership of any other files on the filesystem.

if [ "$1" = "configure" ] ; then
 # Compress the JS and CSS with python-compressor and python-lesscpy
 python /usr/share/openstack-dashboard/manage.py collectstatic --clear --noinput
 python /usr/share/openstack-dashboard/manage.py compress --force
 if [ -f '/var/lib/openstack-dashboard/secret-key/.secret_key_store' ]; then
  rm -f /var/lib/openstack-dashboard/secret-key/.secret_key_store
 fi
 if [ -d /var/lib/openstack-dashboard ]; then
  chown -R horizon:horizon /var/lib/openstack-dashboard
 fi
fi

[2]:
E: heat-dashboard source: source-is-missing xstatic/pkg/js_yaml/data/js-yaml.js line length is 846 characters (>512)
E: heat-dashboard source: source-is-missing heat_dashboard/static/dashboard/project/heat_dashboard/template_generator/js/libs/angular-material.js line length is 1539 characters (>512)
W: python-heat-dashboard: priority-extra-is-replaced-by-priority-optional
W: python-heat-dashboard: maintainer-script-should-not-use-recursive-chown-or-chmod postinst:13
W: python3-heat-dashboard: priority-extra-is-replaced-by-priority-optional
W: python3-heat-dashboard: maintainer-script-should-not-use-recursive-chown-or-chmod postinst:13
W: heat-dashboard-common: priority-extra-is-replaced-by-priority-optional
E: heat-dashboard-common: python-package-missing-depends-on-python
"""

** Affects: heat-dashboard (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to heat-dashboard in Ubuntu.
https://bugs.launchpad.net/bugs/1823979

Title:
  Replace use of chown in maintainer scripts

Status in heat-dashboard package in Ubuntu:
  New

Bug description:
  From Seth's security review:

  TL;dr: please see if we could replace the use of chown -R with
  something else.

  """
  I reviewed heat-dashboard version 1.4.0-0ubuntu1 as checked into cosmic.
  This shouldn't be considered a full audit but rather a quick gauge of
  maintainability.

  heat-dashboard is a web interface to the heat openstack orchestration
  tool, which can help spin up repeatable instances of guests and networks.

  - No CVEs in our database
  - Huge list of build-depends, long enough I'll skip pasting it here
  - pre/post inst/rm scripts mostly automatically added, but there is a
    section to "compress the JS and CSS"[1] that also uses a recursive
    chown. This is dangerous on many kernels.
  - No init scripts
  - No systemd units
  - No dbus services
  - No setuid
  - No binaries in PATH
  - No sudo fragments
  - No udev rules
  - There are some tests but I didn't see their results in the logs
  - No cron jobs
  - lintian failure in the build logs[2]

  - No processes spawned
  - No file IO
  - Minimal logging, looked fine
  - No environment use
  - No privileged functions
  - Random numbers are generated in Javascript for some reason; using safe
    sources before falling back to unsafe sources
  - OpenStack settings OPENSTACK_SSL_NO_VERIFY and OPENSTACK_SSL_CACERT can
    configure TLS verification and trust root
  - No temp files
  - Extensive networking via django; a handful of inspected methods looked
    properly defensive
  - No WebKit
  - No PolicyKit

  I also found and reported a potential problem with incorrectly escaped
  URLs: https://storyboard.openstack.org/#!/story/2004454
  I can't tell if this would break anything important or not.

  Security team ACK for promoting heat-dashboard to main. I'd like to see
  the chown -R removed but don't know what to suggest in its place.

  Thanks

  [1]: Note especially the 'chown -R' command; on kernels that follow
  hardlinks from one uid to another, this can allow horizon to gain
  ownership of any other files on the filesystem.

  if [ "$1" = "configure" ] ; then
   # Compress the JS and CSS with python-compressor and python-lesscpy
   python /usr/share/openstack-dashboard/manage.py collectstatic --clear --noinput
   python /usr/share/openstack-dashboard/manage.py compress --force
   if [ -f '/var/lib/openstack-dashboard/secret-key/.secret_key_store' ]; then
    rm -f /var/lib/openstack-dashboard/secret-key/.secret_key_store
   fi
   if [ -d /var/lib/openstack-dashboard ]; then
    chown -R horizon:horizon /var/lib/openstack-dashboard
   fi
  fi

  [2]:
  E: heat-dashboard source: source-is-missing xstatic/pkg/js_yaml/data/js-yaml.js line length is 846 characters (>512)
  E: heat-dashboard source: source-is-missing heat_dashboard/static/dashboard/project/heat_dashboard/template_generator/js/libs/angular-material.js line length is 1539 characters (>512)
  W: python-heat-dashboard: priority-extra-is-replaced-by-priority-optional
  W: python-heat-dashboard: maintainer-script-should-not-use-recursive-chown-or-chmod postinst:13
  W: python3-heat-dashboard: priority-extra-is-replaced-by-priority-optional
  W: python3-heat-dashboard: maintainer-script-should-not-use-recursive-chown-or-chmod postinst:13
  W: heat-dashboard-common: priority-extra-is-replaced-by-priority-optional
  E: heat-dashboard-common: python-package-missing-depends-on-python
  """

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/heat-dashboard/+bug/1823979/+subscriptions



More information about the Ubuntu-openstack-bugs mailing list