Home session expiry maps 401 by exact error-string match (Low)

Aberta
#537 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

@irzhywau já está trabalhando nisso.

Desde 5/11/2026.

  • #539 de @irzhywau — aberto

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
56/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
rust

Direção de pesquisa

Start with home_projection_token_error in elastos/crates/elastos-server/src/api/gateway_home_runtime.rs, then read grant_bound_token_expiry in gateway_home_token.rs and RoomSessionAuthorization::validate in room_service.rs. Replace the exact message comparison with typed error handling, and log the underlying grant-store error before it is collapsed. Done when inactive or revoked grants map to 401 regardless of message wording and the underlying error is logged.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

security

Severity: Low (fails closed; correctness and observability only)

Found in the security review of #536.

Current behavior

home_projection_token_error (elastos/crates/elastos-server/src/api/gateway_home_runtime.rs) decides 401 by exact string equality:

if err.to_string() == "home launch token auth session is not active" { 401 } else { 500 }

A future rewording of load_active_session_grant, an added .context(...), or any anyhow display change falls through to gateway_internal_error → 500. Access is still denied, but the client loses its "re-authenticate" signal and logs fill with misleading 500s.

Fix

  • Use a typed error (an enum such as HomeTokenError::SessionInactive, or err.downcast_ref) instead of string equality.
  • Log the underlying error before the map_err(|_| …) collapses in grant_bound_token_expiry (gateway_home_token.rs) and RoomSessionAuthorization::validate (room_service.rs), so a lapsed grant is distinguishable from I/O or state corruption.

Done means

  • A lapsed or revoked grant maps to 401 regardless of how the grant loader's message is worded.
  • The underlying grant-store error is logged before it is collapsed to an auth failure.
Linguagem predominante
Rust
Estrelas
6
Forks
2
Merge médio
1d 3h
PRs com merge (30d)
42

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de elastos/elastos-runtime

Todas as issues de elastos/elastos-runtime

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.