CVE-2023-28442: Exposure of Sensitive Information to an Unauthorized Actor (CWE-200)
value: GeoNode is an open source platform that facilitates the creation, sharing, and collaborative use of geospatial data. Prior to versions 2.20.6, 2.19.6, and 2.18.7, anonymous users can obtain sensitive information about GeoNode configurations from the response of the `/geoserver/rest/about/status` Geoserver REST API endpoint. The Geoserver endpoint is secured by default, but the configuration of Geoserver for GeoNode opens a list of REST endpoints to support some of its public-facing services. The vulnerability impacts both GeoNode 3 and GeoNode 4 instances.

Geoserver security configuration is provided by `geoserver-geonode-ext`. A patch for 2.20.7 has been released which blocks access to the affected endpoint. The patch has been backported to branches 2.20.6, 2.19.7, 2.19.6, and 2.18.7. All the published artifacts and Docker images have been updated accordingly. A more advanced patch has been applied to the master and development versions, which require some changes to GeoNode code. They will be available with the next 4.1.0 release. The patched configuration only has an effect on new deployments. For existing setups, the patch must be applied manually inside the Geoserver data directory. The patched file must replace the existing `<geoserver_datadir>/security/rest.properties` file.
CWE description: The product exposes sensitive information to an actor that is not explicitly authorized to have access to that information.
CVSS v3 base score: 5.3
Published: 2023-03-24T00:15Z
Repository: https://github.com/GeoNode/geoserver-geonode-ext
Language: Other
Files changed: data/security/rest.properties
Commit date: 2023-03-23 11:04:36 +0100
Commit message: only close the status endpoint to support GN <=4.0.3 (#159)


Diff: diff --git a/data/security/rest.properties b/data/security/rest.properties
index 4735603..9859942 100644
--- a/data/security/rest.properties
+++ b/data/security/rest.properties
@@ -11,20 +11,21 @@
 #
 #/rest/workspaces/topp*;GET=ADMIN
 #/rest/workspaces/topp/**;GET=ADMIN
 #/**;POST,DELETE,PUT=ADMIN
 #
-/rest/br/**;GET,POST,DELETE,PUT=IS_AUTHENTICATED_FULLY
+/rest/security/**;GET,POST,DELETE,PUT=ROLE_ADMINISTRATOR
+/rest/monitor/**;GET=ROLE_ADMINISTRATOR
+
 /rest/geofence/**;GET,POST,DELETE,PUT=ROLE_ADMINISTRATOR
+/rest/resource/**;GET,POST,DELETE,PUT=ROLE_ADMINISTRATOR
+
 /rest/imports/**;GET,POST,DELETE,PUT=IS_AUTHENTICATED_FULLY
-/rest/layers/**;GET,POST,DELETE,PUT=IS_AUTHENTICATED_FULLY
+/rest/br/**;GET,POST,DELETE,PUT=IS_AUTHENTICATED_FULLY
+
+/rest/process/batchdownload/download/**;GET=IS_AUTHENTICATED_ANONYMOUSLY
 /rest/printing/**;GET,POST=IS_AUTHENTICATED_ANONYMOUSLY
-/rest/sldservice/capabilities.json;GET=IS_AUTHENTICATED_ANONYMOUSLY
-/rest/sldservice/**;GET=IS_AUTHENTICATED_FULLY
-/rest/styles/**;GET,POST,DELETE,PUT=IS_AUTHENTICATED_FULLY
-/rest/styles.xml;GET=IS_AUTHENTICATED_FULLY
-/rest/workspaces/**;GET,POST,DELETE,PUT=IS_AUTHENTICATED_FULLY
-/rest/workspaces.xml;GET=IS_AUTHENTICATED_FULLY
 
-/gwc/rest/layers/**;GET=IS_AUTHENTICATED_FULLY
+/rest/about/**;GET,POST,DELETE,PUT=ROLE_ADMINISTRATOR
 
-/**;GET,POST,DELETE,PUT=ROLE_ADMINISTRATOR
+/**;GET=IS_AUTHENTICATED_ANONYMOUSLY
+/**;POST,DELETE,PUT=IS_AUTHENTICATED_FULLY

Vulnerable code: /rest/br/**;GET,POST,DELETE,PUT=IS_AUTHENTICATED_FULLY
/rest/layers/**;GET,POST,DELETE,PUT=IS_AUTHENTICATED_FULLY
/rest/sldservice/capabilities.json;GET=IS_AUTHENTICATED_ANONYMOUSLY
/rest/sldservice/**;GET=IS_AUTHENTICATED_FULLY
/rest/styles/**;GET,POST,DELETE,PUT=IS_AUTHENTICATED_FULLY
/rest/styles.xml;GET=IS_AUTHENTICATED_FULLY
/rest/workspaces/**;GET,POST,DELETE,PUT=IS_AUTHENTICATED_FULLY
/rest/workspaces.xml;GET=IS_AUTHENTICATED_FULLY
/gwc/rest/layers/**;GET=IS_AUTHENTICATED_FULLY
/**;GET,POST,DELETE,PUT=ROLE_ADMINISTRATOR
Fixed code: /rest/security/**;GET,POST,DELETE,PUT=ROLE_ADMINISTRATOR
/rest/monitor/**;GET=ROLE_ADMINISTRATOR

/rest/resource/**;GET,POST,DELETE,PUT=ROLE_ADMINISTRATOR

/rest/br/**;GET,POST,DELETE,PUT=IS_AUTHENTICATED_FULLY

/rest/process/batchdownload/download/**;GET=IS_AUTHENTICATED_ANONYMOUSLY
/rest/about/**;GET,POST,DELETE,PUT=ROLE_ADMINISTRATOR
/**;GET=IS_AUTHENTICATED_ANONYMOUSLY
/**;POST,DELETE,PUT=IS_AUTHENTICATED_FULLY