ΠΡΡΠΏΠΏΠ° ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ· ΠΠΌΡΡΠ΅ΡΠ΄Π°ΠΌΡΠΊΠΎΠ³ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅ΡΠ° Π²ΡΡΠ²ΠΈΠ»Π° Π½ΠΎΠ²ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π² ΠΌΠΈΠΊΡΠΎΠ°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Intel ΠΈ ARM, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Spectre-v2, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΎΠ±ΠΎΠΉΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π·Π°ΡΠΈΡΡ eIBRS ΠΈ CSV2. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠΉ: BHI (Branch History Injection, CVE-2022-0001), BHB (Branch History Buffer, CVE-2022-0002) ΠΈ Spectre-BHB (CVE-2022-23960), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ°Π·Π½ΠΎΠ΅ ΠΏΡΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ (BHI — Π°ΡΠ°ΠΊΠ°, Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡΠ°Ρ ΡΠ°Π·Π½ΡΠ΅ ΡΡΠΎΠ²Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΡΠ΄ΡΠΎ, BHB — Π°ΡΠ°ΠΊΠ° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, eBPF JIT ΠΈ ΡΠ΄ΡΠΎ).
ΠΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΠΊΡΠΏΠ»ΠΎΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΈΠ· ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΄ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΊΡΠΏΠ»ΠΎΠΈΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΈΠ· Π±ΡΡΠ΅ΡΠΎΠ² ΡΠ΄ΡΠ° ΡΡΡΠΎΠΊΡ Ρ Ρ ΡΡΠ΅ΠΌ ΠΏΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ root, Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° /etc/shadow. Π ΡΠΊΡΠΏΠ»ΠΎΠΈΡΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ (Π°ΡΠ°ΠΊΠ° ΠΈΠ· ΡΡΠΎΠ²Π½Ρ ΡΠ΄ΡΠ° Π½Π° ΡΠ΄ΡΠΎ) ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π΅BPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ΅ ΠΈΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ eBPF ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π² ΠΊΠΎΠ΄Π΅ ΡΠ΄ΡΠ° Spectre-Π³Π°Π΄ΠΆΠ΅ΡΠΎΠ², ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΡ ΠΊ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ.
Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Intel, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° Atom. ΠΠ· ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ARM ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Ρ Cortex-A15, Cortex-A57, Cortex-A7*, Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2, Neoverse V1 ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠΏΡ Cortex-R. ΠΠΎ ΠΌΠ½Π΅Π½ΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ, Π² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ AMD ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡ Π½Π΅ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ. ΠΠ»Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΉ Π·Π°ΡΠΈΡΡ Π² Π±ΡΠ΄ΡΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΡΡ CPU.
ΠΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π°ΡΠ°ΠΊ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ eBPF ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ eBPF-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ, Π·Π°ΠΏΠΈΡΠ°Π² 1 Π² ΡΠ°ΠΉΠ» «/proc/sys/kernel/unprivileged_bpf_disabled» ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ «sysctl -w kernel.unprivileged_bpf_disabled=1». ΠΠ»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°ΡΠ°ΠΊ ΡΠ΅ΡΠ΅Π· Π³Π°Π΄ΠΆΠ΅ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ LFENCE Π² ΡΡΠ°ΡΡΠΊΠ°Ρ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΡ ΠΊ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠΈΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² Linux ΡΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΌΠ΅ΡΡ Π·Π°ΡΠΈΡΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠ΅ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ Π°ΡΠ°ΠΊΠΈ ΡΠ΅ΡΠ΅Π· eBPF. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ Intel ΠΏΠΎ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ eBPF ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ΄ΡΠ° Linux 5.16 ΠΈ Π±ΡΠ΄ΡΡ Π±ΡΠΊΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΠ΅ Π²Π΅ΡΠΊΠΈ.
ΠΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ BHI ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π°ΡΠ°ΠΊΠΈ Spectre-v2, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΉ Π·Π°ΡΠΈΡΡ (Intel eIBRS ΠΈ Arm CSV2) ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² Π±ΡΡΠ΅Ρ Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ² (Branch History Buffer), ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ Π² CPU Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ Π·Π° ΡΡΡΡ ΡΡΡΡΠ° ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΡΠΎΡΠ»ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ². Π Ρ ΠΎΠ΄Π΅ Π°ΡΠ°ΠΊΠΈ ΡΠ΅ΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Ρ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ² ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π΅Π²Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΈ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠ΅Π΄Π°Π΅Ρ Π² ΠΊΡΡΠ΅.
ΠΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ° Ρ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΎΠ² (Branch History Buffer) Π²ΠΌΠ΅ΡΡΠΎ Π±ΡΡΠ΅ΡΠ° ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ (Branch Target Buffer) Π½ΠΎΠ²Π°Ρ Π°ΡΠ°ΠΊΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Π° Spectre-v2. ΠΠ°Π΄Π°ΡΠ° Π°ΡΠ°ΠΊΡΡΡΠ΅Π³ΠΎ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ°ΠΊΠΈΡ
ΡΡΠ»ΠΎΠ²ΠΈΠΉ, ΡΡΠΎΠ±Ρ Π°Π΄ΡΠ΅Ρ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π±ΡΠ» Π²Π·ΡΡ ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ
Π΄Π°Π½Π½ΡΡ
. ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΏΠ΅ΠΊΡΠ»ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π°, ΡΡΠΈΡΠ°Π½Π½ΡΠΉ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ Π°Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π°, ΠΎΡΡΠ°ΡΡΡΡ Π² ΠΊΡΡΠ΅, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π΄Π»Ρ Π΅Π³ΠΎ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΊΡΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΈ Π½Π΅ ΠΏΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru