Intel ΠΎΡ‚ΠΊΡ€ΠΈ ΠΊΠΎΠ΄ Π½Π° систСмата Π·Π° машинно ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ControlFlag Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΊΠΎΠ΄Π°.

Компания Intel прСдстави Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с изслСдоватСлския ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ControlFlag, насочСн към ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° систСма Π·Π° машинно ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, която Π΄Π° повиши качСството Π½Π° ΠΊΠΎΠ΄Π°. ΠŸΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈΡΡ‚ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° инструмСнтариум позволява Π½Π° Π±Π°Π·Π° Π½Π° ΠΌΠΎΠ΄Π΅Π», ΠΎΠ±ΡƒΡ‡Π΅Π½ Π½Π° голям ΠΎΠ±Π΅ΠΌ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ ΠΊΠΎΠ΄, Π΄Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π² ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ тСкстовС, написани Π½Π° високоСзикови Π΅Π·ΠΈΡ†ΠΈ, ΠΊΠ°Ρ‚ΠΎ C/C++. БистСмата Π΅ подходяща Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² ΠΊΠΎΠ΄Π°, ΠΎΡ‚ опрСдСлянС Π½Π° типографски Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΎΡ‚ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π΄ΠΎ открития Π½Π° пропуснати ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° стойността NULL Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ControlFlag Π΅ написан Π½Π° C++ ΠΈ Π΅ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ Π»ΠΈΡ†Π΅Π½Π· MIT.

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

Π—Π° провСрявания ΠΊΠΎΠ΄ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ процСс Π½Π° опрСдСлянС Π½Π° шаблони, ΠΊΠΎΠΈΡ‚ΠΎ сС сравняват с Π΅Ρ‚Π°Π»ΠΎΠ½Π½ΠΎΡ‚ΠΎ Π΄ΡŠΡ€Π²ΠΎ Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π“ΠΎΠ»Π΅ΠΌΠΈΡ‚Π΅ Ρ€Π°Π·Π»ΠΈΠΊΠΈ с Π±Π»ΠΈΠ·ΠΊΠΈΡ‚Π΅ ΠΊΠ»ΠΎΠ½ΠΈ свидСтСлстват Π·Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π° аномалия Π² провСрявания шаблон. БистСмата ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° позволява Π½Π΅ само Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ Π³Ρ€Π΅ΡˆΠΊΠ° Π² шаблона, Π½ΠΎ ΠΈ Π΄Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈ корСкция. НапримСр Π² ΠΊΠΎΠ΄Π° Π½Π° OpenSSL бСшС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π° конструкцията "(s1 == NULL) ∧ (s2 == NULL)", която ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π°ΡˆΠ΅ Π² синтактичното Π΄ΡŠΡ€Π²ΠΎ само 8 ΠΏΡŠΡ‚ΠΈ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΉ-близкият ΠΊΠ»ΠΎΠ½ с "(s1 == NULL) || (s2 == NULL)" сС ΡΡ€Π΅Ρ‰Π°ΡˆΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 7000 ΠΏΡŠΡ‚ΠΈ. БистСмата ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ€Π°Π·ΠΊΡ€ΠΈ аномалия "(s1 == NULL) | (s2 == NULL)", която сС ΡΡ€Π΅Ρ‰Π°ΡˆΠ΅ Π² Π΄ΡŠΡ€Π²ΠΎΡ‚ΠΎ 32 ΠΏΡŠΡ‚ΠΈ.

Intel ΠΎΡ‚ΠΊΡ€ΠΈ ΠΊΠΎΠ΄ Π½Π° систСмата Π·Π° машинно ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ControlFlag Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΊΠΎΠ΄Π°.

ΠŸΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ ΠΊΠΎΠ΄Π° β€žif (x = 7) y = x;β€œ систСмата ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ, Ρ‡Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° β€žifβ€œ Π·Π° сравнСниС Π½Π° числови стойности сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° конструкцията β€žΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° == Ρ‡ΠΈΡΠ»ΠΎβ€œ, Π·Π°Ρ‚ΠΎΠ²Π° с голяма вСроятност ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅Ρ‚ΠΎ β€žΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° = Ρ‡ΠΈΡΠ»ΠΎβ€œ Π² ΠΈΠ·Ρ€Π°Π·Π° β€žifβ€œ Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΎΡ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°. Π’Π°ΠΊΠ°Π²Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π±ΠΈ Π±ΠΈΠ»Π° забСлязана ΠΈ ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ статични Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ, Π½ΠΎ Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ тях ControlFlag Π½Π΅ ΠΏΡ€ΠΈΠ»Π°Π³Π° Π³ΠΎΡ‚ΠΎΠ²ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС прСдвидят всички възмоТни Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ, Π° сС основава Π½Π° статистиката Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½Π°ΠΉ-Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ конструкции Π² голям Π±Ρ€ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ.

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

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

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