Bug 2224113

Summary: ACS bulk refresh through API silently sanitizes input ids
Product: Red Hat Satellite Reporter: Quinn James <qjames>
Component: Alternate Content SourcesAssignee: Samir Jha <sajha>
Status: CLOSED ERRATA QA Contact: Vladimír Sedmík <vsedmik>
Severity: low Docs Contact:
Priority: unspecified    
Version: 6.13.0CC: iballou, pcreech, rlavi, sajha, vsedmik
Target Milestone: 6.14.0Keywords: Triaged
Target Release: Unused   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: rubygem-katello-4.9.0.11-1 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-11-08 14:19:57 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Quinn James 2023-07-19 19:48:19 UTC
Description of problem:
When using the API to request a bulk refresh of alternate content sources, invalid ids will be discarded if there is a single valid ACS id in the query.

Version-Release number of selected component (if applicable):
n/a

How reproducible:
Always

Steps to Reproduce:
1. Create a Sat instance with an alternate content source, note the id.
2. Start a bulk refresh using the API, including the valid id along with several bogus id's:
`curl --request POST --user admin:changeme -H "Content-type: application/json" <host>/katello/api/alternate_content_sources/bulk/refresh?ids=<valid>,1001,1002,1003`

Actual results:
JSON output informing the user that the valid id alone has been refreshed

Expected results:
An error indicating invalid parameters

Additional info:
n/a

Comment 1 Quinn James 2023-07-19 20:00:01 UTC
I just confirmed this behavior also occurs for bulk delete of alternate content sources.

Comment 2 Samir Jha 2023-08-02 14:43:20 UTC
Created redmine issue https://projects.theforeman.org/issues/36634 from this bug

Comment 3 Bryan Kearney 2023-08-04 16:03:06 UTC
Moving this bug to POST for triage into Satellite since the upstream issue https://projects.theforeman.org/issues/36634 has been resolved.

Comment 5 Vladimír Sedmík 2023-08-11 16:06:58 UTC
Verified in 6.14.0 snap 11

1) Invalid ids are caught on bulk actions and proper error message is displayed:
[root@sat ~]# curl -X POST -su admin:nene -H "Content-type: application/json" https://$(hostname)/katello/api/alternate_content_sources/bulk/refresh --data '{"ids": [1,2,3]}' | jq
{
  "displayMessage": "Could not find alternate content sources with id: [\"3\"] . You either do not have required permissions, or these alternate content sources do not exist.",
  "errors": [
    "Could not find alternate content sources with id: [\"3\"] . You either do not have required permissions, or these alternate content sources do not exist."
  ]
}
[root@sat ~]# curl -X PUT -su admin:nene -H "Content-type: application/json" https://$(hostname)/katello/api/alternate_content_sources/bulk/destroy --data '{"ids": [1,2,3]}' | jq
{
  "displayMessage": "Could not find alternate content sources with id: [\"3\"] . You either do not have required permissions, or these alternate content sources do not exist.",
  "errors": [
    "Could not find alternate content sources with id: [\"3\"] . You either do not have required permissions, or these alternate content sources do not exist."
  ]
}

2) Valid ids are accepted and actions run:
[root@sat ~]# curl -X POST -su admin:nene -H "Content-type: application/json" https://$(hostname)/katello/api/alternate_content_sources/bulk/refresh --data '{"ids": [1,2]}' | jq
{
  "id": "37491c3a-940b-40fa-8f14-585128b92086",
  "label": "Actions::BulkAction",
  "pending": true,
  "action": "Bulk action",
  ...
}
[root@sat ~]# curl -X PUT -su admin:nene -H "Content-type: application/json" https://$(hostname)/katello/api/alternate_content_sources/bulk/destroy --data '{"ids": [1,2]}' | jq
{
  "id": "eda91f3e-62ef-4ada-b65c-0620ab02fc3e",
  "label": "Actions::BulkAction",
  "pending": true,
  "action": "Bulk action",
  ...
}

Comment 8 errata-xmlrpc 2023-11-08 14:19:57 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Important: Satellite 6.14 security and bug fix update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHSA-2023:6818