Bug 1469599 - Safe mode rendering does not correctly prevent using symbol to proc calls
Summary: Safe mode rendering does not correctly prevent using symbol to proc calls
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Satellite
Classification: Red Hat
Component: Security
Version: 6.2.0
Hardware: Unspecified
OS: Unspecified
high
high vote
Target Milestone: Unspecified
Assignee: Tomer Brisker
QA Contact: Kedar Bidarkar
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-07-11 14:22 UTC by Tomer Brisker
Modified: 2019-09-26 14:37 UTC (History)
7 users (show)

Fixed In Version: foreman-1.15.3
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-02-21 16:54:17 UTC
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Foreman Issue Tracker 20271 0 High Closed Safe mode rendering does not correctly prevent using symbol to proc calls 2020-06-09 18:07:59 UTC
Foreman Issue Tracker 20836 0 High Closed Safe mode rendering does not correctly prevent using symbol to proc calls 2020-06-09 18:07:59 UTC

Description Tomer Brisker 2017-07-11 14:22:33 UTC
Using methods such as `.each`, a user can pass as an argument a symbol to be called, for example `.each(&:delete)`. 
This allows execution of commands that should be blocked by the jail.
A fix proposal in the safemode gem has been suggested: https://github.com/svenfuchs/safemode/pull/23
Once it is merged we should update our version of the gem to the latest one.

Comment 1 Tomer Brisker 2017-07-11 14:22:39 UTC
Created from redmine issue http://projects.theforeman.org/issues/20271

Comment 3 Satellite Program 2017-07-11 16:10:34 UTC
Upstream bug assigned to tbrisker@redhat.com

Comment 4 Satellite Program 2017-07-11 16:10:37 UTC
Upstream bug assigned to tbrisker@redhat.com

Comment 5 Satellite Program 2017-07-11 18:10:37 UTC
Moving this bug to POST for triage into Satellite 6 since the upstream issue http://projects.theforeman.org/issues/20271 has been resolved.

Comment 6 Kedar Bidarkar 2018-01-29 13:43:01 UTC
Please suggest how exactly should I be testing this?
 It appears that I need to test the safe mode rendering of provisioning templates, but not sure what exactly needs/should be tested here.

Comment 7 Tomer Brisker 2018-01-29 13:54:57 UTC
First, ensure that `safemode rendering` under settings->provisioning is set to true.
Check that none of the pre-seeded templates (provision, partition table, or job) contains symbol-to-proc syntax. You can do this by searching for the string "(&:" including the quotes. There should be no matching results.

Next, create a template that contains something like:

<%= @host.interfaces.each(&:id) %>

Then click on the "Preview" button. You should see an error message stating something like "Safemode doesn't allow to access 'block_pass' on &:id".

Comment 8 Kedar Bidarkar 2018-01-30 09:19:28 UTC
Ensured  "Safemode rendering" set to True.

Checked most of the pres-seed templates and they do not contain "symbol-to-proc" syntax.

Next, cloned and added "<%= @host.interfaces.each(&:id) %>" to a provisioning template.

Upon clicking the "Preview" Button, see an error message with the below message.


"Warning! There was an error rendering the Satellite Kickstart Default Cloned template: Safemode doesn't allow to access 'block_pass' on &:id"

VERIFIED with Sat6.3.0-snap32.0

Comment 9 Satellite Program 2018-02-21 16:54:17 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, 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-2018:0336


Note You need to log in before you can comment on or make changes to this bug.