Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Ρ…Π°ΠΊΠ΅Ρ€ΠΎΠ² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… сСтСй». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 27

Автор ΠšΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ² Π°Π²Ρ‚ΠΎΡ€ΠΎΠ²

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, послСдний рассматриваСмый способ – тСстированиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Β«Ρ‡Π΅Ρ€Π½ΠΎΠ³ΠΎ ящика». ВСстированиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Β«Ρ‡Π΅Ρ€Π½ΠΎΠ³ΠΎ ящика» позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Π΅Π· выяснСния Π΅Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ устройства. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях тСстированиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ «чСрногоящика» – СдинствСнно Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС, Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… – позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… слСдуСт ΡΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π’ этой Π³Π»Π°Π²Π΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ изучСния уязвимости ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΡ… использования.

Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ исслСдования уязвимости

Поясним простым языком, Ρ‡Ρ‚ΠΎ понимаСтся ΠΏΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ исслСдования уязвимости. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ – это Π½Π΅Ρ‡Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, воспользовался Π»ΠΈ Сю ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚, присутствуСт Π²ΡΡŽΠ΄Ρƒ, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈΠ»ΠΈ ΡΡƒΠΏΠ΅Ρ€ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. ИсслСдованиС – процСсс сбора ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°ΠΊ привСсти, Ρ‚Π°ΠΊ ΠΈ Π½Π΅ привСсти ΠΊ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ уязвимости. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ β€” это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½Ρ‹Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ профСссионалов ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ исслСдования уязвимостСй.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ исслСдования уязвимостСй ΠΏΠΎ своСй сути ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹. Как домашний энтузиаст бСзопасности, Ρ‚Π°ΠΊ ΠΈ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€Ρ‹ бСзопасности Π² повсСднСвной Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π½Π°Π±ΠΎΡ€ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств. Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ примСняСмых срСдств ΡˆΠΈΡ€ΠΎΠΊ: ΠΎΡ‚ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² Π΄ΠΎ дизассСмблСров ΠΊΠΎΠ΄Π°. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ эмпиричСскими, основанными Π½Π° счастливой Π΄ΠΎΠ³Π°Π΄ΠΊΠ΅, Ρ‚Π°ΠΊ ΠΈ Π½Π°ΡƒΡ‡Π½ΠΎ обоснованными Π½Π° основС Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ. НСкоторыС ΠΈΠ· этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ – Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ, строго Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполняСмых ΠΏΡ€ΠΈ исслСдовании дСйствий. Новичок ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅ΡΡ‚ΡŒ послСдниС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π·Π°ΠΊΠ°Π»Π΅Π½Π½Ρ‹Π΅ исслСдоватСли с большим ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ программирования Π² большСй стСпСни ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° свою ΠΈΠ½Ρ‚ΡƒΠΈΡ†ΠΈΡŽ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² кроСтся Π² Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΈ исслСдоватСля.

...

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

Π’ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ обСспСчСния бСзопасности ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ряд схСм исслСдования уязвимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ исслСдования. НСкоторыС ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ пошагового Π°ΡƒΠ΄ΠΈΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ – ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполняСмых дСйствий Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Β«Π±Π΅Π»Ρ‹ΠΉ ΡˆΡƒΠΌΒ».

Π’Ρ‹Π±ΠΎΡ€ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚ΠΈΠ²Π΅Π½ ΠΈ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ опрСдСляСтся прСдпочтСниями исслСдоватСля. Π£ΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ ΠΎ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌ распространСнии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… срСдств опрСдСлСния уязвимостСй ΠΈ Π°ΡƒΠ΄ΠΈΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. НСкоторыС ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎ своим возмоТностям Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ Web CGI ΠΈΠ»ΠΈ SQL Database. Π”Ρ€ΡƒΠ³ΠΈΠ΅, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Bugzilla, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ряд Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ прСкрасный интСрфСйс, Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ошибок ΠΈ ΠΈΡ… отслСТиваниС.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ для Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ исслСдования. Для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… трСбуСтся ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, Ρ‡Π΅ΠΌ для Π°Π½Π°Π»ΠΈΠ·Π° исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ рассмотрим эти Π΄Π²Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°.

Анализ исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Анализ исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ экспСртизу тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ ошибок. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ написана Π½Π° языках C, Perl, Java, C++, ASP, PHP ΠΈ ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ…. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π°ΡƒΠ΄ΠΈΡ‚ исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ начинаСтся с поиска ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ нСбСзопасных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΠ»ΠΈ, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½Ρ‹Ρ… ошибкам.

Поиск ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½Ρ‹Ρ… ошибкам Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Аудит исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ осущСствляСтся Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго это поиск ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ нСбСзопасных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ поиска, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ grep.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка C strcpy ΠΈ sprintf. Π—Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ часто ΠΈΡ… примСняСт, ΠΏΡ‹Ρ‚Π°ΡΡΡŒ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π° ΠΈΠ·-Π·Π° отсутствия ΠΈΠ»ΠΈ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠ³ΠΎ выполнСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ принадлСТности адрСсов Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρƒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… адрСсов памяти. ИспользованиС Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, mktemp, ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ пСрСзаписи Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, содСрТащих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈΠ»ΠΈ ΠΊ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.

ΠŸΠΎΡΡ‚Ρ€ΠΎΡ‡Π½Π°Ρ экспСртиза исходного тСкста

Один ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° исходного тСста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ – построчная экспСртиза ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² соотвСтствии с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ Π΅Π΅ выполнСния. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Богласно этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΎΡ‚ исслСдоватСля трСбуСтся ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² соотвСтствии с гипотСтичСской ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π΅Π΅ выполнСния. ГипотСтичСская ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ выполнСния ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ условия выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, опрСдСляСмыС Π΅Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π₯ΠΎΠ΄ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ прослСТиваСтся исслСдоватСлСм, мыслСнно ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ функциями ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.

Анализ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ

Анализ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ – ΠΌΠ΅Ρ‚ΠΎΠ΄ опрСдСлСния уязвимостСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ примСняСтся, Ссли ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ сообщил ΠΎΠ± уязвимости, Π½Π΅ дСтализируя Π΅Π΅ сути. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° опрСдСляСтся, Π±Ρ‹Π» Π»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, a Ссли Π±Ρ‹Π», Ρ‚ΠΎ Π³Π΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ.

diff – ΠΎΠ΄Π½Π° ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ рассматриваСмый ΠΌΠ΅Ρ‚ΠΎΠ΄. Она поставляСтся с Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ вСрсий ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм UNIX ΠΈ благодаря Π€ΠΎΠ½Π΄Ρƒ свободно распространяСмого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠ³ΠΎ обСспСчСния (Free Software Foundation) Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. diff сравниваСт Π΄Π²Π΅ ΠΊΠΎΠΏΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ различия ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ½Π° позволяСт Π½Π°ΠΉΡ‚ΠΈ различия Π² Π΄Π²ΡƒΡ… исходных Ρ„Π°ΠΉΠ»Π°Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΈΡ… мСстонахоТдСниС.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ примСняСтся для уточнСния сути ΠΈ послСдствий уязвимости, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Π΅Ρ‚Π°Π»ΠΈ. НапримСр, Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… сообщСниях ΠΎΠ± ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния часто содСрТатся Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ обновлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ влияниС Π½Π° ΠΈΡ… Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ продСмонстрировано послСдним сообщСниСм ΠΎΠ± ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ axspawn.

ΠŸΡ€ΠΎ ΠΏΠ°Ρ‚Ρ‡ уязвимости Π±Ρ‹Π»ΠΎ заявлСно, Ρ‡Ρ‚ΠΎ ΠΎΠ½ исправляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π°. ΠŸΡ€ΠΈ этом Π½ΠΈ слова Π½Π΅ Π±Ρ‹Π»ΠΎ сказано ΠΎ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ подробностях. Π”Π΅Ρ‚Π°Π»ΠΈ ΠΏΡ€ΠΎΡΡΠ½ΠΈΠ»ΠΈΡΡŒ послС сравнСния вСрсий 0.2.1 ΠΈ 0.2.1a ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ diff:

[email protected]:~$ diff axspawn-0.2.1/axspawn.c axspawn-

0.2.1a/axspawn.c

491c491

< envc = 0;

–

> envc = 0;

493c493

< sprintf(envp[envc++], β€œAXCALL=%s”, call);

–

> sprintf(envp[envc++], β€œAXCALL=%.22s”, call);

495c495

< sprintf(envp[envc++], β€œCALL=%s”, (char *)user);

–

> sprintf(envp[envc++], β€œCALL=%.24s”, (char

*)user); 497c497

< sprintf(envp[envc++], β€œPROTOCOL=%s”, protocol);

–

> sprintf(envp[envc++], β€œPROTOCOL=%.20s”,

protocol); 500c500

< envp[envc] = NULL;

–

> envp[envc] = NULL;

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ axspawn.c ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ функция sprintf Π±Π΅Π· всяких ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° Π΄Π»ΠΈΠ½Ρƒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠΉ строки Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ – Π²Π²Π΅Π΄Π΅Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π»ΠΈΠ½Ρƒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌΠΎΠΉ строки Π² спСцификации прСобразования. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ°Ρ‚Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ отличия ΠΌΠ΅ΠΆΠ΄Ρƒ двумя вСрсиями ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‡ΠΈ Π²Ρ‹ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм Ρ‚ΠΈΠΏΠ° BSD (BSD – Berkeley Software Design Incorporated – компания-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ FreeBSD. Π’ январС 2002 Π³ΠΎΠ΄Π° Π±Ρ‹Π»Π° Π½Π°ΠΉΠ΄Π΅Π½Π° ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… срСдств ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы FreeBSD. Π”ΠΎ Π΅Π΅ устранСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ…. Π”ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅ Π±Ρ‹Π»Π° всСстороннС ΠΈΠ·ΡƒΡ‡Π΅Π½Π°, ΠΏΠ°Ρ‚Ρ‡ pkg_add сообщал Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ мСстонахоТдСниС уязвимости:

– usr.sbin/pkg_install/lib/pen.c 17 May 2001 12:33:39 -0000

+++ usr.sbin/pkg_install/lib/pen.c 7 Dec 2001 20:58:46 -0000

@@ -106,7 +106,7 @@

cleanup(0);

errx(2, __FUNCTION__ β€œ: can’t mktemp β€œ%s””, pen);

}

– if (chmod(pen, 0755) == FAIL) {

+ if (chmod(pen, 0700) == FAIL) {

cleanup(0);

errx(2, __FUNCTION__ β€œ: can’t mkdir β€œ%s””, pen);

}

УдаляСмая ΠΏΠ°Ρ‚Ρ‡Π΅ΠΌ Ρ‡Π°ΡΡ‚ΡŒ исходного тСкста ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π° Π·Π½Π°ΠΊΠΎΠΌ минус (-), Π° добавляСмая – Π·Π½Π°ΠΊΠΎΠΌ плюс (+). МоТно ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ исходного тСкста, содСрТащая ΠΊΠΎΠ΄ создания Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ 0755, замСняСтся Π½Π° ΠΊΠΎΠ΄, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ 0700.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ исслСдованиС уязвимости Π½Π΅ всСгда Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ простым. Рассмотрим Π°Π½Π°Π»ΠΈΠ· Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Анализ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡƒΠΌ ΠΏΡ€ΠΈ исслСдовании уязвимостСй, β€“ Π°ΡƒΠ΄ΠΈΡ‚ исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π°Π½Π°Π»ΠΈΠ· Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° – СдинствСнно Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска уязвимостСй. Благодаря появлСнию двиТСния Π·Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ исходныС тСксты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° создания свободно распространяСмого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния GNU License ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ исходныС тСксты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ стало Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅. Но Π½Π΅ всС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Π»ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΠΎΠ±ΠΌΠ΅Π½ исходными тСкстами. К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ большая Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ поставляСтся Π±Π΅Π· исходных тСкстов.

Врассировка Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

Один ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² опрСдСлСния ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… уязвимостСй Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² трассировкС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Для трассировки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΉ инструмСнтарий. Для этой Ρ†Π΅Π»ΠΈ Π² систСмС Solaris примСняСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ truss ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Sun. Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ strace для Linux.