Migrate OSSNs to the security-doc repo
The OpenStack Security Notes are being migrated to the new security-doc repository that we use for the security guide. This patch migrates over the existing content of the old OSSN repository without any modification to content. Change-Id: I348d0591fc71c1174368fad7ef761e489c88ab9c
This commit is contained in:
parent
0becd2d601
commit
67b5ec2943
46
security-notes/OSSN-0001
Normal file
46
security-notes/OSSN-0001
Normal file
@ -0,0 +1,46 @@
|
||||
Selecting LXC as Nova Virtualization Driver can lead to data compromise
|
||||
---
|
||||
|
||||
### Summary###
|
||||
LXC does not provide the same level of separation as hypervisors when chosen as
|
||||
the Nova 'virtualization driver'. Attempting to use LXC as a drop in
|
||||
replacement for a hypervisor can result in data exposure between tenants.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Nova, LXC, Libvirt, 'Virtualization Driver'
|
||||
|
||||
### Discussion ###
|
||||
The Libvirt LXC functionality exposed by OpenStack is built on the kernel
|
||||
namespace & cgroup technologies. Until Linux 3.8, there has been no support for
|
||||
separate user namespaces in the kernel. As such, there has been no way to
|
||||
securely isolate containers from each other or the host environment using DAC
|
||||
(discretionary access control). For example, they can escape their resource
|
||||
constraints by modifying cgroups settings, or attack the host via various files
|
||||
in the proc and sysfs filesystems. The use of MAC (mandatory access control)
|
||||
technologies like SELinux or AppArmour can mitigate these problems, but it is
|
||||
not practical to write MAC policies that would allow running full OS installs
|
||||
in LXC under OpenStack.
|
||||
|
||||
Although initial user namespace support was merged in Linux 3.8, it is not yet
|
||||
complete, or mature enough to be considered secure. Work is ongoing to finish
|
||||
the kernel namespace support and enhance libvirt LXC to take advantage of it.
|
||||
|
||||
### Recommended Actions ###
|
||||
The OSSG advises that anyone deploying Nova in environments that require any
|
||||
level of separation use a hypervisor such as Xen, KVM, VMware or Hyper-V.
|
||||
|
||||
LXC security pivots on a system known as DAC (discretionary access control)
|
||||
which is not currently capable of providing strong isolation of guests. Work is
|
||||
underway to improve DAC but it’s not ready for production use at this time.
|
||||
|
||||
The OSSG recommends against using LXC for enforcing secure separation of guests.
|
||||
Even with appropriate AppArmour policies applied.
|
||||
|
||||
### Contacts / References ###
|
||||
Nova : http://docs.openstack.org/developer/nova/
|
||||
LXC : http://lxc.sourceforge.net/
|
||||
Libvirt : http://libvirt.org/
|
||||
KVM : http://www.linux-kvm.org/page/Main_Page
|
||||
Xen: http://xen.org/products/xenhyp.html
|
||||
LXC DAC : https://wiki.ubuntu.com/UserNamespace
|
||||
LXC LibVirt Discussion : https://www.berrange.com/posts/2011/09/27/getting-started-with-lxc-using-libvirt/
|
36
security-notes/OSSN-0002
Normal file
36
security-notes/OSSN-0002
Normal file
@ -0,0 +1,36 @@
|
||||
HTTP POST limiting advised to avoid Essex/Folsom Keystone DoS
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
Concurrent Keystone POST requests with large body messages are held in memory
|
||||
without filtering or rate limiting, this can lead to resource exhaustion on the
|
||||
Keystone server.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Keystone, Databases
|
||||
|
||||
### Discussion ###
|
||||
Keystone stores POST messages in memory before validation, concurrent
|
||||
submission of multiple large POST messages can cause the Keystone process to be
|
||||
killed due to memory exhaustion, resulting in a remote Denial of Service.
|
||||
|
||||
In many cases Keystone will be deployed behind a load-balancer or proxy that
|
||||
can rate limit POST messages inbound to Keystone. Grizzly is protected
|
||||
against that through the sizelimit middleware.
|
||||
|
||||
### Recommended Actions ###
|
||||
If you are in a situation where Keystone is directly exposed to incoming POST
|
||||
messages and not protected by the sizelimit middleware there are a number of
|
||||
load-balancing/proxy options, we suggest you consider one of the following:
|
||||
|
||||
Nginx: Open-source, high-performance HTTP server and reverse proxy.
|
||||
Nginx Config: http://wiki.nginx.org/HttpCoreModule#client_max_body_size
|
||||
|
||||
Apache: HTTP Server Project
|
||||
Apache Config: http://httpd.apache.org/docs/2.4/mod/core.html#limitrequestbody
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN Bug: https://bugs.launchpad.net/ossn/+bug/1155566
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/keystone/+bug/1098177
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
44
security-notes/OSSN-0003
Normal file
44
security-notes/OSSN-0003
Normal file
@ -0,0 +1,44 @@
|
||||
Keystone configuration should not be world readable
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
In some deployments keystone.conf which contains confidential information, is
|
||||
set to world readable.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Keystone, DevStack, Deployment
|
||||
|
||||
### Discussion ###
|
||||
It is important that deployers of OpenStack ensure that keystone.conf is not
|
||||
world readable. In some deployments the keystone configuration file is readable
|
||||
by all users (and processes) on the installation system. This file should be
|
||||
set with the most restrictive permissions that allow the system to continue
|
||||
proper operations.
|
||||
|
||||
In particular, the password configuration of the LDAP section and the
|
||||
admin_token contain secret information:
|
||||
|
||||
---- being example config snippet ----
|
||||
[ldap]
|
||||
url = ldap://localhost
|
||||
user = dc=Manager,dc=example,dc=com
|
||||
password = None <- should be secret
|
||||
suffix = cn=example,cn=com
|
||||
use_dumb_member = False
|
||||
allow_subtree_delete = False
|
||||
dumb_member = cn=dumb,dc=example,dc=com
|
||||
|
||||
[DEFAULT]
|
||||
admin_token = passw0rd <- should be secret
|
||||
---- end example config snippet ----
|
||||
|
||||
### Recommended Actions ###
|
||||
Ensure that in your deployment keystone.conf uses the most restrictive
|
||||
permissions that allow the system to continue proper operations.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://bugs.launchpad.net/ossn/+bug/1168252
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/devstack/+bug/1168252
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
||||
CVE: CVE-2013-1977
|
60
security-notes/OSSN-0004
Normal file
60
security-notes/OSSN-0004
Normal file
@ -0,0 +1,60 @@
|
||||
Authenticated users are able to update passwords without providing their
|
||||
current password
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
An authenticated user is able to change their password without providing their
|
||||
current password. This allows compromised authentication tokens to be used to
|
||||
permanently compromise a user account.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Horizon, Keystone, Identity, Grizzly
|
||||
|
||||
### Discussion ###
|
||||
Horizon allows a user to change their own password, which uses the Identity API
|
||||
to perform the password change. A user is required to supply their current
|
||||
password to successfully perform a password change. This requirement prevents a
|
||||
malicious user from stealing a user's authentication token and changing that
|
||||
user's password to permanently compromise their account. With this additional
|
||||
password check, a compromised authentication token only compromises the user
|
||||
account until the token is no longer valid due to expiration or revocation.
|
||||
|
||||
When using the Identity v3 API, a user is able to successfully change their
|
||||
password without supplying the correct current password. This leaves users
|
||||
vulnerable to permanently compromised accounts if their authentication token is
|
||||
compromised. The Identity v2 API is not vulnerable to this issue, as it has a
|
||||
separate API call for updating user passwords that properly validates the
|
||||
current password.
|
||||
|
||||
### Recommended Actions ###
|
||||
In the OpenStack Grizzly release, a user is allowed to update the attributes in
|
||||
their own entry by default. It is recommended that you restrict user updates to
|
||||
only be allowed by admin users. This is done by setting the "update_user"
|
||||
policy to "admin_required" in Keystone's policy.json file. Here is an example
|
||||
snippet of a properly configured policy.json file:
|
||||
|
||||
---- begin example policy.json snippet ----
|
||||
"identity:get_user": [["rule:admin_required"]],
|
||||
"identity:list_users": [["rule:admin_required"]],
|
||||
"identity:create_user": [["rule:admin_required"]],
|
||||
"identity:update_user": [["rule:admin_required"]],
|
||||
"identity:delete_user": [["rule:admin_required"]],
|
||||
---- end example policy.json snippet ----
|
||||
|
||||
This change has the side-effect of restricting a user from updating any of
|
||||
their own attributes, not just their password.
|
||||
|
||||
In the OpenStack Havana release, the default policy is to only allow admin
|
||||
users to update attributes in user entries. In addition, Horizon will not
|
||||
allow a user to change their own password if it is using the Identity v3 API,
|
||||
even if Keystone is configured to allow users to update their own entries.
|
||||
Despite this restriction in Horizon, it is recommended to leave the default
|
||||
"update_user" policy setting as is, as an attacker could target Keystone
|
||||
directly without using Horizon to initiate a password change.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://bugs.launchpad.net/ossn/+bug/1237989
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/keystone/+bug/1237989
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
||||
CVE: CVE-2013-4471
|
54
security-notes/OSSN-0005
Normal file
54
security-notes/OSSN-0005
Normal file
@ -0,0 +1,54 @@
|
||||
Glance allows sharing of images between projects without consumer project
|
||||
approval
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
Glance allows images to be shared between projects. In certain API versions,
|
||||
images can be shared without the consumer project's approval. This allows
|
||||
potentially malicious images to show up in a project's image list.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Glance, Image Service, Diablo, Essex, Folsom, Grizzly, Havana
|
||||
|
||||
### Discussion ###
|
||||
Since the OpenStack Diablo release, Glance allows images to be shared between
|
||||
projects. To share an image, the producer of the image adds the consumer
|
||||
project as a member of the image. When using the Image Service API v1, the
|
||||
image producer is able to share an image with a consumer project without their
|
||||
approval. This results in the shared image showing up in the image list for the
|
||||
consumer project. This can mislead users with roles in the consumer project
|
||||
into running a potentially malicious image.
|
||||
|
||||
The Image Service API v2.0 does not allow image sharing between projects, so a
|
||||
project is not susceptible to running unauthorized images shared by other
|
||||
projects. The Image Service API v2.1 allows image sharing using a two-step
|
||||
process. An image producer must add a consumer as a member of the image, and
|
||||
the consumer must accept the shared image before it shows up in their image
|
||||
list. This additional approval process allows a consumer to control what images
|
||||
show up in their image list, thus preventing potentially malicious images being
|
||||
used without the consumers knowledge.
|
||||
|
||||
### Recommended Actions ###
|
||||
In the OpenStack Diablo, Essex, and Folsom releases, Glance supports image
|
||||
sharing using the Image Service API v1. There is no way to require approval of
|
||||
a shared image by consumer projects. Users should be cautioned to be careful
|
||||
when using images from their image list, as they may be using an image that was
|
||||
shared with them without their knowledge.
|
||||
|
||||
In the OpenStack Grizzly and Havana releases, Glance supports the Image Service
|
||||
API v2.1 or later. Support is still provided for Image Service API v1, which
|
||||
allows image sharing between projects without consumer project approval. It is
|
||||
recommended to disable v1 of the Image Service API if possible. This can be
|
||||
done by setting the following directive in the glance-api.conf configuration
|
||||
file:
|
||||
|
||||
---- begin example glance-api.conf snippet ----
|
||||
enable_v1_api = False
|
||||
---- end example glance-api.conf snippet ----
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://bugs.launchpad.net/ossn/+bug/1226078
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/glance/+bug/1226078
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
||||
CVE: CVE-2013-4354
|
63
security-notes/OSSN-0006
Normal file
63
security-notes/OSSN-0006
Normal file
@ -0,0 +1,63 @@
|
||||
Keystone can allow user impersonation when using REMOTE_USER for external
|
||||
authentication
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
When external authentication is used with Keystone using the "ExternalDefault"
|
||||
plug-in, external usernames containing "@" characters are truncated at the "@"
|
||||
character before being mapped to a local Keystone user. This can result in
|
||||
separate external users mapping to the same local Keystone user, which could
|
||||
lead to user impersonation.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Keystone, Havana
|
||||
|
||||
### Discussion ###
|
||||
When Keystone is run in the Apache HTTP Server, the webserver can handle
|
||||
authentication and pass the authenticated username to Keystone using the
|
||||
REMOTE_USER environment variable. External authentication behavior is handled
|
||||
by authentication plugins in Keystone. In the Havana release of OpenStack, if
|
||||
the external username provided in the REMOTE_USER environment variable
|
||||
contains an "@" character Keystone will only use the portion preceding the "@"
|
||||
character as the username when using the "ExternalDefault" authentication
|
||||
plugin. This results in the ability for multiple unique external usernames to
|
||||
map to the same single username in Keystone. For example, the external
|
||||
usernames "jdoe@example1.com" and "jdoe@example2.com" would both map to the
|
||||
Keystone user "jdoe". This behavior could potentially be abused to allow one to
|
||||
impersonate another similarly named external user.
|
||||
|
||||
Keystone in OpenStack releases prior to Havana uses the entire value contained
|
||||
in the REMOTE_USER environment variable, so those versions are not vulnerable
|
||||
to this impersonation issue.
|
||||
|
||||
### Recommended Actions ###
|
||||
If the "ExternalDefault" plugin is being used for external authentication in
|
||||
the Havana release, you should ensure that external usernames do not contain
|
||||
"@" characters unless you want to collapse similarly named external users into
|
||||
a single user on the Keystone side.
|
||||
|
||||
If your external usernames do contain "@" characters and you do not want to
|
||||
collapse similarly named external users into a single user on the Keystone
|
||||
side, you might be able to use the "ExternalDomain" plug-in. This plugin
|
||||
considers the portion of the external username that follows an "@" character to
|
||||
be the domain that the user belongs to in Keystone. This allows similarly named
|
||||
external users to map to separate Keystone users if the portion of the external
|
||||
username that follows an "@" character maps to a Keystone domain name. To
|
||||
configure the "ExternalDomain" authentication plugin, set the "external"
|
||||
parameter in the "[auth]" section of Keystone's keystone.conf as follows:
|
||||
|
||||
---- begin example keystone.conf snippet ----
|
||||
[auth]
|
||||
methods = external,password,token
|
||||
external = keystone.auth.plugins.external.ExternalDomain
|
||||
---- end example keystone.conf snippet ----
|
||||
|
||||
If neither of the above recommendations work for your deployment, a custom
|
||||
authentication plugin can be created that uses the external username that
|
||||
contains an "@" character as-is.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://bugs.launchpad.net/ossn/+bug/1254619
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/keystone/+bug/1254619
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
214
security-notes/OSSN-0007
Normal file
214
security-notes/OSSN-0007
Normal file
@ -0,0 +1,214 @@
|
||||
Live migration instructions recommend unsecured libvirt remote access
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
When using the KVM hypervisor with libvirt on OpenStack Compute nodes,
|
||||
live migration of instances from one Compute server to another requires
|
||||
that the libvirt daemon is configured for remote network connectivity.
|
||||
The libvirt daemon configuration recommended in the OpenStack
|
||||
Configuration Reference manual configures libvirtd to listen for
|
||||
incoming TCP connections on all network interfaces without requiring any
|
||||
authentication or using any encryption. This insecure configuration
|
||||
allows for anyone with network access to the libvirt daemon TCP port on
|
||||
OpenStack Compute nodes to control the hypervisor through the libvirt
|
||||
API.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Nova, Compute, KVM, libvirt, Grizzly, Havana, Icehouse
|
||||
|
||||
### Discussion ###
|
||||
The default configuration of the libvirt daemon is to not allow remote
|
||||
access. Live migration of running instances between OpenStack Compute
|
||||
nodes requires libvirt daemon remote access between OpenStack Compute
|
||||
nodes.
|
||||
|
||||
The libvirt daemon should not be configured to allow unauthenticated
|
||||
remote access. The libvirt daemon has a choice of 4 secure options for
|
||||
remote access over TCP. These options are:
|
||||
|
||||
- SSH tunnel to libvirtd's UNIX socket
|
||||
- libvirtd TCP socket, with GSSAPI/Kerberos for auth+data encryption
|
||||
- libvirtd TCP socket, with TLS for encryption and x.509 client
|
||||
certificates for authentication
|
||||
- libvirtd TCP socket, with TLS for encryption and Kerberos for
|
||||
authentication
|
||||
|
||||
It is not necessary for the libvirt daemon to listen for remote TCP
|
||||
connections on all interfaces. Remote network connectivity to the
|
||||
libvirt daemon should be restricted as much as possible. Remote
|
||||
access is only needed between the OpenStack Compute nodes, so the
|
||||
libvirt daemon only needs to listen for remote TCP connections on the
|
||||
interface that is used for this communication. A firewall can be
|
||||
configured to lock down access to the TCP port that the libvirt daemon
|
||||
listens on, but this does not sufficiently protect access to the libvirt
|
||||
API. Other processes on a remote OpenStack Compute node might have
|
||||
network access, but should not be authorized to remotely control the
|
||||
hypervisor on another OpenStack Compute node.
|
||||
|
||||
### Recommended Actions ###
|
||||
If you are using the KVM hypervisor with libvirt on OpenStack Compute
|
||||
nodes, you should review your libvirt daemon configuration to ensure
|
||||
that it is not allowing unauthenticated remote access.
|
||||
|
||||
Remote access to the libvirt daemon via TCP is configured by the
|
||||
"listen_tls", "listen_tcp", and "auth_tcp" configuration directives. By
|
||||
default, these directives are all commented out. This results in remote
|
||||
access via TCP being disabled.
|
||||
|
||||
If you do not need remote libvirt daemon access, you should ensure that
|
||||
the following configuration directives are set as follows in the
|
||||
/etc/libvirt/libvirtd.conf configuration file. Commenting out these
|
||||
directives will have the same effect, as these values match the internal
|
||||
defaults:
|
||||
|
||||
---- begin example libvirtd.conf snippet ----
|
||||
listen_tls = 1
|
||||
listen_tcp = 0
|
||||
auth_tcp = "sasl"
|
||||
---- end example libvirtd.conf snippet ----
|
||||
|
||||
If you need to allow remote access to the libvirt daemon between
|
||||
OpenStack Compute nodes for live migration, you should ensure that
|
||||
authentication is required. Additionally, you should consider enabling
|
||||
TLS to allow remote connections to be encrypted.
|
||||
|
||||
The following libvirt daemon configuration directives will allow for
|
||||
unencrypted remote connections that use SASL for authentication:
|
||||
|
||||
---- begin example libvirtd.conf snippet ----
|
||||
listen_tls = 0
|
||||
listen_tcp = 1
|
||||
auth_tcp = "sasl"
|
||||
---- end example libvirtd.conf snippet ----
|
||||
|
||||
If you want to require TLS encrypted remote connections, you will have
|
||||
to obtain X.509 certificates and configure the libvirt daemon to use
|
||||
them to use TLS. Details on this configuration are in the libvirt
|
||||
daemon documentation. Once the certificates are configured, you should
|
||||
set the following libvirt daemon configuration directives:
|
||||
|
||||
---- begin example libvirtd.conf snippet ----
|
||||
listen_tls = 1
|
||||
listen_tcp = 0
|
||||
auth_tls = "none"
|
||||
---- end example libvirtd.conf snippet ----
|
||||
|
||||
When using TLS, setting the "auth_tls" configuration directive to "none"
|
||||
uses X.509 client certificates for authentication. You can additionally
|
||||
require SASL authentication by setting the following libvirt daemon
|
||||
configuration directives:
|
||||
|
||||
---- begin example libvirtd.conf snippet ----
|
||||
listen_tls = 1
|
||||
listen_tcp = 0
|
||||
auth_tls = "sasl"
|
||||
---- end example libvirtd.conf snippet ----
|
||||
|
||||
When using TLS, it is also necessary to configure the OpenStack Compute
|
||||
nodes to use a non-default URI for live migration. This is done by
|
||||
setting the following configuration directive in /etc/nova/nova.conf:
|
||||
|
||||
---- begin example nova.conf snippet ----
|
||||
live_migration_uri=qemu+tls://%s/system
|
||||
---- end example nova.conf snippet ----
|
||||
|
||||
For more details on libvirt daemon remote URI formats, please see the
|
||||
following libvirt daemon documentation:
|
||||
|
||||
http://libvirt.org/remote.html#Remote_URI_reference
|
||||
|
||||
For details on configuring SASL authentication and X.509 certificates
|
||||
for the libvirt daemon, please consult the libvirt daemon documentation
|
||||
at the following locations:
|
||||
|
||||
http://libvirt.org/remote.html
|
||||
http://libvirt.org/auth.html
|
||||
|
||||
When configuring the libvirt daemon for authentication, it is also
|
||||
important to configure authorization to restrict remote access to your
|
||||
OpenStack Compute nodes. For example, if you don't configure
|
||||
authorization, any X.509 client certificate that is signed by your
|
||||
issuing CA will be allowed access. When using SASL/GSSAPI for Kerberos
|
||||
authentication, any client with a valid TGT will be granted access.
|
||||
Lack of authorization can allow unintended remote access. The libvirt
|
||||
daemon documentation should be consulted for details on configuring
|
||||
authorization.
|
||||
|
||||
In addition to requiring authentication for remote access to the libvirt
|
||||
daemon on your OpenStack Compute nodes, it is also recommended to
|
||||
restrict network access such that connectivity is only allowed between
|
||||
the Compute nodes.
|
||||
|
||||
The first thing that should be done is to restrict the network
|
||||
interfaces that the libvirt daemon listens on for remote connections.
|
||||
By default, the libvirt daemon listens on all interfaces when remote
|
||||
access is enabled. This can be restricted by setting the following
|
||||
configuration directive in /etc/libvirt/libvirtd.conf:
|
||||
|
||||
---- begin example libvirtd.conf snippet ----
|
||||
listen_addr = <IP address or hostname>
|
||||
---- end example libvirtd.conf snippet ----
|
||||
|
||||
Migration in the libvirt daemon also uses a range of ephemeral ports by
|
||||
default. The connections to these ephemeral ports are not authenticated
|
||||
or encrypted. It is possible to tunnel the migration traffic over the
|
||||
regular libvirt daemon remote access port, which will use the
|
||||
authentication and encryption settings that you have defined for that
|
||||
port. It is recommended that you do this for the additional security
|
||||
that it provides. To enable tunnelling of the migration traffic, you
|
||||
must tell your OpenStack Compute nodes to set the VIR_MIGRATE_TUNNELLED
|
||||
flag for live migration. This is done by setting the following
|
||||
directive in /etc/nova/nova.conf:
|
||||
|
||||
---- begin example nova.conf snippet ----
|
||||
live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE, VIR_MIGRATE_PEER2PEER, VIR_MIGRATE_TUNNELLED
|
||||
---- end example nova.conf snippet ----
|
||||
|
||||
The tunnelling of migration traffic described above does not apply to
|
||||
live block migration. Live block migration is currently only possible
|
||||
over ephemeral ports.
|
||||
|
||||
If you choose to use the ephemeral migration ports, there are a few
|
||||
things that you should be aware of. Unfortunately, there is no way to
|
||||
restrict the network interfaces that these ephemeral ports will listen
|
||||
on in libvirt versions prior to 1.1.4. If you are running version 1.1.4
|
||||
or later of the libvirt daemon, you can set the following directive in
|
||||
/etc/libvirt/qemu.conf to specify what interfaces are used for the
|
||||
ephemeral migration ports:
|
||||
|
||||
---- begin example qemu.conf snippet ----
|
||||
migration_address = <IP address>
|
||||
---- end example qemu.conf snippet ----
|
||||
|
||||
It is also recommended to configure the firewall on each OpenStack
|
||||
Compute node to only allow other Compute nodes to access the ports that
|
||||
are used for remote access to the libvirt daemon. By default, this is
|
||||
port 16514 for TLS and 16509 for unencrypted TCP.
|
||||
|
||||
Additionally, migration over ephemeral ports uses a port range of
|
||||
49152-49215. You will need to allow your OpenStack Compute nodes to
|
||||
communicate with each other over these ports if you choose not to tunnel
|
||||
the migration traffic over the libvirt daemon remote access port.
|
||||
|
||||
You can check what ports you have configured for the libvirt daemon by
|
||||
looking at the following configuration directives:
|
||||
|
||||
tls_port (libvirtd.conf)
|
||||
tcp_port (libvirtd.conf)
|
||||
migration_port_min (qemu.conf)
|
||||
migration_port_max (qemu.conf)
|
||||
|
||||
If you are running a version of the libvirt daemon older than 1.1.4 and
|
||||
you want to perform live block migration, you will need to allow your
|
||||
OpenStack Compute nodes to communicate over port range 5900-49151. If
|
||||
you are running version 1.1.4 or later of the libvirt daemon, the
|
||||
regular ephemeral migration port range is used for live block migration.
|
||||
|
||||
Please consult the documentation for your firewall software for
|
||||
instructions on configuring the appropriate firewall rules.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN: https://wiki.openstack.org/wiki/OSSN/OSSN-0007
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/openstack-manuals/+bug/1287194
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
49
security-notes/OSSN-0008
Normal file
49
security-notes/OSSN-0008
Normal file
@ -0,0 +1,49 @@
|
||||
DoS style attack on noVNC server can lead to service interruption or disruption
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
There is currently no limit to the number of noVNC or SPICE console
|
||||
sessions that can be established by a single user. The console host has
|
||||
limited resources and an attacker launching many sessions may be able to
|
||||
exhaust the available resources, resulting in a Denial of Service (DoS)
|
||||
condition.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Horizon, Nova, noVNC proxy, SPICE console, Grizzly, Havana
|
||||
|
||||
### Discussion ###
|
||||
Currently with a single user token, no restrictions are enforced on the
|
||||
number or frequency of noVNC or SPICE console sessions that may be
|
||||
established. While a user can only access their own virtual machine
|
||||
instances, resources can be exhausted on the console proxy host by
|
||||
creating an excessive number of simultaneous console sessions. This can
|
||||
result in timeouts for subsequent connection requests to instances using
|
||||
the same console proxy. Not only would this prevent the user from
|
||||
accessing their own instances, but other legitimate users would also be
|
||||
deprived of console access. Further, other services running on the
|
||||
noVNC proxy and Compute hosts may degrade in responsiveness.
|
||||
|
||||
By taking advantage of this lack of restrictions around noVNC or SPICE
|
||||
console connections, a single user could cause the console proxy
|
||||
endpoint to become unresponsive, resulting in a Denial Of Service (DoS)
|
||||
style attack. It should be noted that there is no amplification effect.
|
||||
|
||||
### Recommended Actions ###
|
||||
For current stable OpenStack releases (Grizzly, Havana), users need to
|
||||
workaround this vulnerability by using rate-limiting proxies to cover
|
||||
access to the noVNC proxy service. Rate-limiting is a common mechanism
|
||||
to prevent DoS and Brute-Force attacks.
|
||||
|
||||
For example, if you are using a proxy such as Repose, enable the rate
|
||||
limiting feature by following these steps:
|
||||
|
||||
https://repose.atlassian.net/wiki/display/REPOSE/Rate+Limiting+Filter
|
||||
|
||||
Future OpenStack releases are looking to add the ability to restrict
|
||||
noVNC and SPICE console connections.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0008
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/nova/+bug/1227575
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
45
security-notes/OSSN-0009
Normal file
45
security-notes/OSSN-0009
Normal file
@ -0,0 +1,45 @@
|
||||
Potential token revocation abuse via group membership
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
Deletion of groups in Keystone causes token revocation for group
|
||||
members. If group capabilities are delegated to users, they can abuse
|
||||
those capabilities to maliciously revoke tokens for other users.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Keystone, Grizzly, Havana, Icehouse
|
||||
|
||||
### Discussion ###
|
||||
If a group is deleted from Keystone, all tokens for all users that are
|
||||
members of that group are revoked. By adding users to a group without
|
||||
those users' knowledge and then deleting that group, a group admin can
|
||||
revoke all of the users' tokens. While the default policy file gives
|
||||
the group admin role to global admin, an alternative policy could
|
||||
delegate the "create_group", "add_user_to_group", and "delete_group"
|
||||
capabilities to a set of users. In such a system, those users will also
|
||||
get a token revocation capability. Only setups using a custom policy
|
||||
file in Keystone are affected.
|
||||
|
||||
### Recommended Actions ###
|
||||
Keystone's default policy.json file uses the "admin_required" rule for
|
||||
the "create_group", "delete_group", and "add_user_to_group"
|
||||
capabilities. It is recommended that you use this default configuration
|
||||
if possible. Here is an example snippet of a properly configured
|
||||
policy.json file:
|
||||
|
||||
---- begin example policy.json snippet ----
|
||||
"identity:create_group": "rule:admin_required",
|
||||
"identity:delete_group": "rule:admin_required",
|
||||
"identity:add_user_to_group": "rule:admin_required",
|
||||
---- end example policy.json snippet ----
|
||||
|
||||
If you need to delegate the above capabilities to non-admin users, you
|
||||
need to take into account that those users will be able to revoke
|
||||
tokens for other users by performing group deletion operations. You
|
||||
should take caution with who you delegate these capabilities to.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0009
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/keystone/+bug/1268751
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
47
security-notes/OSSN-0010
Normal file
47
security-notes/OSSN-0010
Normal file
@ -0,0 +1,47 @@
|
||||
Sample Keystone v3 policy exposes privilege escalation vulnerability
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
The policy.v3cloudsample.json sample Keystone policy file combined with
|
||||
the underlying mutability of the domain ID for user, group, and project
|
||||
entities exposed a privilege escalation vulnerability. When this
|
||||
sample policy is applied a domain administrator can elevate their
|
||||
privileges to become a cloud administrator.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Keystone, Havana
|
||||
|
||||
### Discussion ###
|
||||
Changes to the Keystone v3 sample policy during the Havana release cycle
|
||||
set an excessively broad domain administrator scope that allowed
|
||||
creation of roles ("create_grant") on other domains (among other
|
||||
actions). There was no check that the domain administrator had
|
||||
authority to the domain they were attempting to grant a role on.
|
||||
|
||||
Combining the mutable state of the domain ID for user, group, and
|
||||
project entities with the sample v3 policy resulted in a privilege
|
||||
escalation vulnerability. A domain administrator could execute a series
|
||||
of steps to escalate their access to that of a cloud administrator.
|
||||
|
||||
### Recommended Actions ###
|
||||
Review the following updated sample v3 policy file from the OpenStack
|
||||
Icehouse release:
|
||||
|
||||
https://git.openstack.org/cgit/openstack/keystone/commit/?id=0496466821c1ff6e7d4209233b6c671f88aadc50
|
||||
|
||||
You should ensure that your Keystone deployment appropriately reflects
|
||||
that update. Domain administrators should generally only be permitted
|
||||
to perform actions against the domain for which they are an
|
||||
administrator.
|
||||
|
||||
Optionally, review the recent addition of support for immutable domain
|
||||
IDs and consider it for applicability to your Keystone deployment:
|
||||
|
||||
https://git.openstack.org/cgit/openstack/keystone/commit/?id=a2fa6a6f01a4884edf369cafa39946636af5cf1a
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0010
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/keystone/+bug/1287219
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
||||
|
144
security-notes/OSSN-0011
Normal file
144
security-notes/OSSN-0011
Normal file
@ -0,0 +1,144 @@
|
||||
Heat templates with invalid references allows unintended network access
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
Orchestration templates can create security groups to define network
|
||||
access rules. When creating these rules, it is possible to have a rule
|
||||
grant incoming network access to instances belonging to another security
|
||||
group. If a rule references a non-existent security group, it can
|
||||
result in allowing incoming access to all hosts for that rule.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Heat, nova-network, Havana
|
||||
|
||||
### Discussion ###
|
||||
When defining security groups of the "AWS::EC2::SecurityGroup" type in a
|
||||
CloudFormation-compatible format (CFN) orchestration template, it is
|
||||
possible to use references to other security groups as the source for
|
||||
ingress rules. When these rules are evaluated by Heat in the OpenStack
|
||||
Havana release, a reference to a non-existent security group will be
|
||||
silently ignored. This results in the rule using a "CidrIp" property of
|
||||
"0.0.0.0/0". This will allow incoming access to any host for the
|
||||
affected rule. This has the effect of allowing unintended network
|
||||
access to instances.
|
||||
|
||||
This issue only occurs when Nova is used for networking (nova-network).
|
||||
The Neutron networking service is not affected by this issue.
|
||||
|
||||
The OpenStack Icehouse release is not affected by this issue. In the
|
||||
Icehouse release, Heat will check if a non-existent security group is
|
||||
referenced in a template and return an error, causing the creation of
|
||||
the security group to fail.
|
||||
|
||||
### Recommended Actions ###
|
||||
If you are using Heat in the OpenStack Havana release with Nova for
|
||||
networking (nova-network), you should review your orchestration
|
||||
templates to ensure that all references to security groups in ingress
|
||||
rules are valid. Specifically, you should look at the use of the
|
||||
"SourceSecurityGroupName" property in your templates to ensure that
|
||||
all referenced security groups exist.
|
||||
|
||||
One particular improper usage of security group references that you
|
||||
should look for is the case where you define multiple security groups
|
||||
in one template and use references between them. In this case, you
|
||||
need to make sure that you are using the "Ref" intrinsic function to
|
||||
indicate that you are referencing a security group that is defined in
|
||||
the same template. Here is an example of a template with a valid
|
||||
security group reference:
|
||||
|
||||
---- begin example correct template snippet ----
|
||||
"WikiDatabaseSecurityGroup" : {
|
||||
"Type" : "AWS::EC2::SecurityGroup",
|
||||
"Properties" : {
|
||||
"GroupDescription" : "Enable HTTP access plus SSH access",
|
||||
"SecurityGroupIngress" : [
|
||||
{
|
||||
"IpProtocol" : "icmp",
|
||||
"FromPort" : "-1",
|
||||
"ToPort" : "-1",
|
||||
"CidrIp" : "10.1.1.0/24"
|
||||
},
|
||||
{
|
||||
"IpProtocol" : "tcp",
|
||||
"FromPort" : "80",
|
||||
"ToPort" : "80",
|
||||
"CidrIp" : "10.1.1.0/24"
|
||||
},
|
||||
{
|
||||
"IpProtocol" : "tcp",
|
||||
"FromPort" : "22",
|
||||
"ToPort" : "22",
|
||||
"CidrIp" : "10.1.1.0/24"
|
||||
},
|
||||
{
|
||||
"IpProtocol" : "tcp",
|
||||
"FromPort" : "3306",
|
||||
"ToPort" : "3306",
|
||||
"SourceSecurityGroupName" : {
|
||||
"Ref": "WebServerSecurityGroup"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"WebServerSecurityGroup" : {
|
||||
"Type" : "AWS::EC2::SecurityGroup",
|
||||
"Properties" : {
|
||||
"GroupDescription" : "Enable HTTP access plus SSH access",
|
||||
"SecurityGroupIngress" : [
|
||||
{
|
||||
"IpProtocol" : "icmp",
|
||||
"FromPort" : "-1",
|
||||
"ToPort" : "-1",
|
||||
"CidrIp" : "10.1.1.0/24"
|
||||
},
|
||||
{
|
||||
"IpProtocol" : "tcp",
|
||||
"FromPort" : "80",
|
||||
"ToPort" : "80",
|
||||
"CidrIp" : "10.1.1.0/24"
|
||||
},
|
||||
{
|
||||
"IpProtocol" : "tcp",
|
||||
"FromPort" : "22",
|
||||
"ToPort" : "22",
|
||||
"CidrIp" : "10.1.1.0/24"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
---- end example correct template snippet ----
|
||||
|
||||
Here is an example of an incorrect reference to a security group defined
|
||||
in the same template:
|
||||
|
||||
---- begin example INVALID template snippet ----
|
||||
{
|
||||
"IpProtocol" : "tcp",
|
||||
"FromPort" : "3306",
|
||||
"ToPort" : "3306",
|
||||
"SourceSecurityGroupName" : "WebServerSecurityGroup" #INCORRECT!
|
||||
}
|
||||
---- end example INVALID template snippet ----
|
||||
|
||||
The above invalid reference will result in allowing incoming networking
|
||||
on port 3306 from all hosts:
|
||||
|
||||
IP Protocol | From Port | To Port | IP Range | Source Group |
|
||||
+-------------+-----------+---------+-------------+--------------+
|
||||
| icmp | -1 | -1 | 10.1.1.0/24 | |
|
||||
| tcp | 80 | 80 | 10.1.1.0/24 | |
|
||||
| tcp | 22 | 22 | 10.1.1.0/24 | |
|
||||
| tcp | 3306 | 3306 | 0.0.0.0/0 | |
|
||||
+-------------+-----------+---------+-------------+--------------+
|
||||
|
||||
It is also recommended that you test your templates if you are using
|
||||
security group references to ensure that the resulting network rules
|
||||
are as intended.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0011
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/heat/+bug/1291091
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
73
security-notes/OSSN-0012
Normal file
73
security-notes/OSSN-0012
Normal file
@ -0,0 +1,73 @@
|
||||
OpenSSL Heartbleed vulnerability can lead to OpenStack compromise
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
A vulnerability in OpenSSL can lead to leaking of confidential data
|
||||
protected by SSL/TLS in an OpenStack deployment.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Grizzly, Havana, OpenSSL
|
||||
|
||||
### Discussion ###
|
||||
A vulnerability in OpenSSL code-named Heartbleed was recently discovered
|
||||
that allows remote attackers limited access to data in the memory of any
|
||||
service using OpenSSL to provide encryption for network communications.
|
||||
This can include key material used for SSL/TLS, which means that any
|
||||
confidential data that has been sent over SSL/TLS may be compromised.
|
||||
For full details, see the following website that describes this
|
||||
vulnerability in detail:
|
||||
|
||||
http://heartbleed.com/
|
||||
|
||||
While OpenStack software itself is not directly affected, any deployment
|
||||
of OpenStack is very likely using OpenSSL to provide SSL/TLS
|
||||
functionality.
|
||||
|
||||
### Recommended Actions ###
|
||||
It is recommended that you immediately update OpenSSL software on the
|
||||
systems you use to run OpenStack services. In most cases, you will want
|
||||
to upgrade to OpenSSL version 1.0.1g, though it is recommended that you
|
||||
review the exact affected version details on the Heartbleed website
|
||||
referenced above.
|
||||
|
||||
After upgrading your OpenSSL software, you will need to restart any
|
||||
services that use the OpenSSL libraries. You can get a list of all
|
||||
processes that have the old version of OpenSSL loaded by running the
|
||||
following command:
|
||||
|
||||
lsof | grep ssl | grep DEL
|
||||
|
||||
Any processes shown by the above command will need to be restarted, or
|
||||
you can choose to restart your entire system if desired. In an
|
||||
OpenStack deployment, OpenSSL is commonly used to enable SSL/TLS
|
||||
protection for OpenStack API endpoints, SSL terminators, databases,
|
||||
message brokers, and Libvirt remote access. In addition to the native
|
||||
OpenStack services, some commonly used software that may need to be
|
||||
restarted includes:
|
||||
|
||||
Apache HTTPD
|
||||
Libvirt
|
||||
MySQL
|
||||
Nginx
|
||||
PostgreSQL
|
||||
Pound
|
||||
Qpid
|
||||
RabbitMQ
|
||||
Stud
|
||||
|
||||
It is also recommended that you treat your existing SSL/TLS keys as
|
||||
compromised and generate new keys. This includes keys used to enable
|
||||
SSL/TLS protection for OpenStack API endpoints, databases, message
|
||||
brokers, and libvirt remote access.
|
||||
|
||||
In addition, any confidential data such as credentials that have been
|
||||
sent over a SSL/TLS connection may have been compromised. It is
|
||||
recommended that cloud administrators change any passwords, tokens, or
|
||||
other credentials that may have been communicated over SSL/TLS.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0012
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
||||
Heartbleed Website: http://heartbleed.com/
|
||||
CVE: CVE-2014-0160
|
92
security-notes/OSSN-0013
Normal file
92
security-notes/OSSN-0013
Normal file
@ -0,0 +1,92 @@
|
||||
Some versions of Glance do not apply property protections as expected
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
Tom Leaman reported an issue to the OpenStack mailing list that
|
||||
affects Glance property protections. A permissive property setting in the
|
||||
Glance property protections configuration file will override any previously
|
||||
set stricter ones.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Glance, Folsom, Grizzly
|
||||
|
||||
### Discussion ###
|
||||
Glance property protections limit the users who can perform CRUD operations on
|
||||
a Glance property to those in specific roles. When the property protections
|
||||
rules are processed in the Folsom and Grizzly OpenStack releases, a matching
|
||||
rule will only stop the processing of subsequent rules if it authorizes the
|
||||
attempted action. If there is a matching rule that would reject an action that
|
||||
is followed by another matching rule that would accept the action, then the
|
||||
action is accepted even though one may expect it to be rejected.
|
||||
|
||||
In the following policy-protections.conf example, the desired result is to
|
||||
restrict 'update' and 'delete' permissions for any property beginning with
|
||||
'provider_' to only users with the 'admin' role.
|
||||
|
||||
--- begin example property-protections.conf snippet ---
|
||||
[^provider_.*$]
|
||||
create = admin
|
||||
read = admin,_member_
|
||||
update = admin
|
||||
delete = admin
|
||||
|
||||
[.*]
|
||||
create = _member_
|
||||
read = _member_
|
||||
update = _member_
|
||||
delete = _member_
|
||||
--- end example property-protections.conf snippet ---
|
||||
|
||||
Due to the way that the rules are processed in the Folsom and Grizzly OpenStack
|
||||
releases, the admin restriction for properties beginning with 'provider_' is
|
||||
nullified by the '.*' permissions since it also matches the same properties.
|
||||
This results in all users with the '_member_' role being allowed the 'create',
|
||||
'update', and 'delete' permissions on properties beginning with 'provider_',
|
||||
which is not what was intended.
|
||||
|
||||
This bug only affects the use of user-roles in Glance. It does not occur when
|
||||
policies are used to determine property protections.
|
||||
|
||||
### Recommended Actions ###
|
||||
This issue has been fixed in Havana (Glance 2013.2.2) and subsequent releases
|
||||
by changing the property protections rule processing to stop at the first rule
|
||||
that matches the property, even if it does not allow the attempted action.
|
||||
|
||||
Users of affected releases should avoid using multiple rules that would match
|
||||
the same property. Specifically, wildcard rules should be avoided unless they
|
||||
are the most restricive rules defined.
|
||||
|
||||
If a permissive rule is needed that is intended to match all properties that
|
||||
are not matched by other rules, a carefully crafted regular expression should
|
||||
be used instead of a wildcard as demonstrated below.
|
||||
|
||||
--- begin example property-protections.conf snippet ---
|
||||
[^provider_.*$]
|
||||
create = admin
|
||||
read = admin,_member_
|
||||
update = admin
|
||||
delete = admin
|
||||
|
||||
[^((?!provider_).)*$]
|
||||
create = _member_
|
||||
read = _member_
|
||||
update = _member_
|
||||
delete = _member_
|
||||
--- end example property-protections.conf snippet ---
|
||||
|
||||
In the above example, 'create', 'update', and 'delete' operations are only
|
||||
allowed for users with the '_member_' role for properties that do not begin
|
||||
with 'provider_'.
|
||||
|
||||
Configuration files with multiple property protection entries set should be
|
||||
tested to ensure that CRUD actions are constrained in the way the administrator
|
||||
intended.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0013
|
||||
Original Launchpad Bug : https://bugs.launchpad.net/glance/+bug/1271426
|
||||
Original Report : http://lists.openstack.org/pipermail/openstack-dev/2014-January/024861.html
|
||||
Glance Property Protections : https://wiki.openstack.org/wiki/Glance-property-protections
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
||||
|
71
security-notes/OSSN-0014
Normal file
71
security-notes/OSSN-0014
Normal file
@ -0,0 +1,71 @@
|
||||
Multiple Cinder drivers set insecure file permissions
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
Several Cinder volume drivers set insecure file permissions for various
|
||||
files and directories. These permissions render the files accessible for
|
||||
read and write to any user with access to the Cinder host as well as any
|
||||
processes running on it. This exposes user block storage data to
|
||||
potential disclosure, corruption, or destruction.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Cinder, Folsom, Grizzly, Havana, Icehouse
|
||||
|
||||
### Discussion ###
|
||||
Several Cinder drivers set file permissions that allow read and write
|
||||
access to 'group' and 'others'. Affected drivers include:
|
||||
|
||||
- GPFS
|
||||
- GlusterFS
|
||||
- Huawei
|
||||
- NetApp/NFS
|
||||
- Nexenta
|
||||
- NFS
|
||||
- Scality
|
||||
|
||||
Essentially, user volumes are made accessible to all who have access to
|
||||
the Cinder host. Daemons running on the host are also able to access the
|
||||
affected user volumes. The relaxed file permissions can be exploited to
|
||||
disclose, modify, corrupt, or destroy user volume data.
|
||||
|
||||
All versions of Cinder are vulnerable in Icehouse and earlier releases
|
||||
with a single exception: systems using the Icehouse GPFS driver.
|
||||
|
||||
This issue was reported by Dirk Mueller of SUSE.
|
||||
|
||||
### Recommended Actions ###
|
||||
The GPFS driver in the Icehouse release fixes the file permissions issue
|
||||
and also executes shell commands in non-root mode where possible.
|
||||
Unfortunately, it is not practical to back-port the fix for the GPFS
|
||||
driver to earlier OpenStack releases. It is anticipated that the other
|
||||
affected drivers will be fixed in the OpenStack Juno release.
|
||||
|
||||
It is not possible to simply modify the file permissions to mitigate
|
||||
the issue, as several of the affected drivers currently require the
|
||||
relaxed file permissions to function. Additionally, file manipulation
|
||||
cannot be uniformly restricted to a non-root user because often times a
|
||||
file may be created on one host using one uid, but mounted on another
|
||||
host using a different uid.
|
||||
|
||||
You can check what drivers are being used by Cinder by executing the
|
||||
following command on your Cinder host:
|
||||
|
||||
> grep "^volume_driver" /etc/cinder/cinder.conf
|
||||
|
||||
You should compare the results of the above command against the list of
|
||||
known vulerable drivers in the "Discussion" section above to see if you
|
||||
are affected. If you are running the Icehouse version of Cinder and the
|
||||
GPFS driver is the only driver in use, your Cinder system is not
|
||||
vulnerable to this issue.
|
||||
|
||||
In the likely scenario that your system is vulnerable, you should limit
|
||||
access to the Cinder host as much as possible. You should also explore
|
||||
alternatives such as applying mandatory access control policies
|
||||
(SELinux, AppArmor, etc) or using NFS uid squashing to control access
|
||||
to the files in order to minimize the possible exposure.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0014
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/cinder/+bug/1260679
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
46
security-notes/OSSN-0015
Normal file
46
security-notes/OSSN-0015
Normal file
@ -0,0 +1,46 @@
|
||||
Glance allows non-admin users to create public images
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
The default policy settings in Glance allow any user to upload an image
|
||||
that is publicly available to all users. This can allow a malicious user
|
||||
to upload a vulnerable image that other users may use, unknowingly
|
||||
exposing themselves to attack.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Glance, Folsom, Grizzly, Havana, Icehouse
|
||||
|
||||
### Discussion ###
|
||||
When uploading an image to Glance, the user performing the upload is
|
||||
able to mark the image as public. This allows all other users to see and
|
||||
use the image when they create new instances. The ability to share
|
||||
images with all users within an OpenStack deployment is very useful, but
|
||||
it can potentially be abused for malicious purposes. For example, an
|
||||
image can be uploaded that contains a backdoor that allows the attacker
|
||||
to have unauthorized access to instances that are created from that
|
||||
image.
|
||||
|
||||
Glance does allow for the ability to publicize images to be controlled
|
||||
by policy. However, the default policy setting allows all users to
|
||||
publicize images.
|
||||
|
||||
### Recommended Actions ###
|
||||
It is recommended that the ability to publicize images in Glance be
|
||||
restricted to trusted users, such as users with the "admin" role. This
|
||||
can be done by modifying the "publicize_image" capability in Glance's
|
||||
policy.json file. Here is an example of restricting this capability to
|
||||
users with the "admin" role:
|
||||
|
||||
---- begin example policy.json snippet ----
|
||||
"publicize_image": "role:admin",
|
||||
---- end example policy.json snippet ----
|
||||
|
||||
The default policy setting in Glance is planned to be changed to
|
||||
restrict the ability to publicize images to users with the "admin" role
|
||||
in the Juno release of OpenStack.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0015
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/glance/+bug/1313746
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
44
security-notes/OSSN-0016
Normal file
44
security-notes/OSSN-0016
Normal file
@ -0,0 +1,44 @@
|
||||
Cinder wipe fails in an insecure manner on Grizzly
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
A configuration error can prevent the secure erase of volumes in Cinder on
|
||||
Grizzly, potentially allowing a user to recover another user’s data.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Cinder, Grizzly
|
||||
|
||||
### Discussion ###
|
||||
In Cinder on Grizzly, a configurable method to perform a secure erase of
|
||||
volumes was added. In the event of a misconfiguration no secure erase will
|
||||
be performed.
|
||||
|
||||
The default code path in Cinder’s clear_volume() method, which is taken
|
||||
in the event of a configuration error, results in no wiping of the volume -
|
||||
even in the event that the user had flagged the volume for wiping.
|
||||
|
||||
This is the same behaviour as if the volume_clear = ‘none’ option was
|
||||
selected. This could let an attacker recover data from a volume that was
|
||||
intended to be securely erased. Examples of possible incorrect
|
||||
configuration options include values that would appear to result in a
|
||||
secure erase, for example “volume_clear = true” or “volume_clear =
|
||||
yes”.
|
||||
|
||||
In the event of a misconfiguration resulting in this issue, the message
|
||||
“Error unrecognized volume_clear option” should be present in log
|
||||
files.
|
||||
|
||||
### Recommended Actions ###
|
||||
- Create and clear a volume (cinder create --display_name erasetest 10;
|
||||
cinder delete erasetest)
|
||||
- Review log files for the above error message (grep “Error unrecognized
|
||||
volume_clear option” <logfile>)
|
||||
- Review configuration files to ensure that the valid options ‘zero’ or
|
||||
‘shred’ are specified.
|
||||
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0016
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/cinder/+bug/1322766
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
96
security-notes/OSSN-0017
Normal file
96
security-notes/OSSN-0017
Normal file
@ -0,0 +1,96 @@
|
||||
Session-fixation vulnerability in Horizon when using the default signed cookie sessions
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
The default setting in Horizon is to use signed cookies to store
|
||||
session state on the client side. This creates the possibility that if
|
||||
an attacker is able to capture a user's cookie, they may perform all
|
||||
actions as that user, even if the user has logged out.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Horizon, Folsom, Grizzly, Havana, Icehouse
|
||||
|
||||
### Discussion ###
|
||||
When configured to use client side sessions, the server isn't aware
|
||||
of the user's login state. The OpenStack authorization tokens are
|
||||
stored in the session ID in the cookie. If an attacker can steal the
|
||||
cookie, they can perform all actions as the target user, even after the
|
||||
user has logged out.
|
||||
|
||||
There are several ways attackers can steal the cookie. One example is
|
||||
by intercepting it over the wire if Horizon is not configured to use
|
||||
SSL. The attacker may also access the cookie from the filesystem if
|
||||
they have access to the machine. There are also other ways to steal
|
||||
cookies that are beyond the scope of this note.
|
||||
|
||||
By enabling a server side session tracking solution such as memcache,
|
||||
the session is terminated when the user logs out. This prevents an
|
||||
attacker from using cookies from terminated sessions.
|
||||
|
||||
It should be noted that Horizon does request that Keystone invalidate
|
||||
the token upon user logout, but this has not been implemented for the
|
||||
Identity API v3. Token invalidation may also fail if the Keystone
|
||||
service is unavailable. Therefore, to ensure that sessions are not
|
||||
usable after the user logs out, it is recommended to use server side
|
||||
session tracking.
|
||||
|
||||
### Recommended Actions ###
|
||||
It is recommended that you configure Horizon to use a different session
|
||||
backend rather than signed cookies. One possible alternative is to use
|
||||
memcache sessions. To check if you are using signed cookies, look for
|
||||
this line in Horizon's local_settings.py
|
||||
|
||||
--- begin example local_settings.py snippet ---
|
||||
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'
|
||||
--- end example local_settings.py snippet ---
|
||||
|
||||
If the SESSION_ENGINE is set to value other than
|
||||
'django.contrib.sessions.backends.signed_cookies' this vulnerability
|
||||
is not present. If SESSION_ENGINE is not set in local_settings.py,
|
||||
check for it in settings.py.
|
||||
|
||||
Here are the steps to configure memcache sessions:
|
||||
|
||||
1. Ensure the memcached service is running on your system
|
||||
2. Ensure that python-memcached is installed
|
||||
3. Configure memcached cache backend in local_settings.py
|
||||
|
||||
--- begin example local_settings.py snippet ---
|
||||
CACHES = {
|
||||
'default': {
|
||||
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
|
||||
'LOCATION': '127.0.0.1:11211',
|
||||
}
|
||||
}
|
||||
--- end example local_settings.py snippet ---
|
||||
|
||||
Make sure to use the actual IP and port of the memcached service.
|
||||
|
||||
4. Add a line in local_settings.py to use the cache backend:
|
||||
|
||||
--- begin example local_settings.py snippet ---
|
||||
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
|
||||
--- end example local_settings.py snippet ---
|
||||
|
||||
5. Restart Horizon's webserver service (typically 'apache2' or
|
||||
httpd')
|
||||
|
||||
Furthermore, you should always enable SSL for Horizon to help mitigate
|
||||
such attack scenarios.
|
||||
|
||||
Please note that regardless of which session backend is used, if the
|
||||
cookie is compromised, an attacker may assume all privileges of the
|
||||
user for as long as their session is valid.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0017
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/horizon/+bug/1327425
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
||||
Further discussion of the issue:
|
||||
http://www.pabloendres.com/horizon-and-cookies/#comment-115
|
||||
Django docs:
|
||||
https://docs.djangoproject.com/en/1.6/ref/settings/
|
||||
https://docs.djangoproject.com/en/1.6/topics/http/sessions/#configuring-sessions
|
||||
|
||||
|
63
security-notes/OSSN-0018
Normal file
63
security-notes/OSSN-0018
Normal file
@ -0,0 +1,63 @@
|
||||
Nova Network configuration allows guest VMs to connect to host services
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
When using Nova Network to manage networking for compute instances,
|
||||
instances are able to reach network services running on the host
|
||||
system. This may be a security issue for the operator.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Nova, Folsom, Grizzly, Havana, Icehouse
|
||||
|
||||
### Discussion ###
|
||||
OpenStack deployments using Nova Network, rather than Neutron for
|
||||
network configuration will cause the host running the instances to be
|
||||
reachable on the virtual network. Specifically, booted instances can
|
||||
check the address of their gateway and try to connect to it. Any host
|
||||
service which listens on the interfaces created by OpenStack and does
|
||||
not apply any additional filtering will receive such traffic.
|
||||
|
||||
This is a security issue for deployments where the OpenStack service
|
||||
users are not trusted parties, or should not be allowed to access
|
||||
underlying services of the host system.
|
||||
|
||||
Using a specific example of devstack in default configuration, the
|
||||
instance spawned inside of it will see the following routing table:
|
||||
|
||||
$ ip r s
|
||||
default via 172.16.1.1 dev eth0
|
||||
172.16.1.0/24 dev eth0 src 172.16.1.2
|
||||
|
||||
The instance can then use the gateway's address (172.16.1.1) to connect
|
||||
to the sshd service on the host system (if one is running and listening
|
||||
on all interfaces). The host system will see the connection coming from
|
||||
interface `br100`.
|
||||
|
||||
### Recommended Actions ###
|
||||
Connections like this can be stopped at various levels (libvirt filters,
|
||||
specific host's iptables entries, ebtables, network service
|
||||
configuration). The recommended way to protect against the incoming
|
||||
connections is to stop the critical services from binding to the
|
||||
Nova-controlled interfaces.
|
||||
|
||||
Using the sshd service as an example, the default configuration on most
|
||||
systems is to bind to all interfaces and all local addresses
|
||||
("ListenAddress :22" in sshd_config). In order to configure it only on
|
||||
a specific interface, use "ListenAddress a.b.c.d:22" where a.b.c.d is
|
||||
the address assigned to the chosen interface. Similar settings can be
|
||||
found for most other services.
|
||||
|
||||
The list of services listening on all interfaces can be obtained by
|
||||
running command 'netstat -ltu', where the '*:port' in the "Local
|
||||
Address" field means the service will likely accept connections from the
|
||||
local Nova instances.
|
||||
|
||||
If filtering of the traffic is chosen instead, care must be taken to
|
||||
allow traffic coming from the running instances to services controlled
|
||||
by Nova - DHCP and DNS providers.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0018
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/nova/+bug/1316271
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
62
security-notes/OSSN-0019
Normal file
62
security-notes/OSSN-0019
Normal file
@ -0,0 +1,62 @@
|
||||
Cinder SSH Pool will auto-accept SSH host signatures by default
|
||||
---
|
||||
|
||||
### Summary###
|
||||
In OpenStack releases prior to Juno, the SSH connection pool used by
|
||||
Cinder drivers to control SAN hosts will silently auto-accept SSH host
|
||||
fingerprints. This potentially allows for a man in the middle attack
|
||||
through the impersonation of a legitimate storage host.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Cinder, Icehouse, Havana, Grizzly, Folsom
|
||||
|
||||
### Discussion ###
|
||||
Cinder drivers for controlling SAN hardware communicate with storage
|
||||
hosts over SSH. To facilitate creation of these drivers, Cinder provides
|
||||
a utility mechanism to manage pooled SSH connections. This connection
|
||||
pool is using a policy that will silently accept the SSH fingerprint
|
||||
of any unknown host when it first connects. However, it is not properly
|
||||
maintaing the list of known hosts and will thus permit connections to a
|
||||
host regardless of the SSH fingerprint presented. This impacts all
|
||||
drivers built using the utility. At the time of writing these drivers
|
||||
include, but may not be limited to:
|
||||
|
||||
- Solaris ISCSI driver
|
||||
- HP LeftHand SAN ISCSI driver
|
||||
- Huawei OceanStor T series and Dorado series storage arrays
|
||||
- Dell EqualLogic Storage
|
||||
- IBM Storwize SVC
|
||||
|
||||
In the event that a malicious adversary has a point of presence on the
|
||||
storage network, they could undermine network communications between
|
||||
Cinder and the SAN host. Should an adversary manage to impersonate the
|
||||
storage host, Cinder will silently accept the newly presented
|
||||
fingerprint of the bogus host and allow the connection. This behaviour
|
||||
constitutes a typical Man in the Middle attack that could intercept and
|
||||
manipulate communications with the storage host, possibly leaking login
|
||||
credentials.
|
||||
|
||||
If login credentials can be acquired, then direct interaction with the
|
||||
legitimate storage host becomes possible. This could result in Cinder
|
||||
volumes being accessed or modified to export compromised code and data
|
||||
to other services.
|
||||
|
||||
The presence of this defect can be detected by initially connecting to a
|
||||
storage host and then re-generating that hosts local SSH details. Cinder
|
||||
will still allow connections to the host despite its now modified
|
||||
fingerprint. This is the default configuration.
|
||||
|
||||
### Recommended Actions ###
|
||||
Deployers should pay attention to the SSH interface between the Cinder
|
||||
driver and the SAN host and take appropriate measures to defend the
|
||||
storage network. These measures could include physical network isolation
|
||||
or placing an Intrusion Detection System on the network. The IDS should
|
||||
detect attacks such as ARP table poisoning, DHCP spoofing or DNS forgery
|
||||
that could be used to impersonate a SAN host and enact an Man in the
|
||||
Middle attack.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0019
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/cinder/+bug/1320056
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
69
security-notes/OSSN-0021
Normal file
69
security-notes/OSSN-0021
Normal file
@ -0,0 +1,69 @@
|
||||
Owners of compromised accounts should verify Keystone trusts
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
The Keystone 'trusts' API allows for delegation of privileges to one
|
||||
user on behalf of another. This API can allow for an attacker of a
|
||||
compromised account to set up backdoor access into the account. This
|
||||
backdoor may not be easily detected, even if the account compromise is
|
||||
detected.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Keystone, Grizzly, Havana, Icehouse
|
||||
|
||||
### Discussion ###
|
||||
The Keystone trusts system allows for delegation of roles to Keystone
|
||||
users without disclosing the main token, or sharing the account secret
|
||||
key with those users. That means, after an account is compromised, the
|
||||
change of the secret key and the invalidation of existing tokens may not
|
||||
be enough to prevent future access from an attackers.
|
||||
|
||||
If an attacker obtains access to the account (via stolen credentials or
|
||||
service exploitation), they can create a new Keystone trust. This new
|
||||
trust may grant access not dependent on any knowledge of the compromised
|
||||
user's secret key and can also be set to never expire. In this case, the
|
||||
trust has to be manually found and removed by the account owner.
|
||||
|
||||
Information about using trusts can be found at:
|
||||
|
||||
https://wiki.openstack.org/wiki/Keystone/Trusts
|
||||
|
||||
### Recommended Actions ###
|
||||
If the account has been compromised, or is being audited, the owner
|
||||
should check the list of active trusts and verify that:
|
||||
|
||||
- all the active trusts are needed
|
||||
- all the active trusts have the expected roles and delegation depth
|
||||
- all the active trusts have appropriate expiration lifetimes
|
||||
|
||||
At the time of writing this OSSN, trusts can be listed by using the
|
||||
Keystone API directly:
|
||||
|
||||
---- begin CLI example ----
|
||||
# get ENDPOINT from the last field of the output
|
||||
keystone endpoint-get --service identity --attr versionId \
|
||||
--value 3.0
|
||||
# get TOKEN from the last field of the output
|
||||
keystone token-get
|
||||
# list the trusts by running:
|
||||
curl -i -X GET "ENDPOINT/trusts/" -H "X-Auth-Token: TOKEN" \
|
||||
-H "Content-Type: application/json" -H "Accept: application/json"
|
||||
---- end CLI example ----
|
||||
|
||||
If some trust (with id TRUST_ID) is identified as invalid, it can be
|
||||
deleted using:
|
||||
|
||||
---- begin CLI example ----
|
||||
curl -i -X DELETE "ENDPOINT/trusts/TRUST_ID" \
|
||||
-H "X-Auth-Token: TOKEN" -H "Content-Type: application/json" \
|
||||
-H "Accept: application/json"
|
||||
---- end CLI example ----
|
||||
|
||||
In the future, operators will be able to use keystoneclient for a more
|
||||
convenient method of accessing and updating this information.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0021
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/ossn/+bug/1341849
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
57
security-notes/OSSN-0022
Normal file
57
security-notes/OSSN-0022
Normal file
@ -0,0 +1,57 @@
|
||||
Nova Networking does not enforce security group rules following a soft
|
||||
reboot of an instance
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
In deployments using Nova Networking, security group rules associated
|
||||
with an instance may not be enforced after a soft reboot. Nova is
|
||||
designed to apply the configured security group rules to an instance
|
||||
when certain operations are performed, such as a normal boot operation.
|
||||
If an operation has been performed that results in the clearing of
|
||||
security group rules, such as restarting the nova compute service, then
|
||||
performing a soft reboot of that instance will cause it to be
|
||||
started without security group rules being applied.
|
||||
|
||||
Deployments using Neutron are not impacted.
|
||||
|
||||
### Affected Services / Software ###
|
||||
Nova, Havana, Grizzly
|
||||
|
||||
### Discussion ###
|
||||
In Nova deployments using Nova Networking, security groups are
|
||||
implemented using iptables, which is used to configure and control
|
||||
network traffic into Nova instances. When an instance is first booted
|
||||
using the normal boot method (nova boot <instance_id>), the security
|
||||
group rules are applied to that instance.
|
||||
|
||||
When an instance is rebooted using the soft reboot method (nova reboot
|
||||
<instance_id>), the security group rules are not reapplied since they
|
||||
should have been already applied when the instance was initially
|
||||
booted. If the security group rules have not been applied following an
|
||||
event that resulted in their clearing, such as restarting the compute
|
||||
service, the instance will be brought up without security group
|
||||
enforcement. This situation is most likely to arise in cases where the
|
||||
Nova compute service has been terminated or restarted, which removes
|
||||
all iptables rules. If a stopped instance is then started by using a
|
||||
soft reboot, it will not have any security group rules applied. A hard
|
||||
reboot (nova reboot --hard <instance_id>) reapplies the security group
|
||||
rules, so it is not susceptible to this issue.
|
||||
|
||||
Depending on the deployment architecture, this could breach security
|
||||
assumptions and leave an instance vulnerable to network based attacks.
|
||||
|
||||
This issue only affects the Havana and Grizzly releases. The Icehouse
|
||||
release does not allow a stopped instance to be started using a soft
|
||||
reboot, therefore this issue does not affect the Icehouse release.
|
||||
|
||||
### Recommended Actions ###
|
||||
Do not to use the soft reboot method to start instances from the
|
||||
stopped state. If instances are in the stopped state, boot using "nova
|
||||
boot <instance_id>" or reboot using "nova reboot --hard <instance_id>"
|
||||
to force the security group rules to be applied.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : https://wiki.openstack.org/wiki/OSSN/OSSN-0022
|
||||
Original LaunchPad Bug : https://bugs.launchpad.net/nova/+bug/1316822
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
28
security-notes/README.md
Normal file
28
security-notes/README.md
Normal file
@ -0,0 +1,28 @@
|
||||
OpenStack Security Notes (OSSN)
|
||||
===============================
|
||||
|
||||
The OpenStack Security Group (OSSG) publishes Security Notes to advise users
|
||||
of security related issues. Security notes are similar to advisories; they
|
||||
address vulnerabilities in 3rd party tools typically used within OpenStack
|
||||
deployments and provide guidance on common configuration mistakes that can
|
||||
result in an insecure operating environment.
|
||||
|
||||
Repository Layout
|
||||
-----------------
|
||||
|
||||
This repository contains published Security Notes and templates that should
|
||||
be used when creating new Security Notes.
|
||||
|
||||
notes - contains Security Notes in e-mail format (see the templates)
|
||||
templates - contains e-mail and wiki format templates
|
||||
|
||||
Useful Links
|
||||
------------
|
||||
|
||||
A list of published Security Notes is available here:
|
||||
|
||||
https://wiki.openstack.org/wiki/Security_Notes
|
||||
|
||||
The process used to create new Security Notes is available here:
|
||||
|
||||
https://wiki.openstack.org/wiki/Security/Security_Note_Process
|
26
security-notes/template.txt
Normal file
26
security-notes/template.txt
Normal file
@ -0,0 +1,26 @@
|
||||
Title (single sentence)
|
||||
---
|
||||
|
||||
### Summary ###
|
||||
A few sentences describing the issue at a high level.
|
||||
|
||||
### Affected Services / Software ###
|
||||
A comma separated list of affected services and OpenStack releases.
|
||||
|
||||
### Discussion ###
|
||||
A detailed discussion of the problem. This should have enough detail
|
||||
that the person reading can determine if their deployment is affected,
|
||||
when the problem was introduced, and what types of attacks/problems that
|
||||
an affected deployment would be exposed to.
|
||||
|
||||
### Recommended Actions ###
|
||||
A detailed description of what can be done to remediate the problem (if
|
||||
possible). If the recommendation involves configuration changes,
|
||||
example snippets of configuration files should be included here.
|
||||
|
||||
### Contacts / References ###
|
||||
This OSSN : <link to OSSN on wiki>
|
||||
Original LaunchPad Bug : <link to launchpad bug for affected project/service>
|
||||
OpenStack Security ML : openstack-security@lists.openstack.org
|
||||
OpenStack Security Group : https://launchpad.net/~openstack-ossg
|
||||
CVE: <CVE number if one was filed>
|
Loading…
Reference in New Issue
Block a user