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

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

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

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

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

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

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

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

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