ИзданиС ControlFlag 1.0, инструмСнт Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° C

Компания Intel ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π΅Π½ Ρ€Π΅Π»ΠΈΠ· Π½Π° инструмСнтариума ControlFlag 1.0, ΠΊΠΎΠΉΡ‚ΠΎ позволява ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π² ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ тСкстовС, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ систСма Π·Π° машинно ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, ΠΎΠ±ΡƒΡ‡Π΅Π½Π° Π½Π° голям ΠΎΠ±Π΅ΠΌ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ ΠΊΠΎΠ΄. Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ статични Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ, ControlFlag Π½Π΅ ΠΏΡ€ΠΈΠ»Π°Π³Π° Π³ΠΎΡ‚ΠΎΠ²ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Π² ΠΊΠΎΠΈΡ‚ΠΎ Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС прСдвидят всички възмоТни Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΈ, Π° сС ΠΎΠΏΠΈΡ€Π° Π½Π° статистиката Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΈ Π΅Π·ΠΈΠΊΠΎΠ²ΠΈ конструкции Π² ΠΌΠ½ΠΎΠ³ΠΎΠ±Ρ€ΠΎΠΉΠ½ΠΈ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ControlFlag Π΅ написан Π½Π° C++ ΠΈ Π΅ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ лицСнзия MIT.

БистСмата сС ΠΎΠ±ΡƒΡ‡Π°Π²Π° Ρ‡Ρ€Π΅Π· ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° статистичСски ΠΌΠΎΠ΄Π΅Π» Π½Π° наличния масив ΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ Π² GitHub ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ. Π’ Π΅Ρ‚Π°ΠΏΠ° Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ систСмата опрСдСля Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈ шаблони Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° конструкции Π² ΠΊΠΎΠ΄Π° ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° синтактично Π΄ΡŠΡ€Π²ΠΎ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅Π·ΠΈ шаблони, отразяващо ΠΏΠΎΡ‚ΠΎΠΊΠ° Π½Π° изпълнСниС Π½Π° ΠΊΠΎΠ΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°. Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка сС Ρ„ΠΎΡ€ΠΌΠΈΡ€Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΎ Π΄ΡŠΡ€Π²ΠΎ Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, обСдиняващо ΠΎΠΏΠΈΡ‚Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° всички Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ тСкстовС. Π—Π° провСрявания ΠΊΠΎΠ΄ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ процСс Π½Π° опрСдСлянС Π½Π° шаблони, ΠΊΠΎΠΈΡ‚ΠΎ сС сравняват с Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΎΡ‚ΠΎ Π΄ΡŠΡ€Π²ΠΎ Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π“ΠΎΠ»Π΅ΠΌΠΈ Ρ€Π°Π·Π»ΠΈΠΊΠΈ с Π±Π»ΠΈΠ·ΠΊΠΈΡ‚Π΅ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅ свидСтСлстват Π·Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° аномалия Π² провСрявания шаблон.

ИзданиС ControlFlag 1.0, инструмСнт Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΊΠΎΠ΄Π° Π½Π° C

ΠšΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° ControlFlag, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Π΄ΠΎΡ…Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ тСкстовС Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅ OpenSSL ΠΈ cURL:

  • Π’ OpenSSL бяха ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈ Π°Π½ΠΎΠΌΠ°Π»Π½ΠΈ конструкции Β«(s1 == NULL) ∧ (s2 == NULL)Β» ΠΈ Β«(s1 == NULL) | (s2 == NULL)Β», ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‚ Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ използвания шаблон Β«(s1 == NULL) || (s2 == NULL)Β». Π’ ΠΊΠΎΠ΄Π° ΡΡŠΡ‰ΠΎ бяха ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ΠΈ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π² ΠΈΠ·Ρ€Π°Π·ΠΈΡ‚Π΅ Β«(-2 == rv)Β» (ΠΌΠΈΠ½ΡƒΡΡŠΡ‚ бСшС ΠΏΠ΅Ρ‡Π°Ρ‚Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°) ΠΈ Β«BIO_puts(bp, Β«:Β») <= 0)Β» (Π² контСкста Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π·Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° функцията Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° бъдС Β«== 0Β»).
  • Π’ cURL бСшС ΠΎΡ‚ΠΊΡ€ΠΈΡ‚Π° Π³Ρ€Π΅ΡˆΠΊΠ°, нСзабСлязана ΠΎΡ‚ статичнитС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ, ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° ΠΎΡ‚ структурата Β«s->keeponΒ», ΠΊΠΎΠΉΡ‚ΠΎ имашС числов Ρ‚ΠΈΠΏ, Π½ΠΎ сС ΡΡ€Π°Π²Π½ΡΠ²Π°ΡˆΠ΅ с Π±ΡƒΠ»Π΅Π²ΠΎΡ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ TRUE.

ΠžΡ‚ особСноститС Π½Π° вСрсия ControlFlag 1.0 сС отбСлязва ΠΏΡŠΠ»Π½Π°Ρ‚Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ шаблони Π·Π° Π΅Π·ΠΈΠΊΠ° C ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π² условни ΠΈΠ·Ρ€Π°Π·ΠΈ Β«ifΒ». НапримСр, ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ ΠΊΠΎΠ΄Π° Β«if (x = 7) y = x;Β», систСмата Ρ‰Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ, Ρ‡Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«ifΒ» Π·Π° сравнСниС Π½Π° числови стойности сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° конструкцията Β«ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° == число», слСдоватСлно ΡƒΠΊΠ°Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Β«ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° = число» Π² ΠΈΠ·Ρ€Π°Π·Π° Β«ifΒ» вСроятно Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΎ ΠΎΡ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°. Π’ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π° сС прСдоставя сцСнарий, ΠΊΠΎΠΉΡ‚ΠΎ позволява Π΄Π° сС зарСдят Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π² GitHub Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° C ΠΈ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄Π΅Π». Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° са Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ позволяват Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° сС Π·Π°ΠΏΠΎΡ‡Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° ΠΊΠΎΠ΄Π°.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster