Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π°ΡƒΠ΄ΠΈΡ‚Π° бСзопасности Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Boost

Π€ΠΎΠ½Π΄ OSTIF (Open Source Technology Improvement Fund), созданный с Ρ†Π΅Π»ΡŒΡŽ усилСния защищённости ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π°ΡƒΠ΄ΠΈΡ‚Π° бСзопасности Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Boost, примСняСмых Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π½Π° языкС C++. Аудит, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΡ€ΠΎΠ²Π΅Π΄Ρ‘Π½ ΠΏΠΎ Π·Π°ΠΊΠ°Π·Ρƒ OSTIF ΠΈ Amazon Web Services ΠΈΡ‚Π°Π»ΡŒΡΠ½ΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Shielder, выявил 7 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠΉ присвоСн срСдний ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ опасности, Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘ΠΌ — Π½ΠΈΠ·ΠΊΠΈΠΉ, Π΄Π²Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠΉ.

Π˜Π·ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ…ΠΎΠ΄Π΅ Π°ΡƒΠ΄ΠΈΡ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:

  • Boost.Beast
  • Boost.DLL
  • Boost.Date_Time
  • Boost.Filesystem
  • Boost.GIL
  • Boost.Graph
  • Boost.JSON
  • Boost.Program_Options
  • Boost.Regex
  • Boost.String_Algo
  • Boost.URL
  • Boost.UUID

ВыявлСнныС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹:

  • Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Boost.Beast, Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰Π°Ρ подстановку символов Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки (CRLF) Π² HTTP-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ (ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для расщСплСния Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²). ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ присвоСн срСдний ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ опасности.
  • ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Boost.Regex ΠΏΡ€ΠΈ рСкурсивном Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с нСсколькими элСмСнтами end_line Π² рСгулярном Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.
  • ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Boost.Regex ΠΏΡ€ΠΈ рСкурсивном Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с нСсколькими Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΈ объСдинСния.
  • ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Boost.Regex ΠΏΡ€ΠΈ рСкурсивном Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с нСсколькими ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ скобками Π² строкС форматирования.
  • ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Boost.Graph ΠΏΡ€ΠΈ рСкурсивном Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с нСсколькими Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π³Ρ€Π°Ρ„Π°ΠΌΠΈ.
  • Assert-срабатываниС Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ breadth_first_search ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Boost.Graph.
  • НСпСрСхвачСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Boost.DLL.

На основании ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ Π² Ρ…ΠΎΠ΄Π΅ Π°ΡƒΠ΄ΠΈΡ‚Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Boost ΡƒΠΆΠ΅ устранила 4 ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ внСсла 15 ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΉ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΎΡ…Π²Π°Ρ‚Π° ΠΊΠΎΠ΄Π° ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ fuzzing-тСстирования. Пока Π½Π΅ исправлСна ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с расщСплСниСм Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π² Boost.Beast ΠΈ Π½Π΅ ΡƒΡ‡Ρ‚Π΅Π½Ρ‹ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ.

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