Gorlif byffer yn Toxcore yn cael ei ecsbloetio trwy anfon pecyn CDU

Mae gan Toxcore, gweithrediad cyfeirio protocol negeseuon Tox P2P, fregusrwydd (CVE-2021-44847) a allai o bosibl sbarduno gweithredu cod wrth brosesu pecyn CDU wedi'i grefftio'n arbennig. Mae holl ddefnyddwyr cymwysiadau sy'n seiliedig ar Toxcore nad oes ganddynt gludiant CDU yn anabl yn cael eu heffeithio gan y bregusrwydd. Er mwyn ymosod, mae'n ddigon anfon pecyn CDU yn gwybod cyfeiriad IP, porthladd rhwydwaith ac allwedd DHT gyhoeddus y dioddefwr (mae'r wybodaeth hon ar gael i'r cyhoedd yn DHT, h.y. gallai'r ymosodiad gael ei gynnal ar unrhyw ddefnyddiwr neu nod DHT).

Roedd y mater yn bresennol mewn datganiadau toxcore 0.1.9 trwy 0.2.12 ac roedd yn sefydlog yn fersiwn 0.2.13. Ymhlith cymwysiadau cleientiaid, dim ond y prosiect qTox sydd wedi rhyddhau diweddariad hyd yn hyn sy'n dileu'r bregusrwydd. Fel ateb diogelwch, gallwch analluogi CDU wrth gynnal cefnogaeth TCP.

Mae'r bregusrwydd yn cael ei achosi gan orlif byffer yn y swyddogaeth handle_request(), sy'n digwydd oherwydd cyfrifiad anghywir o faint data mewn pecyn rhwydwaith. Yn benodol, pennwyd hyd y data wedi'i amgryptio yn y macro CRYPTO_SIZE, a ddiffinnir fel "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", a ddefnyddiwyd wedyn yn y gweithrediad tynnu "hyd - CRYPTO_SIZE". Oherwydd absenoldeb cromfachau yn y macro, yn lle tynnu swm yr holl werthoedd, tynnodd 1 ac adio'r rhannau oedd yn weddill. Er enghraifft, yn lle "hyd - (1 + 32 * 2 + 24)", cyfrifwyd maint y byffer fel "hyd - 1 + 32 * 2 + 24", a arweiniodd at drosysgrifo data ar y pentwr y tu hwnt i'r ffin byffer.

Ffynhonnell: opennet.ru

Ychwanegu sylw