github.com/dexidp/dex 0.0.0-20250523112731-94f2c587b299+dirty (golang)
pkg:golang/github.com/dexidp/dex@0.0.0-20250523112731-94f2c587b299%2Bdirty
Improper Handling of Syntactically Invalid Structure
| Affected range | <2.27.0 | | Fixed version | 2.27.0 | | CVSS Score | 9.8 | | CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | | EPSS Score | 0.357% | | EPSS Percentile | 58th percentile |
Description
A vulnerability exists in the SAML connector of the github.com/dexidp/dex library used to process SAML Signature Validation. This flaw allows an attacker to bypass SAML authentication. The highest threat from this vulnerability is to confidentiality, integrity, as well as system availability. This flaw affects dex versions before 2.27.0.
Exposure of Sensitive Information to an Unauthorized Actor
| Affected range | <=2.34.0 | | Fixed version | 2.35.0 | | CVSS Score | 9.3 | | CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N | | EPSS Score | 1.123% | | EPSS Percentile | 78th percentile |
Description
Impact
Dex instances with public clients (and by extension, clients accepting tokens issued by those Dex instances) are affected by this vulnerability.
An attacker can exploit this vulnerability by making a victim navigate to a malicious website and guiding them through the OIDC flow, stealing the OAuth authorization code in the process. The authorization code then can be exchanged by the attacker for a token, gaining access to applications accepting that token.
Steps to reproduce
-
A victim navigates to a malicious website
-
The webserver initiates a connection with a Dex instance directly - https://dexexample.com/auth/https:%252F%252Faccounts.google.com?access_type=online&client_id=example&nonce=2AaJAimQU9CbeOFsNra1d7CJTWB&redirect_uri=http%3A%2F%2Flocalhost%3A40393%2Fauth%2Fcallback&response_type=code&scope=openid+email&state=2AaJAjhpUmsB25csCo5muvorMTl. In this example, the Dex instance is hosted on dexexample.com, and the connector is accounts.google.com.
-
Dex returns a 302 Redirect to the connector IDP, https://accounts.google.com/o/oauth2/v2/auth?client_id=237800849078-hri2ndt7gdafpf34kq8crd5sik9pe3so.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fdexexample.com%2Fauth%2Fcallback&response_type=code&scope=openid+email&state=g3dkmpontsr3ugocoddjx72ef. The attacker records the state parameter value g3dkmpontsr3ugocoddjx72ef which will be used as the request ID later on.
-
The malicious website redirects the victim’s browser to the connector IDP.
-
The user authenticates to the connector IDP. If they have authenticated before, they may not be presented with an authentication challenge. The user will silently be taken through the following steps:
Authentication with the connector IDP, which redirects the browser to the Dex callback with a code - https://dexexample.com/callback?state=g3dkmpontsr3ugocoddjx72ef&code=4%2F0AX4XfWizg1PQEQNl18hmP0_YQ3iUYII2ed13n9ikKr_ZcV7uCZpZaPcIlxBzX5QwFIcs-w&scope=email+openid+https%3A%2F%[2Fwww.googleapis.com](http://2fwww.googleapis.com/)%2Fauth%2Fuserinfo.email&authuser=0&hd=[google.com](http://google.com/)&prompt=none
Dex handles the callback, fetching the user claims from the connector IDP, persisting them and generating an OAuth code. Then Dex redirects the browser to the approval endpoint https://dexexample.com/approval?req=g3dkmpontsr3ugocoddjx72ef. Note that the req parameter is the same as the attacker's recorded state parameter.
Dex uses the request ID to look up the OAuth code, and builds a redirect to the original callback with the code - http://localhost:40393/auth/callback?code=bz5p3oov2wlh5k3rboa4atxas&state=2AaJAjhpUmsB25csCo5muvorMTl.
In step 2., when the webserver initiates the connection to Dex and receives the redirect to the connector IDP, the webserver will persist the connector state parameter (g3dkmpontsr3ugocoddjx72ef), which is used as the request ID to later look up the OAuth code. As the user goes through the authentication flow with the connector IDP, the webserver will repeatedly request /approval?req=<state>. Once the user has successfully authenticated, if the webserver is able to call /approval before the victim’s browser calls /approval, then an attacker can fetch the Dex OAuth code which can be exchanged for an ID token using the /token endpoint.
Note that PKCE does not defend against this attack since the webserver initiates the request to Dex with a known code challenge.
Fix
The request has been made unpredictable with message authentication. This was accomplished by creating an HMAC using a randomly generated per-request secret. This secret is persisted between the initial login request and the approval request. Since the HMAC is derived using a secret key, its value cannot be known to an attacker, so they will be unable to poll /approval for the code.
Patches
Update to 2.35.0.
Workarounds
No known workarounds (without impacting behavior) for existing versions.
Disabling public clients is the only way to defend against attacks exploiting this vulnerability.
References
If you have any questions or comments about this advisory:
Improper Verification of Cryptographic Signature
| Affected range | <2.27.0 | | Fixed version | 2.27.0 | | CVSS Score | 9.3 | | CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N | | EPSS Score | 0.500% | | EPSS Percentile | 66th percentile |
Description
|
stdlib 1.24.4 (golang)
pkg:golang/stdlib@1.24.4

| Affected range | <1.24.13 | | Fixed version | 1.24.13 | | EPSS Score | 0.010% | | EPSS Percentile | 1st percentile |
Description
During session resumption in crypto/tls, if the underlying Config has its ClientCAs or RootCAs fields mutated between the initial handshake and the resumed handshake, the resumed handshake may succeed when it should have failed. This may happen when a user calls Config.Clone and mutates the returned Config, or uses Config.GetConfigForClient. This can cause a client to resume a session with a server that it would not have resumed with during the initial handshake, or cause a server to resume a session with a client that it would not have resumed with during the initial handshake.

| Affected range | <1.25.8 | | Fixed version | 1.25.8 | | EPSS Score | 0.046% | | EPSS Percentile | 14th percentile |
Description
Actions which insert URLs into the content attribute of HTML meta tags are not escaped. This can allow XSS if the meta tag also has an http-equiv attribute with the value "refresh".
A new GODEBUG setting has been added, htmlmetacontenturlescape, which can be used to disable escaping URLs in actions in the meta content attribute which follow "url=" by setting htmlmetacontenturlescape=0.

| Affected range | <1.25.8 | | Fixed version | 1.25.8 | | EPSS Score | 0.062% | | EPSS Percentile | 19th percentile |
Description
url.Parse insufficiently validated the host/authority component and accepted some invalid URLs.

| Affected range | <1.24.11 | | Fixed version | 1.24.11 | | EPSS Score | 0.017% | | EPSS Percentile | 4th percentile |
Description
Within HostnameError.Error(), when constructing an error string, there is no limit to the number of hosts that will be printed out. Furthermore, the error string is constructed by repeated string concatenation, leading to quadratic runtime. Therefore, a certificate provided by a malicious actor can result in excessive resource consumption.

| Affected range | <1.24.12 | | Fixed version | 1.24.12 | | EPSS Score | 0.032% | | EPSS Percentile | 9th percentile |
Description
The net/url package does not set a limit on the number of query parameters in a query.
While the maximum size of query parameters in URLs is generally limited by the maximum request header size, the net/http.Request.ParseForm method can parse large URL-encoded forms. Parsing a large form containing many unique query parameters can cause excessive memory consumption.

| Affected range | <1.24.8 | | Fixed version | 1.24.8 | | EPSS Score | 0.030% | | EPSS Percentile | 8th percentile |
Description
The ParseAddress function constructs domain-literal address components through repeated string concatenation. When parsing large domain-literal components, this can cause excessive CPU consumption.

| Affected range | <1.24.8 | | Fixed version | 1.24.8 | | EPSS Score | 0.028% | | EPSS Percentile | 8th percentile |
Description
The processing time for parsing some invalid inputs scales non-linearly with respect to the size of the input.
This affects programs which parse untrusted PEM inputs.

| Affected range | <1.24.8 | | Fixed version | 1.24.8 | | EPSS Score | 0.007% | | EPSS Percentile | 0th percentile |
Description
Validating certificate chains which contain DSA public keys can cause programs to panic, due to a interface cast that assumes they implement the Equal method.
This affects programs which validate arbitrary certificate chains.

| Affected range | <1.24.9 | | Fixed version | 1.24.9 | | EPSS Score | 0.013% | | EPSS Percentile | 2nd percentile |
Description
Due to the design of the name constraint checking algorithm, the processing time of some inputs scale non-linearly with respect to the size of the certificate.
This affects programs which validate arbitrary certificate chains.

| Affected range | <1.24.12 | | Fixed version | 1.24.12 | | EPSS Score | 0.022% | | EPSS Percentile | 6th percentile |
Description
archive/zip uses a super-linear file name indexing algorithm that is invoked the first time a file in an archive is opened. This can lead to a denial of service when consuming a maliciously constructed ZIP archive.

| Affected range | <1.24.11 | | Fixed version | 1.24.11 | | EPSS Score | 0.011% | | EPSS Percentile | 1st percentile |
Description
An excluded subdomain constraint in a certificate chain does not restrict the usage of wildcard SANs in the leaf certificate. For example a constraint that excludes the subdomain test.example.com does not prevent a leaf certificate from claiming the SAN *.example.com.

| Affected range | >=1.24.0 <1.24.6
| | Fixed version | 1.24.6 | | EPSS Score | 0.028% | | EPSS Percentile | 7th percentile |
Description
If the PATH environment variable contains paths which are executables (rather than just directories), passing certain strings to LookPath ("", ".", and ".."), can result in the binaries listed in the PATH being unexpectedly returned.

| Affected range | <1.24.12 | | Fixed version | 1.24.12 | | EPSS Score | 0.007% | | EPSS Percentile | 1st percentile |
Description
During the TLS 1.3 handshake if multiple messages are sent in records that span encryption level boundaries (for instance the Client Hello and Encrypted Extensions messages), the subsequent messages may be processed before the encryption level changes. This can cause some minor information disclosure if a network-local attacker can inject messages during the handshake.

| Affected range | <1.24.8 | | Fixed version | 1.24.8 | | EPSS Score | 0.016% | | EPSS Percentile | 3rd percentile |
Description
The Reader.ReadResponse function constructs a response string through repeated string concatenation of lines. When the number of lines in a response is large, this can cause excessive CPU consumption.

| Affected range | <1.24.8 | | Fixed version | 1.24.8 | | EPSS Score | 0.009% | | EPSS Percentile | 1st percentile |
Description
When Conn.Handshake fails during ALPN negotiation the error contains attacker controlled information (the ALPN protocols sent by the client) which is not escaped.

| Affected range | <1.24.8 | | Fixed version | 1.24.8 | | EPSS Score | 0.029% | | EPSS Percentile | 8th percentile |
Description
Despite HTTP headers having a default limit of 1MB, the number of cookies that can be parsed does not have a limit. By sending a lot of very small cookies such as "a=;", an attacker can make an HTTP server allocate a large amount of structs, causing large memory consumption.

| Affected range | <1.24.8 | | Fixed version | 1.24.8 | | EPSS Score | 0.024% | | EPSS Percentile | 6th percentile |
Description
Parsing a maliciously crafted DER payload could allocate large amounts of memory, causing memory exhaustion.

| Affected range | <1.24.8 | | Fixed version | 1.24.8 | | EPSS Score | 0.023% | | EPSS Percentile | 6th percentile |
Description
The Parse function permits values other than IPv6 addresses to be included in square brackets within the host component of a URL. RFC 3986 permits IPv6 addresses to be included within the host component, enclosed within square brackets. For example: "http://[::1]/". IPv4 addresses and hostnames must not appear within square brackets. Parse did not enforce this requirement.

| Affected range | <1.24.8 | | Fixed version | 1.24.8 | | EPSS Score | 0.013% | | EPSS Percentile | 2nd percentile |
Description
tar.Reader does not set a maximum size on the number of sparse region data blocks in GNU tar pax 1.0 sparse files. A maliciously-crafted archive containing a large number of sparse regions can cause a Reader to read an unbounded amount of data from the archive into memory. When reading from a compressed source, a small compressed input can result in large allocations.

| Affected range | <1.25.8 | | Fixed version | 1.25.8 | | EPSS Score | 0.004% | | EPSS Percentile | 0th percentile |
Description
On Unix platforms, when listing the contents of a directory using File.ReadDir or File.Readdir the returned FileInfo could reference a file outside of the Root in which the File was opened.
The impact of this escape is limited to reading metadata provided by lstat from arbitrary locations on the filesystem without permitting reading or writing files outside the root.
|
openssl 3.3.3-r0 (apk)
pkg:apk/alpine/openssl@3.3.3-r0?os_name=alpine&os_version=3.21

| Affected range | <3.3.6-r0 | | Fixed version | 3.3.6-r0 | | EPSS Score | 1.010% | | EPSS Percentile | 77th percentile |
Description

| Affected range | <3.3.5-r0 | | Fixed version | 3.3.5-r0 | | EPSS Score | 0.031% | | EPSS Percentile | 9th percentile |
Description

| Affected range | <3.3.6-r0 | | Fixed version | 3.3.6-r0 | | EPSS Score | 0.065% | | EPSS Percentile | 20th percentile |
Description

| Affected range | <3.3.6-r0 | | Fixed version | 3.3.6-r0 | | EPSS Score | 0.199% | | EPSS Percentile | 42nd percentile |
Description

| Affected range | <3.3.6-r0 | | Fixed version | 3.3.6-r0 | | EPSS Score | 0.061% | | EPSS Percentile | 19th percentile |
Description

| Affected range | <3.3.5-r0 | | Fixed version | 3.3.5-r0 | | EPSS Score | 0.022% | | EPSS Percentile | 6th percentile |
Description

| Affected range | <3.3.5-r0 | | Fixed version | 3.3.5-r0 | | EPSS Score | 0.033% | | EPSS Percentile | 9th percentile |
Description

| Affected range | <3.3.6-r0 | | Fixed version | 3.3.6-r0 | | EPSS Score | 0.064% | | EPSS Percentile | 20th percentile |
Description

| Affected range | <3.3.6-r0 | | Fixed version | 3.3.6-r0 | | EPSS Score | 0.052% | | EPSS Percentile | 16th percentile |
Description

| Affected range | <3.3.6-r0 | | Fixed version | 3.3.6-r0 | | EPSS Score | 0.017% | | EPSS Percentile | 4th percentile |
Description

| Affected range | <3.3.6-r0 | | Fixed version | 3.3.6-r0 | | EPSS Score | 0.077% | | EPSS Percentile | 23rd percentile |
Description

| Affected range | <3.3.6-r0 | | Fixed version | 3.3.6-r0 | | EPSS Score | 0.016% | | EPSS Percentile | 4th percentile |
Description

| Affected range | <3.3.6-r0 | | Fixed version | 3.3.6-r0 | | EPSS Score | 0.005% | | EPSS Percentile | 0th percentile |
Description
|
golang.org/x/crypto 0.38.0 (golang)
pkg:golang/golang.org/x/crypto@0.38.0

| Affected range | <0.43.0 | | Fixed version | 0.43.0 | | EPSS Score | 0.033% | | EPSS Percentile | 9th percentile |
Description
SSH clients receiving SSH_AGENT_SUCCESS when expecting a typed response will panic and cause early termination of the client process.
Allocation of Resources Without Limits or Throttling
| Affected range | <0.45.0 | | Fixed version | 0.45.0 | | CVSS Score | 5.3 | | CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L | | EPSS Score | 0.083% | | EPSS Percentile | 24th percentile |
Description
SSH servers parsing GSSAPI authentication requests do not validate the number of mechanisms specified in the request, allowing an attacker to cause unbounded memory consumption.
Out-of-bounds Read
| Affected range | <0.45.0 | | Fixed version | 0.45.0 | | CVSS Score | 5.3 | | CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L | | EPSS Score | 0.018% | | EPSS Percentile | 4th percentile |
Description
SSH Agent servers do not validate the size of messages when processing new identity requests, which may cause the program to panic if the message is malformed due to an out of bounds read.
|
go.opentelemetry.io/otel/sdk 1.36.0 (golang)
pkg:golang/go.opentelemetry.io/otel/sdk@1.36.0
Untrusted Search Path
| Affected range | >=1.21.0 <1.40.0
| | Fixed version | 1.40.0 | | CVSS Score | 7 | | CVSS Vector | CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H | | EPSS Score | 0.007% | | EPSS Percentile | 1st percentile |
Description
Impact
The OpenTelemetry Go SDK in version v1.20.0-1.39.0 is vulnerable to Path Hijacking (Untrusted Search Paths) on macOS/Darwin systems. The resource detection code in sdk/resource/host_id.go executes the ioreg system command using a search path. An attacker with the ability to locally modify the PATH environment variable can achieve Arbitrary Code Execution (ACE) within the context of the application.
Patches
This has been patched in d45961b, which was released with v1.40.0.
References
|
golang.org/x/net 0.40.0 (golang)
pkg:golang/golang.org/x/net@0.40.0

| Affected range | <0.45.0 | | Fixed version | 0.45.0 | | EPSS Score | 0.008% | | EPSS Percentile | 1st percentile |
Description
The html.Parse function in golang.org/x/net/html has an infinite parsing loop when processing certain inputs, which can lead to denial of service (DoS) if an attacker provides specially crafted HTML content.

| Affected range | <0.45.0 | | Fixed version | 0.45.0 | | EPSS Score | 0.016% | | EPSS Percentile | 3rd percentile |
Description
The html.Parse function in golang.org/x/net/html has quadratic parsing complexity when processing certain inputs, which can lead to denial of service (DoS) if an attacker provides specially crafted HTML content.
|
busybox 1.37.0-r12 (apk)
pkg:apk/alpine/busybox@1.37.0-r12?os_name=alpine&os_version=3.21

| Affected range | <=1.37.0-r13 | | Fixed version | Not Fixed | | EPSS Score | 0.052% | | EPSS Percentile | 16th percentile |
Description

| Affected range | <1.37.0-r14 | | Fixed version | 1.37.0-r14 | | EPSS Score | 0.083% | | EPSS Percentile | 24th percentile |
Description

| Affected range | <1.37.0-r14 | | Fixed version | 1.37.0-r14 | | EPSS Score | 0.077% | | EPSS Percentile | 23rd percentile |
Description
|
github.com/aws/aws-sdk-go 1.55.7 (golang)
pkg:golang/github.com/aws/aws-sdk-go@1.55.7

| Affected range | >=0 | | Fixed version | Not Fixed | | EPSS Score | 0.203% | | EPSS Percentile | 42nd percentile |
Description
A padding oracle vulnerability exists in the AWS S3 Crypto SDK for GoLang versions prior to V2. The SDK allows users to encrypt files with AES-CBC without computing a Message Authentication Code (MAC), which then allows an attacker who has write access to the target's S3 bucket and can observe whether or not an endpoint with access to the key can decrypt a file, they can reconstruct the plaintext with (on average) 128*length (plaintext) queries to the endpoint, by exploiting CBC's ability to manipulate the bytes of the next block and PKCS5 padding errors. It is recommended to update your SDK to V2 or later, and re-encrypt your files.

| Affected range | >=0 | | Fixed version | Not Fixed | | EPSS Score | 0.141% | | EPSS Percentile | 34th percentile |
Description
A vulnerability in the in-band key negotiation exists in the AWS S3 Crypto SDK for GoLang versions prior to V2. An attacker with write access to the targeted bucket can change the encryption algorithm of an object in the bucket, which can then allow them to change AES-GCM to AES-CTR. Using this in combination with a decryption oracle can reveal the authentication key used by AES-GCM as decrypting the GMAC tag leaves the authentication key recoverable as an algebraic equation. It is recommended to update your SDK to V2 or later, and re-encrypt your files.
|
github.com/go-git/go-git/v5 5.16.0 (golang)
pkg:golang/github.com/go-git/go-git@5.16.0#v5
Improper Validation of Integrity Check Value
| Affected range | <=5.16.4 | | Fixed version | 5.16.5 | | CVSS Score | 4.3 | | CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N | | EPSS Score | 0.006% | | EPSS Percentile | 0th percentile |
Description
Impact
A vulnerability was discovered in go-git whereby data integrity values for .pack and .idx files were not properly verified. This resulted in go-git potentially consuming corrupted files, which would likely result in unexpected errors such as object not found.
For context, clients fetch packfiles from upstream Git servers. Those files contain a checksum of their contents, so that clients can perform integrity checks before consuming it. The pack indexes (.idx) are generated locally by go-git, or the git cli, when new .pack files are received and processed. The integrity checks for both files were not being verified correctly.
Note that the lack of verification of the packfile checksum has no impact on the trust relationship between the client and server, which is enforced based on the protocol being used (e.g. TLS in the case of https:// or known hosts for ssh://). In other words, the packfile checksum verification does not provide any security benefits when connecting to a malicious or compromised Git server.
Patches
Users should upgrade to v5.16.5, or the latest v6 pseudo-version, in order to mitigate this vulnerability.
Workarounds
In case updating to a fixed version of go-git is not possible, users can run git fsck from the git cli to check for data corruption on a given repository.
Credit
Thanks @N0zoM1z0 for finding and reporting this issue privately to the go-git project.
|
zlib 1.3.1-r2 (apk)
pkg:apk/alpine/zlib@1.3.1-r2?os_name=alpine&os_version=3.21

| Affected range | <=1.3.1-r2 | | Fixed version | Not Fixed | | EPSS Score | 0.006% | | EPSS Percentile | 0th percentile |
Description
|
filippo.io/edwards25519 1.1.0 (golang)
pkg:golang/filippo.io/edwards25519@1.1.0
Improper Initialization
| Affected range | <1.1.1 | | Fixed version | 1.1.1 | | CVSS Score | 1.7 | | CVSS Vector | CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:U | | EPSS Score | 0.052% | | EPSS Percentile | 16th percentile |
Description
(*Point).MultiScalarMult failed to initialize its receiver.
If the method was called on an initialized point that is not the identity point, MultiScalarMult produced an incorrect result.
If the method was called on an uninitialized point, the behavior was undefined. In particular, if the receiver was the zero value, MultiScalarMult returned an invalid point that compared Equal to every point.
Note that MultiScalarMult is a rarely used advanced API. For example, if you only depend on filippo.io/edwards25519 via github.com/go-sql-driver/mysql, you are not affected. If you were notified of this issue despite not being affected, consider switching to a vulnerability scanner that is more precise and respectful of your attention, like govulncheck.
|
github.com/cloudflare/circl 1.6.1 (golang)
pkg:golang/github.com/cloudflare/circl@1.6.1
Incorrect Calculation
| Affected range | <1.6.3 | | Fixed version | 1.6.3 | | CVSS Score | 2.9 | | CVSS Vector | CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:L/VA:L/SC:L/SI:L/SA:L/E:P/S:N/AU:Y/U:Amber | | EPSS Score | 0.020% | | EPSS Percentile | 5th percentile |
Description
The CombinedMult function in the CIRCL ecc/p384 package (secp384r1 curve) produces an incorrect value for specific inputs. The issue is fixed by using complete addition formulas.
ECDH and ECDSA signing relying on this curve are not affected.
The bug was fixed in v1.6.3.
|