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

OOB read in bencode_decode: strtoll called on non-NUL-terminated buffer

Aperta Adatta ai principianti
#2,199 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 3 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
67/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
c
Ambito
security

Direzione di ricerca

Inizia in lib/bencode.c presso __bencode_decode_integer attorno alla linea 448, poi leggi come bencode_decode_expect riceve il buffer da ng_client.c attorno alla linea 176. Controlla come il parser di interi gestisce la lunghezza dell'input e la terminazione NUL. Done significa che un input malformato come i è rifiutato senza leggere oltre il buffer, mentre gli interi validi vengono ancora decodificati.

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

Descrizione

__bencode_decode_integer (lib/bencode.c:448) calls strtoll(s, &convend, 10) on the length-delimited input buffer. strtoll requires NUL termination but bencode buffers are not NUL-terminated.

When the integer payload begins with whitespace (e.g. i , hex 69 20), strtoll skips it and scans past the buffer boundary looking for digits, causing a heap-buffer-overflow read.

Reachable from: ng_client.c receives into a 4096-byte arena buffer (arena_alloc, no NUL terminator) and passes it to bencode_decode_expect at line 176. A remote NG peer response with a valid cookie and malformed bencode body triggers the read.

Impact: Out-of-bounds read, process crash (DoS). No write primitive.

Fix: Copy the integer text into a stack buffer with NUL termination before calling strtoll, or bound the scan manually without strtoll.

Reproduce:

# 2-byte payload: "i " (0x69 0x20)
echo -n "i " | base64
# aSA=

Found by Bright Security using automated fuzz testing.

Lingua principale
Perl
Stelle
992
Fork
459
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

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 sipwise/rtpengine

Tutte le issue di sipwise/rtpengine

Issue simili

Altre issue su Perl

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.