Merge "Introduce a new test for "cve_2022_3100""

This commit is contained in:
Zuul 2022-12-08 14:32:44 +00:00 committed by Gerrit Code Review
commit 30e50ef9c8
2 changed files with 55 additions and 3 deletions

View File

@ -15,6 +15,7 @@
import json
import urllib.parse
from tempest import config
from tempest.lib.common.utils import data_utils
@ -73,12 +74,21 @@ class SecretClient(base.BarbicanTempestClient):
self.expected_success(200, resp.status)
return self._parse_resp(body)
def get_secret_payload(self, secret_id):
def get_secret_payload(self, secret_id, **kwargs):
"""GET /v1/secrets/{secret_id}/payload
Retrieve the payload.If kwargs are provided they are added
to the request as query string parameters.
"""
content_headers = {
"Accept": "application/octet-stream"
}
resp, body = self.get("v1/secrets/%s/payload" % secret_id,
headers=content_headers)
uri = "v1/secrets/{}/payload".format(secret_id)
if kwargs:
uri += '?'
uri += urllib.parse.urlencode(kwargs)
resp, body = self.get(uri, headers=content_headers)
self.expected_success(200, resp.status)
return self._parse_resp(body)

View File

@ -0,0 +1,42 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from barbican_tempest_plugin.tests.rbac.v1 import base
from oslo_log import log as logging
from tempest import config
from tempest.lib.common.utils import data_utils
from tempest.lib import decorators
from tempest.lib import exceptions
CONF = config.CONF
LOG = logging.getLogger(__name__)
class CVE20223100Test(base.BarbicanV1RbacBase):
@decorators.idempotent_id('459159ef-9670-4c59-8528-09466185c84e')
def test_cve_2022_3100(self):
# create a secret that belongs to Project B
secret_id = self.create_test_secret(
self.other_secret_client,
data_utils.rand_name('secret-under-test'),
'DONT_CVE_ME_PLZ')
# attempt to retrieve secret payload with user from Project A
# using CVE exploit (e.g. by adding the query string
# ?target.secret.read=read to the request)
query = {'target.secret.read': 'read'}
self.assertRaises(
exceptions.Forbidden,
self.secret_client.get_secret_payload,
secret_id,
**query)