nova/nova
Matt Riedemann e0b91a5b1e Replace non-nova server fault message
The server fault "message" is always shown in the API
server response, regardless of policy or user role.

The fault "details" are only shown to users with the
admin role when the fault code is 500.

The problem with this is for non-nova exceptions, the
fault message is a string-ified version of the exception
(see nova.compute.utils.exception_to_dict) which can
contain sensitive information which the non-admin owner
of the server can see.

This change adds a functional test to recreate the issue
and a change to exception_to_dict which for the non-nova
case changes the fault message by simply storing the
exception type class name. Admins can still see the fault
traceback in the "details" key of the fault dict in the
server API response. Note that _get_fault_details is
changed so that the details also includes the exception
value which is what used to be in the fault message for
non-nova exceptions. This is necessary so admins can still
get the exception message with the traceback details.

Note that nova exceptions with a %(reason)s replacement
variable could potentially be leaking sensitive details as
well but those would need to be cleaned up on a case-by-case
basis since we don't want to change the behavior of all
fault messages otherwise users might not see information
like NoValidHost when their server goes to ERROR status
during scheduling.

SecurityImpact: This change contains a fix for CVE-2019-14433.

NOTE(mriedem): The functional test imports change here
because Idaed39629095f86d24a54334c699a26c218c6593 is not
in Rocky so the PlacementFixture comes from nova_fixtures.

Change-Id: I5e0a43ec59341c9ac62f89105ddf82c4a014df81
Closes-Bug: #1837877
(cherry picked from commit 298b337a16)
(cherry picked from commit 6765188116)
2019-08-06 11:35:58 -04:00
..
api Delete resource providers for all nodes when deleting compute service 2019-06-21 09:55:19 -04:00
cells Add instance action record for snapshot instances 2017-12-11 17:46:38 +08:00
cmd Handle templated cell mappings in nova-status 2019-03-11 21:01:08 -04:00
common
compute Replace non-nova server fault message 2019-08-06 11:35:58 -04:00
conductor Merge "Fix incomplete instance data returned after build failure" into stable/rocky 2019-04-17 20:29:39 +00:00
conf libvirt: Add workaround to cleanup instance dir when using rbd 2019-01-15 15:53:48 +00:00
console Move create of ComputeAPI object in websocketproxy 2019-04-10 15:34:17 -07:00
consoleauth Fix stacktraces with redis caching backend 2018-10-01 07:50:53 +00:00
db Fix retry of instance_update_and_get_original 2019-05-20 11:57:01 +01:00
hacking Use nova.db.api directly 2018-07-10 14:56:27 +00:00
image Share snapshot image membership with instance owner 2019-04-30 21:13:46 +09:00
ipv6
keymgr
locale Imported Translations from Zanata 2019-01-06 07:42:59 +00:00
network Revert resize: wait for events according to hybrid plug 2019-07-12 19:19:58 -04:00
notifications Remove noisy DEBUG log 2018-08-24 11:19:14 +02:00
objects Revert resize: wait for events according to hybrid plug 2019-07-12 19:19:58 -04:00
pci PCI: do not force remove allocated devices 2019-02-05 23:29:36 +00:00
policies Remove support for /os-floating-ip-dns REST API 2018-07-18 22:23:45 -04:00
privsep Make supports_direct_io work on 4096b sector size 2018-11-21 14:14:22 +00:00
scheduler Merge "Disable limit if affinity(anti)/same(different)host is requested" into stable/rocky 2019-07-04 18:03:40 +00:00
servicegroup Fix service list for disabled compute using MC driver 2018-09-14 02:25:10 +00:00
tests Replace non-nova server fault message 2019-08-06 11:35:58 -04:00
virt Merge "Fix python3 compatibility of rbd get_fsid" into stable/rocky 2019-08-02 05:34:21 +00:00
vnc
volume Use migration_status during volume migrating and retyping 2019-05-07 12:43:10 +01:00
__init__.py
availability_zones.py AZ list performance optimization: avoid double service list DB fetch 2019-04-30 13:17:04 +00:00
baserpc.py
block_device.py Add uuid column to BlockDeviceMapping 2017-12-17 14:28:35 +00:00
cache_utils.py
config.py Configure placement DB context manager for nova-manage/status 2018-09-06 10:47:55 -04:00
context.py Use nova.db.api directly 2018-07-10 14:56:27 +00:00
crypto.py Convert certificate generation to processutils. 2018-05-02 19:18:41 +10:00
debugger.py
exception.py Merge "Fixes multi-registry config in Quobyte driver" into stable/rocky 2019-06-13 19:38:25 +00:00
exception_wrapper.py Add full traceback to ExceptionPayload in versioned notifications 2018-06-19 16:46:46 +08:00
filters.py
hooks.py
i18n.py correct referenced url in comments 2018-01-18 09:16:37 +08:00
loadables.py
manager.py conf: Remove 'db_driver' config opt 2018-03-16 17:23:16 +00:00
policy.py
profiler.py
quota.py Merge "Avoid joins in _server_group_count_members_by_user" 2018-08-07 23:16:06 +00:00
rc_fields.py Nix unused raise_if_custom_resource_class_pre_v1_1 2018-06-18 19:52:45 +00:00
rpc.py Use oslo.messaging per-call monitoring 2018-06-11 14:44:10 -07:00
safe_utils.py
service.py Move conductor wait_until_ready() delay before manager init 2018-08-31 16:21:52 -04:00
service_auth.py Fix NoneType error when [service_user] is misconfigured 2017-11-28 12:22:30 -06:00
test.py Use nova.db.api directly 2018-07-10 14:56:27 +00:00
utils.py Harden placement init under wsgi 2018-11-12 11:30:32 +00:00
version.py
weights.py
wsgi.py Refactor WSGI apps and utils to limit imports 2018-03-06 22:05:12 +00:00