ΠΠ΅ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΠΊΡΠΈΡΠΈΡΠ½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ (CVE-2021-43267) ΠΏΡΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» TIPC (Transparent Inter-process Communication), Π΄ΠΎΡΡΠ°Π²Π΅Π½ Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ ΡΠ²ΠΎΡ ΠΊΠΎΠ΄ Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½ ΠΌΡΠ΅ΠΆΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ. ΠΠΏΠ°ΡΠ½ΠΎΡΡΡΠ° ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ ΡΠΌΠ΅ΠΊΡΠ°Π²Π° ΠΎΡ ΡΠ°ΠΊΡΠ°, ΡΠ΅ Π°ΡΠ°ΠΊΠ°ΡΠ° ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ·ΡΠΈΡΠ½ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° TIPC Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° (Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° Π½Π° ΡΠ΄ΡΠΎΡΠΎ tipc.ko), ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π² Π½Π΅ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Linux Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ.
ΠΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ TIPC ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΡ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux 3.19, Π½ΠΎ ΠΊΠΎΠ΄ΡΡ, Π²ΠΎΠ΄Π΅Ρ Π΄ΠΎ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ°, Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² ΡΠ΄ΡΠΎΡΠΎ 5.10. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π΅ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½Π° Π² ΡΠ΄ΡΠ° 5.15.0, 5.10.77 ΠΈ 5.14.16. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π° ΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½ Π² Debian 11, Ubuntu 21.04/21.10, SUSE (Π²ΡΠ² Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ΠΈΠ·Π΄Π°Π΄Π΅Π½ΠΈΡ ΠΊΠ»ΠΎΠ½ SLE15-SP4), RHEL (Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π΄Π°Π»ΠΈ ΡΡΠ·Π²ΠΈΠΌΠ°ΡΠ° ΠΊΠΎΡΠ΅ΠΊΡΠΈΡ Π΅ ΠΏΡΠ΅Π½Π΅ΡΠ΅Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎ) ΠΈ Fedora. ΠΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π²Π΅ΡΠ΅ Π΅ ΠΏΡΡΠ½Π°ΡΠ° Π·Π° Arch Linux. ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Ρ ΡΠ΄ΡΠΎ, ΠΏΠΎ-ΡΡΠ°ΡΠΎ ΠΎΡ 5.10, ΠΊΠ°ΡΠΎ Debian 10 ΠΈ Ubuntu 20.04, Π½Π΅ ΡΠ° Π·Π°ΡΠ΅Π³Π½Π°ΡΠΈ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
ΠΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ TIPC ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΎΡ Ericsson, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄ΡΠΏΡΠΎΡΠ΅ΡΠ½Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ Π² ΠΊΠ»ΡΡΡΠ΅Ρ ΠΈ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° Π³Π»Π°Π²Π½ΠΎ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ½ΠΈ Π²ΡΠ·Π»ΠΈ. TIPC ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΏΡΠ΅Π· Ethernet ΠΈΠ»ΠΈ UDP (ΠΌΡΠ΅ΠΆΠΎΠ² ΠΏΠΎΡΡ 6118). ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠ΅Π· Ethernet Π°ΡΠ°ΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ ΠΎΡ Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ°, Π° ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° UDP ΠΎΡ Π³Π»ΠΎΠ±Π°Π»Π½Π°ΡΠ° ΠΌΡΠ΅ΠΆΠ°, Π°ΠΊΠΎ ΠΏΠΎΡΡΡΡ Π½Π΅ Π΅ ΠΏΠΎΠΊΡΠΈΡ ΡΡΡ Π·Π°ΡΠΈΡΠ½Π° ΡΡΠ΅Π½Π°. ΠΡΠ°ΠΊΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π° ΠΈ ΠΎΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π½Π° Ρ ΠΎΡΡΠ°. ΠΠ° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ TIPC, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Π° Π½Π° ΡΠ΄ΡΠΎΡΠΎ tipc.ko ΠΈ Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ ΠΊΡΠΌ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° netlink ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° tipc.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΡΠ΅ ΠΏΡΠΎΡΠ²ΡΠ²Π° Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΡΡΠ° tipc_crypto_key_rc ΠΈ ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π° ΠΎΡ Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π² Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ°, ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΏΡΠΈ ΠΏΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ Ρ ΡΠΈΠΏΠ° MSG_CRYPTO, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ ΠΎΡ Π΄ΡΡΠ³ΠΈ Π²ΡΠ·Π»ΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° Ρ ΡΠ΅Π» ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΎ Π΄Π΅ΡΠΈΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ Π²ΡΠ·Π»ΠΈ. Π Π°Π·ΠΌΠ΅ΡΡΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΊΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° ΠΊΠ°ΡΠΎ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ°ΡΠ° Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π·Π°Π³Π»Π°Π²ΠΊΠ°ΡΠ°, Π½ΠΎ Π±Π΅Π· Π΄Π° ΡΠ΅ Π²Π·Π΅ΠΌΠ° ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Π·Π° ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ ΠΈ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠ»ΡΡ, ΠΏΡΠ΅Π΄Π°Π΄Π΅Π½ Π² ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π° ΡΠ΅, ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Π΅ ΡΠΈΠΊΡΠΈΡΠ°Π½, Π° Π·Π° ΠΊΠ»ΡΡΠ° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ Π°ΡΡΠΈΠ±ΡΡ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΠΊΠ°ΡΠΎ Π°ΡΠ°ΠΊΡΠ²Π°ΡΠΈΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΡΠΎΡΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡ Π² ΡΠΎΠ·ΠΈ Π°ΡΡΠΈΠ±ΡΡ, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½Π°ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈΠ·Π²ΡΠ½ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π±ΡΡΠ΅Ρ. struct tipc_aead_key { char alg_name[TIPC_AEAD_ALG_NAME]; unsigned int keylen; /* Π² Π±Π°ΠΉΡΠΎΠ²Π΅ */ char key[]; };
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru