GhostRace - Π°Ρ‚Π°ΠΊΠ° срСщу спСкулативния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° изпълнСниС Π² процСсори Intel, AMD, ARM ΠΈ IBM

Π“Ρ€ΡƒΠΏΠ° изслСдоватСли ΠΎΡ‚ Vrije Universiteit Amsterdam ΠΈ IBM Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΈΡ…Π° Π½ΠΎΠ²Π° Π°Ρ‚Π°ΠΊΠ° срСщу спСкулативния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° изпълнСниС Π² ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ процСсори, с ΠΊΠΎΠ΄ΠΎΠ²ΠΎ ΠΈΠΌΠ΅ GhostRace (CVE-2024-2193). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ сС появява Π² процСсори, ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈ ΠΎΡ‚ Intel, AMD, ARM ΠΈ IBM. Π—Π° Π΄Π° сС дСмонстрират ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ Π½Π° Π°Ρ‚Π°ΠΊΠ°Ρ‚Π°, бСшС ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π½Π° Сксплойт, ΠΊΠΎΠΉΡ‚ΠΎ позволява ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ядрото Π½Π° Linux с производитСлност ΠΎΡ‚ 12 KB Π² сСкунда с Π½ΠΈΠ²ΠΎ Π½Π° надСТдност, Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎ Π·Π° Π°Ρ‚Π°ΠΊΠΈΡ‚Π΅ ΠΎΡ‚ клас Spectre. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Π°Ρ‚Π°ΠΊΠΈ срСщу систСми Π·Π° виртуализация, Π½Π°ΠΏΠ°Π΄Π°Ρ‚Π΅Π» ΠΎΡ‚ гост систСма ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° хост срСдата ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ гост систСми.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° Π°Ρ‚Π°ΠΊΠ° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π° появата Π½Π° спСкулативни условия Π½Π° Π½Π°Π΄ΠΏΡ€Π΅Π²Π°Ρ€Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π°Ρ‚ Π΄ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π²Π΅Ρ‡Π΅ освободСни области Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Π°ΠΊΠΎ ΠΏΡ€ΠΎΡ†Π΅ΡΠΎΡ€ΡŠΡ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€Π° разклонСния Π² ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡ‚ΠΎ изпълнява условни ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈ Π·Π° синхронизиранС Π½Π° нишки, ΠΊΠ°Ρ‚ΠΎ mutex ΠΈ spinlock. Π‘ΠΏΠ΅ΠΊΡƒΠ»Π°Ρ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠΈ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ сС случват слСд ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎ ΠΏΡ€Π΅Π΄Π²ΠΈΠΆΠ΄Π°Π½Π΅, сС ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΡΡ‚ ΠΎΡ‚ процСсора, Π½ΠΎ слСдитС ΠΎΡ‚ тяхното изпълнСниС остават Π² кСша Π½Π° процСсора ΠΈ слСд Ρ‚ΠΎΠ²Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° страничния ΠΊΠ°Π½Π°Π».

По аналогия с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° уязвимоститС Π½Π° Spectre v1, Π°Ρ‚Π°ΠΊΠ°Ρ‚Π° GhostRace изисква Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ послСдоватСлности ΠΎΡ‚ инструкции (Π΄ΠΆΠ°Π΄ΠΆΠΈ) Π² ядрото, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ спСкулативно изпълнСниС Π½Π° ΠΊΠΎΠ΄ Π² зависимост ΠΎΡ‚ външни условия, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ повлияни ΠΎΡ‚ атакуващия. Π—Π° Ρ†Π΅Π»ΠΈΡ‚Π΅ Π½Π° оптимизацията ΠΏΡ€ΠΎΡ†Π΅ΡΠΎΡ€ΡŠΡ‚ Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° изпълнява Ρ‚Π°ΠΊΠΈΠ²Π° Π΄ΠΆΠ°Π΄ΠΆΠΈ Π² спСкулативСн Ρ€Π΅ΠΆΠΈΠΌ, Π½ΠΎ слСд Ρ‚ΠΎΠ²Π° опрСдСля, Ρ‡Π΅ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Π°Ρ‚Π° Π·Π° разклоняванС Π½Π΅ Π΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π° ΠΈ Π²Ρ€ΡŠΡ‰Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π΄ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎΡ‚ΠΎ ΠΈΠΌ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅.

Π•Π΄Π½Π° ΠΏΡ€ΠΈΡ‚ΡƒΡ€ΠΊΠ° сС Ρ„ΠΎΡ€ΠΌΠΈΡ€Π° Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ части ΠΎΡ‚ ΠΊΠΎΠ΄, Π² ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ сС провСрява Π² Π±Π΅Π·ΠΊΡ€Π°Π΅Π½ Ρ†ΠΈΠΊΡŠΠ» ΠΈ Ρ†ΠΈΠΊΡŠΠ»ΡŠΡ‚ сС ΠΈΠ·Π»ΠΈΠ·Π° слСд ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ рСсурса. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ инструкции спСкулативно, Π΅ възмоТно Π΄Π° сС постигнС Ρ„Π°Π»ΡˆΠΈΠ²ΠΎ задСйстванС Π½Π° ΠΏΡ€Π΅Ρ…ΠΎΠ΄ ΠΈ изпълнСниС Π½Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ инструкции, Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ΠΈ ΠΎΡ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° рСсурса остава нСосвободСно.

GhostRace - Π°Ρ‚Π°ΠΊΠ° срСщу спСкулативния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° изпълнСниС Π² процСсори Intel, AMD, ARM ΠΈ IBM

ΠŸΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΊΠΎΠ΄Π° Π½Π° ядрото Π½Π° Linux 5.15.83, изслСдоватСлитС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ…Π° 1283 Π΄ΠΆΠ°Π΄ΠΆΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ водят Π΄ΠΎ спСкулативСн Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π²Π΅Ρ‡Π΅ освободСна ΠΏΠ°ΠΌΠ΅Ρ‚ (SCUAF - Speculative Concurrent Use-After-Free). ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π½Π°ΠΏΡ€Π°Π²Π΅Π½Π° Π°Ρ‚Π°ΠΊΠ° срСщу систСми Π·Π° виртуализация, всякакви OS ядра ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, Π² ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈΡ‚Π΅ Π·Π° синхронизиранС Π½Π° нишки сС провСряват с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° условни ΠΈΠ·Ρ€Π°Π·ΠΈ ΠΈ ΠΊΠΎΠ΄ΡŠΡ‚ сС изпълнява Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ позволяват спСкулативно изпълнСниС Π½Π° разклоняващи сС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (x86, ARM, RISC-V, ΠΈ Ρ‚.Π½.).

Π—Π° Π΄Π° сС Π±Π»ΠΎΠΊΠΈΡ€Π° Π°Ρ‚Π°ΠΊΠ°Ρ‚Π°, сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сСриализация Π½Π° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈΡ‚Π΅ Π·Π° синхронизация, Ρ‚.Π΅. добавянС Π½Π° инструкция Π·Π° процСсор LFENCE слСд инструкцията cmpxchq, която провСрява ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° Π·Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π² ядрото Π½Π° Linux Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΠΎΠ½ΠΈΠΆΠ°Π²Π°Π½Π΅ Π½Π° производитСлността ΠΎΡ‚ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ 5% ΠΏΡ€ΠΈ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ° LMBench, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° LFENCE Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° ΠΏΡ€Π΅Π²Π°Π½Ρ‚ΠΈΠ²Π½ΠΎΡ‚ΠΎ изпълнСниС Π½Π° послСдващи инструкции, ΠΏΡ€Π΅Π΄ΠΈ всички ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΄Π° са Π±ΠΈΠ»ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈ.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° ядрото Π½Π° Linux ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈΡ‚Π΅ Π·Π° производство Π½Π° процСсори бяха ΡƒΠ²Π΅Π΄ΠΎΠΌΠ΅Π½ΠΈ Π·Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² края Π½Π° 2023 Π³. AMD ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° Π΄ΠΎΠΊΠ»Π°Π΄ Π·Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° уязвимостта, Π² ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° стандартни Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° срСщу Spectre v1 Π°Ρ‚Π°ΠΊΠΈ. Intel ΠΈ ARM всС ΠΎΡ‰Π΅ Π½Π΅ са ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° ядрото Π½Π° Linux Π½Π΅ Π²ΡŠΠ·Π½Π°ΠΌΠ΅Ρ€ΡΠ²Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ прСдлоТСния ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° сСриализиранС Π½Π° ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΈ Π·Π° синхронизация Π² Π±Π»ΠΈΠ·ΠΊΠΎ Π±ΡŠΠ΄Π΅Ρ‰Π΅ ΠΏΠΎΡ€Π°Π΄ΠΈ Π½Π°ΠΊΠ°Π·Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° производитСлност, Π½ΠΎ Π²Π΅Ρ‡Π΅ са въвСли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ ограничСния Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° срСщу ΡΠ²ΡŠΡ€Π·Π°Π½Π°Ρ‚Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° IPI Storming (Inter-Process Interrupt Storming) ( CVE-2024-26602), ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Сксплойт Π·Π° ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅ Π½Π° процСс Π² точния ΠΌΠΎΠΌΠ΅Π½Ρ‚ (наводняванС Π½Π° ядрото Π½Π° процСсора с ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠΈΡ‚ΠΎ прСдотвратяват Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ Π½Π° ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π±ΠΈΠ» задСйстван, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π΅ изпълняван), Π·Π° Π΄Π° сС осигури Π²Ρ€Π΅ΠΌΠ΅ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ† Π·Π° спСкулативСн Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π²Π΅Ρ‡Π΅ освободСна ΠΏΠ°ΠΌΠ΅Ρ‚.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ ΠΈΠ·Ρ‚ΠΈΡ‡Π°Ρ‰ΠΈΡ‚Π΅ Π΄ΠΆΠ°Π΄ΠΆΠΈ всС ΠΎΡ‰Π΅ Π½Π΅ са ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΈ Π² Ρ…ΠΈΠΏΠ΅Ρ€Π²Π°ΠΉΠ·ΠΎΡ€Π° Π½Π° Xen, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Xen са ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° защитСния Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ LOCK_HARDEN, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° добавСния ΠΏΠΎ-Ρ€Π°Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° Π·Π°Ρ‰ΠΈΡ‚Π° BRANCH_HARDEN. ΠŸΠΎΡ€Π°Π΄ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡ‚ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»Π½ΠΎ Π²ΡŠΠ·Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅ Π²ΡŠΡ€Ρ…Ρƒ производитСлността, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ липсата Π½Π° доказатСлства Π·Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Π°Ρ‚Π°ΠΊΠ° срСщу Xen, Ρ€Π΅ΠΆΠΈΠΌΡŠΡ‚ LOCK_HARDEN Π΅ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€