Remote DoS via out-of-bounds read in iterator_validate()
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
Direzione di ricerca
Inizia con iterator_validate() in src/box/index.cc e riproduci il problema usando i file collegati Dockerfile, poc.py e config. Verifica che un array IPROTO_KEY sovradimensionato che usa ITER_NP o ITER_PP venga gestito senza una lettura oltre i limiti o un arresto anomalo.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug description
src/box/index.cc, iterator_validate() performs an out-of-bounds read using an attacker-controlled part_count before validating it against key_def->part_count.
if ((type == ITER_NP || type == ITER_PP) && part_count > 0 &&
index_def->key_def->parts[part_count - 1].coll != NULL) {
if (part_count > index_def->key_def->part_count) {
diag_set(ClientError, ER_KEY_PART_COUNT,
so unauthenticated guest IPROTO client can trigger this with a single SELECT request using ITER_NP/ITER_PP and an oversized, but valid, MsgPack IPROTO_KEY array
- Tarantool 3.4.2
Steps to reproduce
Dockerfile: https://gist.github.com/dstesk/ba89b776d468717fe1ac196f7481e8b1
poc.py: https://gist.github.com/dstesk/40a3b5acfea50939bea02a4689e3831a
config: https://gist.github.com/dstesk/22ba588954d9d8e486f34bfc523914ad
docker build -t tarantool-poc .
docker run -d --name tarantool-poc -p 3301:3301 tarantool-poc
python3 poc.py 127.0.0.1 3301
Actual behavior
crash
Segmentation fault
code: SEGV_MAPERR
addr: 0x36e3a860
context: 0x36815b00
siginfo: 0x36815c30
.....
- Lingua principale
- Lua
- Stelle
- 3.7k
- Fork
- 422
- Merge medio
- 2g 1h
- PR unite (30g)
- 114
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
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 tarantool/tarantool
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno
-
code health flaky test test
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
datetime feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di tarantool/tarantool
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
AstroNvim/astrotheme#184 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
objectionary/eolang.sty#184 ·
-
Add c++23 mapping to nvccApertafeature request
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 86/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
nvim-flutter/flutter-tools.nvim#557 ·
I maintainer di solito rispondono entro 1 giorno