OOB read in bencode_decode: strtoll called on non-NUL-terminated buffer
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
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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di sipwise/rtpengine
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
I maintainer di solito rispondono entro 3 giorni
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 15/100
sipwise/rtpengine#2197 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
sipwise/rtpengine#2190 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
sipwise/rtpengine#2181 · 4 commenti ·
I maintainer di solito rispondono entro 3 giorni
-
bug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di sipwise/rtpengine
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 69/100
bioconda/bioconda-recipes#70187 ·
I maintainer di solito rispondono entro 2 giorni
-
documentation Needs Triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 93/100
I maintainer di solito rispondono entro 1 giorno
-
Proposed Text EditsAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
curl/everything-curl#658 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
PDLPorters/pdl#561 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
objectionary/eolang.sty#197 ·
I maintainer di solito rispondono entro 2 giorni