ΠΠΊΠΈΠΏ ΠΎΡ ΠΈΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΡ Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ Π² ΠΠΌΡΡΠ΅ΡΠ΄Π°ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ° Π½ΠΎΠ²Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ Π² ΠΌΠΈΠΊΡΠΎΠ°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΈΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅ Intel ΠΈ ARM, ΠΊΠΎΡΡΠΎ Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Spectre-v2, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠ½Π΅ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈΡΠ΅ Π·Π° Π·Π°ΡΠΈΡΠ° eIBRS ΠΈ CSV2, Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΊΡΠΌ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅. ΠΠ° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° ΡΠ° Π΄Π°Π΄Π΅Π½ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΈΠΌΠ΅Π½Π°: BHI (ΠΠ½ΠΆΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΡΡΠΎΡΠΈΡ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, CVE-2022-0001), BHB (ΠΡΡΠ΅Ρ Π·Π° ΠΈΡΡΠΎΡΠΈΡ Π½Π° ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅, CVE-2022-0002) ΠΈ Spectre-BHB (CVE-2022-23960), ΠΊΠΎΠΈΡΠΎ ΠΎΠΏΠΈΡΠ²Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΡΠ²ΠΈ Π½Π° ΡΡΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ (BHI - Π°ΡΠ°ΠΊΠ°, ΠΊΠΎΡΡΠΎ Π·Π°ΡΡΠ³Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½ΠΈΠ²Π° Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΏΡΠΎΡΠ΅Ρ ΠΈ ΡΠ΄ΡΠΎΡΠΎ, BHB - Π°ΡΠ°ΠΊΠ° Π½Π° ΡΡΡΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ eBPF JIT ΠΈ ΡΠ΄ΡΠΎΡΠΎ).
ΠΠ·ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈΡΠ΅ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°Ρ Π° ΡΠ°Π±ΠΎΡΠ΅Ρ Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π΄Π° ΠΈΠ·Π²Π»ΠΈΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΡΠ΄ΡΠΎΡΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΅ ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈΡ Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·Π²Π»Π΅ΡΠ΅ ΠΎΡ Π±ΡΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½ΠΈΠ· Ρ Ρ Π΅Ρ Π½Π° ΠΏΠ°ΡΠΎΠ»Π°ΡΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ root, Π·Π°ΡΠ΅Π΄Π΅Π½ ΠΎΡ ΡΠ°ΠΉΠ»Π° /etc/shadow. ΠΠΊΡΠΏΠ»ΠΎΠΉΡΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄Π½ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ (Π°ΡΠ°ΠΊΠ° ΠΎΡ ΡΠ΄ΡΠΎ ββΠ΄ΠΎ ΡΠ΄ΡΠΎ), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π·Π°ΡΠ΅Π΄Π΅Π½Π° ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ eBPF ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π²ΠΌΠ΅ΡΡΠΎ 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 ), ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΠ°Π½Π΅ ΡΡΠ΅Π· ΠΎΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΌΠΈΠ½Π°Π»ΠΈ ΠΏΡΠ΅Ρ ΠΎΠ΄ΠΈ. Π Ρ ΠΎΠ΄Π° Π½Π° Π°ΡΠ°ΠΊΠ° ΡΡΠ΅Π· ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΠΈ Ρ ΠΈΡΡΠΎΡΠΈΡΡΠ° Π½Π° ΠΏΡΠ΅Ρ ΠΎΠ΄ΠΈΡΠ΅ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ Π·Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠ΅Ρ ΠΎΠ΄Π° ΠΈ ΡΠΏΠ΅ΠΊΡΠ»Π°ΡΠΈΠ²Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΡΠ²Π° Π² ΠΊΠ΅ΡΠ°.
Π‘ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Branch History Buffer Π²ΠΌΠ΅ΡΡΠΎ Branch Target Buffer, Π½ΠΎΠ²Π°ΡΠ° Π°ΡΠ°ΠΊΠ° Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Π° Π½Π° Spectre-v2. ΠΠ°Π΄Π°ΡΠ°ΡΠ° Π½Π° Π½Π°ΠΏΠ°Π΄Π°ΡΠ΅Π»Ρ Π΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ ΡΠ°ΠΊΠΈΠ²Π° ΡΡΠ»ΠΎΠ²ΠΈΡ, ΡΠ΅ Π°Π΄ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠΏΠ΅ΠΊΡΠ»Π°ΡΠΈΠ²Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, Π΄Π° Π±ΡΠ΄Π΅ Π²Π·Π΅Ρ ΠΎΡ ΠΎΠ±Π»Π°ΡΡΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ. Π‘Π»Π΅Π΄ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΏΠ΅ΠΊΡΠ»Π°ΡΠΈΠ²Π΅Π½ ΠΈΠ½Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ ΡΠΊΠΎΠΊ Π°Π΄ΡΠ΅ΡΡΡ Π·Π° ΡΠΊΠΎΠΊ, ΠΏΡΠΎΡΠ΅ΡΠ΅Π½ ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΎΡΡΠ°Π²Π° Π² ΠΊΠ΅ΡΠ°, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠ΅ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΌΡ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΈ Π½Π΅ ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈ Π΄Π°Π½Π½ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru