Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(deps): update module golang.org/x/crypto to v0.31.0 [security] #2348

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Dec 16, 2024

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
golang.org/x/crypto v0.21.0 -> v0.31.0 age adoption passing confidence

GitHub Vulnerability Alerts

CVE-2024-45337

Applications and libraries which misuse the ServerConfig.PublicKeyCallback callback may be susceptible to an authorization bypass.

The documentation for ServerConfig.PublicKeyCallback says that "A call to this function does not guarantee that the key offered is in fact used to authenticate." Specifically, the SSH protocol allows clients to inquire about whether a public key is acceptable before proving control of the corresponding private key. PublicKeyCallback may be called with multiple keys, and the order in which the keys were provided cannot be used to infer which key the client successfully authenticated with, if any. Some applications, which store the key(s) passed to PublicKeyCallback (or derived information) and make security relevant determinations based on it once the connection is established, may make incorrect assumptions.

For example, an attacker may send public keys A and B, and then authenticate with A. PublicKeyCallback would be called only twice, first with A and then with B. A vulnerable application may then make authorization decisions based on key B for which the attacker does not actually control the private key.

Since this API is widely misused, as a partial mitigation golang.org/x/[email protected] enforces the property that, when successfully authenticating via public key, the last key passed to ServerConfig.PublicKeyCallback will be the key used to authenticate the connection. PublicKeyCallback will now be called multiple times with the same key, if necessary. Note that the client may still not control the last key passed to PublicKeyCallback if the connection is then authenticated with a different method, such as PasswordCallback, KeyboardInteractiveCallback, or NoClientAuth.

Users should be using the Extensions field of the Permissions return value from the various authentication callbacks to record data associated with the authentication attempt instead of referencing external state. Once the connection is established the state corresponding to the successful authentication attempt can be retrieved via the ServerConn.Permissions field. Note that some third-party libraries misuse the Permissions type by sharing it across authentication attempts; users of third-party libraries should refer to the relevant projects for guidance.


Misuse of ServerConfig.PublicKeyCallback may cause authorization bypass in golang.org/x/crypto

CVE-2024-45337 / GHSA-v778-237x-gjrc / GO-2024-3321

More information

Details

Applications and libraries which misuse the ServerConfig.PublicKeyCallback callback may be susceptible to an authorization bypass.

The documentation for ServerConfig.PublicKeyCallback says that "A call to this function does not guarantee that the key offered is in fact used to authenticate." Specifically, the SSH protocol allows clients to inquire about whether a public key is acceptable before proving control of the corresponding private key. PublicKeyCallback may be called with multiple keys, and the order in which the keys were provided cannot be used to infer which key the client successfully authenticated with, if any. Some applications, which store the key(s) passed to PublicKeyCallback (or derived information) and make security relevant determinations based on it once the connection is established, may make incorrect assumptions.

For example, an attacker may send public keys A and B, and then authenticate with A. PublicKeyCallback would be called only twice, first with A and then with B. A vulnerable application may then make authorization decisions based on key B for which the attacker does not actually control the private key.

Since this API is widely misused, as a partial mitigation golang.org/x/cry...@​v0.31.0 enforces the property that, when successfully authenticating via public key, the last key passed to ServerConfig.PublicKeyCallback will be the key used to authenticate the connection. PublicKeyCallback will now be called multiple times with the same key, if necessary. Note that the client may still not control the last key passed to PublicKeyCallback if the connection is then authenticated with a different method, such as PasswordCallback, KeyboardInteractiveCallback, or NoClientAuth.

Users should be using the Extensions field of the Permissions return value from the various authentication callbacks to record data associated with the authentication attempt instead of referencing external state. Once the connection is established the state corresponding to the successful authentication attempt can be retrieved via the ServerConn.Permissions field. Note that some third-party libraries misuse the Permissions type by sharing it across authentication attempts; users of third-party libraries should refer to the relevant projects for guidance.

Severity

Unknown

References

This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).


Misuse of ServerConfig.PublicKeyCallback may cause authorization bypass in golang.org/x/crypto

CVE-2024-45337 / GHSA-v778-237x-gjrc / GO-2024-3321

More information

Details

Applications and libraries which misuse the ServerConfig.PublicKeyCallback callback may be susceptible to an authorization bypass.

The documentation for ServerConfig.PublicKeyCallback says that "A call to this function does not guarantee that the key offered is in fact used to authenticate." Specifically, the SSH protocol allows clients to inquire about whether a public key is acceptable before proving control of the corresponding private key. PublicKeyCallback may be called with multiple keys, and the order in which the keys were provided cannot be used to infer which key the client successfully authenticated with, if any. Some applications, which store the key(s) passed to PublicKeyCallback (or derived information) and make security relevant determinations based on it once the connection is established, may make incorrect assumptions.

For example, an attacker may send public keys A and B, and then authenticate with A. PublicKeyCallback would be called only twice, first with A and then with B. A vulnerable application may then make authorization decisions based on key B for which the attacker does not actually control the private key.

Since this API is widely misused, as a partial mitigation golang.org/x/[email protected] enforces the property that, when successfully authenticating via public key, the last key passed to ServerConfig.PublicKeyCallback will be the key used to authenticate the connection. PublicKeyCallback will now be called multiple times with the same key, if necessary. Note that the client may still not control the last key passed to PublicKeyCallback if the connection is then authenticated with a different method, such as PasswordCallback, KeyboardInteractiveCallback, or NoClientAuth.

Users should be using the Extensions field of the Permissions return value from the various authentication callbacks to record data associated with the authentication attempt instead of referencing external state. Once the connection is established the state corresponding to the successful authentication attempt can be retrieved via the ServerConn.Permissions field. Note that some third-party libraries misuse the Permissions type by sharing it across authentication attempts; users of third-party libraries should refer to the relevant projects for guidance.

Severity

  • CVSS Score: 9.1 / 10 (Critical)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

References

This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).


Configuration

📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Copy link
Contributor Author

renovate bot commented Dec 16, 2024

ℹ Artifact update notice

File name: go.mod

In order to perform the update(s) described in the table above, Renovate ran the go get command, which resulted in the following additional change(s):

  • 3 additional dependencies were updated

Details:

Package Change
golang.org/x/sync v0.1.0 -> v0.10.0
golang.org/x/sys v0.18.0 -> v0.28.0
golang.org/x/text v0.14.0 -> v0.21.0

Copy link

363 passed, 100 failed, 4 skipped

Test failures:
  [build failed]: accounts

Failed
  [build failed]: abi
Failed
  [build failed]: bind
Failed
  [build failed]: backends
Failed
  [build failed]: bind_v2
Failed
  [build failed]: keystore
Failed
  [build failed]: ledger
Failed
  [build failed]: blspopchecker
Failed
  [build failed]: devp2p
Failed
  [build failed]: ethtest
Failed
  [build failed]: ethkey
Failed
  [build failed]: evm
Failed
  [build failed]: geth
Failed
  [build failed]: utils
Failed
  [build failed]: common
Failed
  [build failed]: math
Failed
  [build failed]: istanbul
Failed
  [build failed]: announce
Failed
  [build failed]: backend
Failed
  [build failed]: replica
Failed
  [build failed]: core
Failed
  [build failed]: proxy
Failed
  [build failed]: uptime
Failed
  [build failed]: validator
Failed
  [build failed]: random
Failed
  [build failed]: console
Failed
  [build failed]: blockchain_parameters
Failed
  [build failed]: checkpointoracle
Failed
  [build failed]: currency
Failed
  [build failed]: election
Failed
  [build failed]: epoch_rewards
Failed
  [build failed]: freezer
Failed
  [build failed]: gasprice_minimum
Failed
  [build failed]: random
Failed
  [build failed]: testutil
Failed
  [build failed]: core
Failed
  [build failed]: asm
Failed
  [build failed]: bloombits
Failed
  [build failed]: forkid
Failed
  [build failed]: rawdb
Failed
  [build failed]: state
Failed
  [build failed]: snapshot
Failed
  [build failed]: types
Failed
  [build failed]: vm
Failed
  [build failed]: runtime
Failed
  [build failed]: crypto
Failed
  [build failed]: bls
Failed
  [build failed]: bls12377
Failed
  [build failed]: ecies
Failed
  [build failed]: e2e_test
Failed
  [build failed]: eth
Failed
  [build failed]: downloader
Failed
  [build failed]: fetcher
Failed
  [build failed]: filters
Failed
  [build failed]: gasprice
Failed
  [build failed]: eth
Failed
  [build failed]: snap
Failed
  [build failed]: tracers
Failed
  [build failed]: tracetest
Failed
  [build failed]: js
Failed
  [build failed]: ethclient
Failed
  [build failed]: gethclient
Failed
  [build failed]: leveldb
Failed
  [build failed]: memorydb
Failed
  [build failed]: ethstats
Failed
  [build failed]: graphql
Failed
  [build failed]: ethapi
Failed
  [build failed]: guide
Failed
  [build failed]: jsre
Failed
  [build failed]: les
Failed
  [build failed]: downloader
Failed
  [build failed]: fetcher
Failed
  [build failed]: utils
Failed
  [build failed]: client
Failed
  [build failed]: server
Failed
  [build failed]: light
Failed
  [build failed]: miner
Failed
  [build failed]: env
Failed
  [build failed]: hdwallet
Failed
  [build failed]: node
Failed
  [build failed]: p2p
Failed
  [build failed]: discover
Failed
  [build failed]: v4wire
Failed
  [build failed]: v5wire
Failed
  [build failed]: dnsdisc
Failed
  [build failed]: enode
Failed
  [build failed]: nodestate
Failed
  [build failed]: rlpx
Failed
  [build failed]: simulations
Failed
  [build failed]: adapters
Failed
  [build failed]: params
Failed
  [build failed]: rpc
Failed
  [build failed]: signer
Failed
  [build failed]: core
Failed
  [build failed]: fourbyte
Failed
  [build failed]: rules
Failed
  [build failed]: storage
Failed
  [build failed]: tests
Failed
  [build failed]: abi
Failed
  [build failed]: trie
Failed
This test report was produced by the test-summary action.  Made with ❤️ in Cambridge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants