Π˜Π½Ρ‚Π΅Π» Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈ ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π° систСмот Π·Π° машинско ΡƒΡ‡Π΅ΡšΠ΅ ControlFlag Π·Π° Π΄Π° Π³ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π° Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚

Π˜Π½Ρ‚Π΅Π» ΠΎΡ‚ΠΊΡ€ΠΈ ΡΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ° ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈ со истраТувачкиот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ControlFlag, Ρ‡ΠΈΡ˜Π° Ρ†Π΅Π» Π΅ создавањС систСм Π·Π° машинско ΡƒΡ‡Π΅ΡšΠ΅ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠ²Π°Π»ΠΈΡ‚Π΅Ρ‚ΠΎΡ‚ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚. ΠšΠΎΠΌΠΏΠ»Π΅Ρ‚ΠΎΡ‚ со Π°Π»Π°Ρ‚ΠΊΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ ΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°, Π²Ρ€Π· основа Π½Π° ΠΌΠΎΠ΄Π΅Π» ΠΎΠ±ΡƒΡ‡Π΅Π½ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠ° ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π° постоСчки ΠΊΠΎΠ΄, Π΄Π° сС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π°Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π²ΠΎ ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΡ‚Π΅ тСкстови напишани Π½Π° Ρ˜Π°Π·ΠΈΡ†ΠΈ Π½Π° високо Π½ΠΈΠ²ΠΎ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ C/C++. БистСмот Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π΅Π½ Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²ΠΈΠ΄ΠΎΠ²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚, ΠΎΠ΄ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π½Π΅Ρ‚ΠΎΡ‡Π½ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ, Π΄ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° NULL врСдности ΠΊΠΎΠΈ нСдостасуваат Π²ΠΎ ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π°Ρ‡ΠΈΡ‚Π΅ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ со ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π°. ΠšΠΎΠ΄ΠΎΡ‚ ControlFlag Π΅ напишан Π²ΠΎ C++ ΠΈ Π΅ со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° MIT.

БистСмот сС ΡƒΡ‡ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡ˜Π½ΠΎ со Π³Ρ€Π°Π΄Π΅ΡšΠ΅ статистички ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΏΠΎΡΡ‚ΠΎΡ˜Π½Π°Ρ‚Π° Π½ΠΈΠ·Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Π½Π° ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ објавСни Π²ΠΎ GitHub ΠΈ слични јавни ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π°. Π’ΠΎ Ρ„Π°Π·Π°Ρ‚Π° Π½Π° ΠΎΠ±ΡƒΠΊΠ°, систСмот ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈ обрасци Π·Π° ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€Π°ΡšΠ΅ структури Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ ΠΈ Π³Ρ€Π°Π΄ΠΈ синтаксичко Π΄Ρ€Π²ΠΎ Π½Π° врски ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΎΠ²ΠΈΠ΅ обрасци, ΠΊΠ°ΠΊΠΎ ΠΎΠ΄Ρ€Π°Π· Π½Π° Ρ‚Π΅ΠΊΠΎΡ‚ Π½Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚ Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°. Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, сС Ρ„ΠΎΡ€ΠΌΠΈΡ€Π° Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ‚Π½ΠΎ стСбло Π·Π° ΠΎΠ΄Π»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅ ΠΊΠΎΠ΅ Π³ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π° искуството Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ Π½Π° ситС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΠΈΠ·Π²ΠΎΡ€Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ.

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

Π˜Π½Ρ‚Π΅Π» Π³ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈ ΠΊΠΎΠ΄ΠΎΡ‚ Π½Π° систСмот Π·Π° машинско ΡƒΡ‡Π΅ΡšΠ΅ ControlFlag Π·Π° Π΄Π° Π³ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π° Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚

Кога сС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΡ‚ ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ‚ β€žΠ°ΠΊΠΎ (x = 7) y = x;β€œ БистСмот ΡƒΡ‚Π²Ρ€Π΄ΠΈ Π΄Π΅ΠΊΠ° ΠΈΠ·Ρ˜Π°Π²Π°Ρ‚Π° β€žΠ°ΠΊΠΎβ€œ ΠΎΠ±ΠΈΡ‡Π½ΠΎ ја користи ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° β€žΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° == Π±Ρ€ΠΎΡ˜β€œ Π·Π° Π΄Π° Π³ΠΈ спорСди Π½ΡƒΠΌΠ΅Ρ€ΠΈΡ‡ΠΊΠΈΡ‚Π΅ врСдности, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° Π΅ Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎΡΡ‚Π° β€žΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° = Π±Ρ€ΠΎΡ˜β€œ Π²ΠΎ ΠΈΠ·Ρ€Π°Π·ΠΎΡ‚ β€žΠ°ΠΊΠΎβ€œ Π΄Π° Π΅ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° ΠΎΠ΄ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°. Π’Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈΡ‚Π΅ статички Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ Π±ΠΈ Ρ„Π°Ρ‚Π΅Π»Π΅ Ρ‚Π°ΠΊΠ²Π° Π³Ρ€Π΅ΡˆΠΊΠ°, Π½ΠΎ Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ Π½ΠΈΠ², ControlFlag Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π° Π³ΠΎΡ‚ΠΎΠ²ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Π²ΠΎ ΠΊΠΎΠΈ Π΅ Ρ‚Π΅ΡˆΠΊΠΎ Π΄Π° сС ΠΎΠ±Π΅Π·Π±Π΅Π΄Π°Ρ‚ ситС ΠΌΠΎΠΆΠ½ΠΈ ΠΎΠΏΡ†ΠΈΠΈ, Ρ‚ΡƒΠΊΡƒ сС заснова Π½Π° статистика Π·Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ структури Π²ΠΎ Π³ΠΎΠ»Π΅ΠΌ Π±Ρ€ΠΎΡ˜. Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ.

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

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€