ΠžΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ControlFlag 1.0, Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ C

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

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

ΠžΠ±Ρ˜Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° ControlFlag 1.0, Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π°ΡšΠ΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ C

Како ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° моТноститС Π½Π° ControlFlag, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π³ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π° ΠΈΠ·Π²ΠΎΡ€Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅ OpenSSL ΠΈ cURL:

  • Аномални конструкции β€ž(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 ΠΈ моТност Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°ΡšΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π²ΠΎ условнитС ΠΈΠ·Ρ€Π°Π·ΠΈ β€žΠ°ΠΊΠΎβ€œ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π° сС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΡ‚ ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ‚ β€žΠ°ΠΊΠΎ (x = 7) y = x;β€œ БистСмот ќС ΡƒΡ‚Π²Ρ€Π΄ΠΈ Π΄Π΅ΠΊΠ° исказот β€žΠ°ΠΊΠΎβ€œ ΠΎΠ±ΠΈΡ‡Π½ΠΎ ја користи ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° β€žΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° == Π±Ρ€ΠΎΡ˜β€œ Π·Π° Π΄Π° Π³ΠΈ спорСди Π½ΡƒΠΌΠ΅Ρ€ΠΈΡ‡ΠΊΠΈΡ‚Π΅ врСдности, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π³ΠΎΠ»Π΅ΠΌΠ° Π΅ Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎΡΡ‚Π° β€žΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° = Π±Ρ€ΠΎΡ˜β€œ Π²ΠΎ ΠΈΠ·Ρ€Π°Π·ΠΎΡ‚ β€žΠ°ΠΊΠΎβ€œ Π΄Π° Π΅ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° ΠΎΠ΄ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°. ΠšΠΎΠΌΠΏΠ»Π΅Ρ‚ΠΎΡ‚ Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° скрипта ΡˆΡ‚ΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Π³ΠΈ ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Ρ‚Π΅ постоСчкитС ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π° Π½Π° Ρ˜Π°Π·ΠΈΠΊΠΎΡ‚ C Π½Π° GitHub ΠΈ Π΄Π° Π³ΠΈ користитС Π·Π° Π΄Π° Π³ΠΎ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚. Достапни сС ΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡˆΡ‚ΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Π°Ρ‚ вСднаш Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ со ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚.

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

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