Record and verify WebAuthn RPIDs#25238
Merged
codingllama merged 8 commits intomasterfrom Apr 27, 2023
Merged
Conversation
Contributor
Author
|
Tested manually in a cluster with a Yubi4 and Yubi5 registered (empty CredentialRpId to begin with). |
938ddd9 to
2039e57
Compare
tobiaszheller
approved these changes
Apr 27, 2023
Contributor
tobiaszheller
left a comment
There was a problem hiding this comment.
lgtm, just wonder, maybe rpid change in cluster should be stored in audit log as system event? It will also simplify debugging, wdyt @codingllama ?
Contributor
Author
|
@tobiaszheller yes, that would be nice. I won't do that here, but might chase it later. It's simple enough for "online" changes, teleport.yaml changes are a bit harder but I think it could be done. |
5501247 to
5d10554
Compare
zmb3
approved these changes
Apr 27, 2023
Contributor
Author
|
I'm getting some flakiness on Logs: |
dae0131 to
68c5d81
Compare
68c5d81 to
ddd796d
Compare
ddd796d to
6aa2736
Compare
|
@codingllama See the table below for backport results.
|
codingllama
added a commit
that referenced
this pull request
Apr 27, 2023
Record and verify the credential RPID in `WebauthnDevice`, so we can detect and warn against accidental RPID changes. RPID changes are not allowed by WebAuthn, so there's little Teleport can do to mitigate them. Users that have only "invalid" WebAuthn devices will get ["invalid credentials"][1] errors on login. While a bit opaque, this is likely to lead to an user reset, which is the correct fix if only a few users are affected. [1]: https://github.com/gravitational/teleport/blob/7a90a0ff9943e4f536736372dbdc90d324f143a2/lib/web/apiserver.go#L2180
codingllama
added a commit
that referenced
this pull request
Apr 28, 2023
Record and verify the credential RPID in `WebauthnDevice`, so we can detect and warn against accidental RPID changes. RPID changes are not allowed by WebAuthn, so there's little Teleport can do to mitigate them. Users that have only "invalid" WebAuthn devices will get ["invalid credentials"][1] errors on login. While a bit opaque, this is likely to lead to an user reset, which is the correct fix if only a few users are affected. [1]: https://github.com/gravitational/teleport/blob/7a90a0ff9943e4f536736372dbdc90d324f143a2/lib/web/apiserver.go#L2180
codingllama
added a commit
that referenced
this pull request
Apr 28, 2023
Record and verify the credential RPID in `WebauthnDevice`, so we can detect and warn against accidental RPID changes. RPID changes are not allowed by WebAuthn, so there's little Teleport can do to mitigate them. Users that have only "invalid" WebAuthn devices will get ["invalid credentials"][1] errors on login. While a bit opaque, this is likely to lead to an user reset, which is the correct fix if only a few users are affected. [1]: https://github.com/gravitational/teleport/blob/7a90a0ff9943e4f536736372dbdc90d324f143a2/lib/web/apiserver.go#L2180
r0mant
pushed a commit
that referenced
this pull request
Apr 28, 2023
Record and verify the credential RPID in `WebauthnDevice`, so we can detect and warn against accidental RPID changes. RPID changes are not allowed by WebAuthn, so there's little Teleport can do to mitigate them. Users that have only "invalid" WebAuthn devices will get ["invalid credentials"][1] errors on login. While a bit opaque, this is likely to lead to an user reset, which is the correct fix if only a few users are affected. [1]: https://github.com/gravitational/teleport/blob/7a90a0ff9943e4f536736372dbdc90d324f143a2/lib/web/apiserver.go#L2180
rosstimothy
added a commit
that referenced
this pull request
May 1, 2023
There was a backward incompatible change introduce in #25238 that was preventing mfa devices from being unmarshalled due to an unknown field: ``` tctl users reset norbert ERROR: rpc error: code = Unknown desc = unknown field "credentialRpId" in types.WebauthnDevice ``` The custom `json.Unmarshaler` implemented by `types.MFADevice` did not initialize the protojson decoder to allow unknown fields. This prevented any reads of `types.MFADevice` from a backend that was upgraded and then downgraded.
rosstimothy
added a commit
that referenced
this pull request
May 1, 2023
There was a backward incompatible change introduce in #25238 that was preventing mfa devices from being unmarshalled due to an unknown field: ``` tctl users reset norbert ERROR: rpc error: code = Unknown desc = unknown field "credentialRpId" in types.WebauthnDevice ``` The custom `json.Unmarshaler` implemented by `types.MFADevice` did not initialize the protojson decoder to allow unknown fields. This prevented any reads of `types.MFADevice` from a backend that was upgraded and then downgraded.
github-actions Bot
pushed a commit
that referenced
this pull request
May 1, 2023
There was a backward incompatible change introduce in #25238 that was preventing mfa devices from being unmarshalled due to an unknown field: ``` tctl users reset norbert ERROR: rpc error: code = Unknown desc = unknown field "credentialRpId" in types.WebauthnDevice ``` The custom `json.Unmarshaler` implemented by `types.MFADevice` did not initialize the protojson decoder to allow unknown fields. This prevented any reads of `types.MFADevice` from a backend that was upgraded and then downgraded.
github-actions Bot
pushed a commit
that referenced
this pull request
May 1, 2023
There was a backward incompatible change introduce in #25238 that was preventing mfa devices from being unmarshalled due to an unknown field: ``` tctl users reset norbert ERROR: rpc error: code = Unknown desc = unknown field "credentialRpId" in types.WebauthnDevice ``` The custom `json.Unmarshaler` implemented by `types.MFADevice` did not initialize the protojson decoder to allow unknown fields. This prevented any reads of `types.MFADevice` from a backend that was upgraded and then downgraded.
github-actions Bot
pushed a commit
that referenced
this pull request
May 1, 2023
There was a backward incompatible change introduce in #25238 that was preventing mfa devices from being unmarshalled due to an unknown field: ``` tctl users reset norbert ERROR: rpc error: code = Unknown desc = unknown field "credentialRpId" in types.WebauthnDevice ``` The custom `json.Unmarshaler` implemented by `types.MFADevice` did not initialize the protojson decoder to allow unknown fields. This prevented any reads of `types.MFADevice` from a backend that was upgraded and then downgraded.
rosstimothy
added a commit
that referenced
this pull request
May 2, 2023
There was a backward incompatible change introduce in #25238 that was preventing mfa devices from being unmarshalled due to an unknown field: ``` tctl users reset norbert ERROR: rpc error: code = Unknown desc = unknown field "credentialRpId" in types.WebauthnDevice ``` The custom `json.Unmarshaler` implemented by `types.MFADevice` did not initialize the protojson decoder to allow unknown fields. This prevented any reads of `types.MFADevice` from a backend that was upgraded and then downgraded.
rosstimothy
added a commit
that referenced
this pull request
May 2, 2023
There was a backward incompatible change introduce in #25238 that was preventing mfa devices from being unmarshalled due to an unknown field: ``` tctl users reset norbert ERROR: rpc error: code = Unknown desc = unknown field "credentialRpId" in types.WebauthnDevice ``` The custom `json.Unmarshaler` implemented by `types.MFADevice` did not initialize the protojson decoder to allow unknown fields. This prevented any reads of `types.MFADevice` from a backend that was upgraded and then downgraded.
rosstimothy
added a commit
that referenced
this pull request
May 2, 2023
There was a backward incompatible change introduce in #25238 that was preventing mfa devices from being unmarshalled due to an unknown field: ``` tctl users reset norbert ERROR: rpc error: code = Unknown desc = unknown field "credentialRpId" in types.WebauthnDevice ``` The custom `json.Unmarshaler` implemented by `types.MFADevice` did not initialize the protojson decoder to allow unknown fields. This prevented any reads of `types.MFADevice` from a backend that was upgraded and then downgraded.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Record and verify the credential RPID in
WebauthnDevice, so we can detect and warn against accidental RPID changes.RPID changes are not allowed by WebAuthn, so there's little Teleport can do to mitigate them.
Users that have only "invalid" WebAuthn devices will get "invalid credentials" errors on login. While a bit opaque, this is likely to lead to an user reset, which is the correct fix if only a few users are affected.