Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[BUG] /user/find/full 越权漏洞

Aperta
#710 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
65/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
go

Direzione di ricerca

Inizia in internal/rpc/chat/user.go, all’interno di chatSvr.FindUserFullInfo, quindi leggi la gestione circostante di mctx.Check e del tipo di utente. Riproduci la richiesta con il token di un utente normale e l’ID di un altro utente, quindi verifica che gli utenti ordinari non possano recuperare i profili completi di altri utenti, mentre la ricerca consentita prevista continui a funzionare.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

OpenIM Server Version

1.8.4

Operating System and CPU Architecture

Linux (AMD)

Deployment Method

Docker Deployment

Bug Description and Steps to Reproduce

使用当前用户xxx 的OpenIM 业务token,可直接查询另一个真实用户lll 的资料。响应返回phoneNumber、nickname、gender、birth、消息设置等字段,说明接口按传入userIDs 返回用户资料,未限制为当前用户或已授权关系范围

Image
Screenshots Link

internal/rpc/chat/user.go 中的 FindUserFullInfo 函数,增加权限校验:
func (o *chatSvr) FindUserFullInfo(ctx context.Context, req *chat.FindUserFullInfoReq) (*chat.FindUserFullInfoResp, error) {
opUserID, userType, err := mctx.Check(ctx)
if err != nil {
return nil, err
}
if len(req.UserIDs) == 0 {
return nil, errs.ErrArgs.WrapMsg("UserIDs is empty")
}

// 普通用户只能查询自己的信息
if userType == constant.NormalUser {
    for _, userID := range req.UserIDs {
        if userID != opUserID {
            return nil, errs.ErrNoPermission.WrapMsg("normal user can only query own info")
        }
    }
}

attributes, err := o.Database.FindAttribute(ctx, req.UserIDs)
if err != nil {
    return nil, err
}
return &chat.FindUserFullInfoResp{Users: DbToPbUserFullInfos(attributes)}, nil

}

Lingua principale
Go
Stelle
160
Fork
226
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di openimsdk/chat

Tutte le issue di openimsdk/chat

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.