Π Toxcore, ΡΡΠ°Π»ΠΎΠ½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ P2P-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ Tox, Π²ΡΡΠ²Π»Π΅Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ (CVE-2021-44847), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ UDP-ΠΏΠ°ΠΊΠ΅ΡΠ°. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Ρ Π²ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π±Π°Π·Π΅ Toxcore, Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ ΠΎΡΠΊΠ»ΡΡΡΠ½ ΡΡΠ°Π½ΡΠΏΠΎΡΡ UDP. ΠΠ»Ρ Π°ΡΠ°ΠΊΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ UDP-ΠΏΠ°ΠΊΠ΅Ρ, Π·Π½Π°Ρ IP-Π°Π΄ΡΠ΅Ρ, ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΏΠΎΡΡ ΠΈ ΠΎΡΠΊΡΡΡΡΠΉ DHT-ΠΊΠ»ΡΡ ΠΆΠ΅ΡΡΠ²Ρ (Π΄Π°Π½Π½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎ Π² DHT, Ρ.Π΅. Π°ΡΠ°ΠΊΠ° ΠΌΠΎΠ³Π»Π° Π±ΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π° Π½Π° Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΠ·Π΅Π» DHT).
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΎΡΠ²Π»ΡΠ»Π°ΡΡ Π² Π²ΡΠΏΡΡΠΊΠ°Ρ toxcore Ρ 0.1.9 ΠΏΠΎ 0.2.12 ΠΈ ΡΡΡΡΠ°Π½Π΅Π½Π° Π² Π²Π΅ΡΡΠΈΠΈ 0.2.13. ΠΠ· ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠΊΠ° Π²ΡΠΏΡΡΡΠΈΠ» ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ΅ΠΊΡ qTox. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ Π·Π°ΡΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ UDP, ΠΎΡΡΠ°Π²ΠΈΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ TCP.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π²ΡΠ·Π²Π°Π½Π° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π±ΡΡΠ΅ΡΠ° Π² ΡΡΠ½ΠΊΡΠΈΠΈ handle_request(), Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ΅Π³ΠΎ ΠΈΠ·-Π·Π° Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΡΡΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π΄Π°Π½Π½ΡΡ
Π² ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π΄Π»ΠΈΠ½Π° Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ»Π°ΡΡ Π² ΠΌΠ°ΠΊΡΠΎΡΠ΅ CRYPTO_SIZE, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΌ ΠΊΠ°ΠΊ «1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE», ΠΊΠΎΡΠΎΡΡΠΉ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ «length — CRYPTO_SIZE». ΠΠ·-Π·Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΡ ΡΠΊΠΎΠ±ΠΎΠΊ Π² ΠΌΠ°ΠΊΡΠΎΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ ΡΡΠΌΠΌΡ Π²ΡΠ΅Ρ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ 1 ΠΈ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ
ΡΠ°ΡΡΠ΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ «length — (1 + 32 * 2 + 24)» ΡΠ°Π·ΠΌΠ΅Ρ Π±ΡΡΠ΅ΡΠ° ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π»ΡΡ ΠΊΠ°ΠΊ «length — 1 + 32 * 2 + 24», ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ
Π² ΡΡΠ΅ΠΊΠ΅, Π½Π°Ρ
ΠΎΠ΄ΡΡΠΈΡ
ΡΡ Π·Π° Π³ΡΠ°Π½ΠΈΡΠ΅ΠΉ Π±ΡΡΠ΅ΡΠ°.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru