- •5.1. Передумови виникнення вразливостей у комп'ютерних системах
- •5.2. Класифікація вад захисту
- •5.2.1. Класифікація вад захисту за причиною їх появи
- •5.2.2. Класифікація вад захисту за їх розміщенням у системі
- •5.2.3. Класифікація вад захисту за етапами їх появи
- •5.3. Класифікація помилок, що виникають у процесі програмної реалізації системи
- •5.4. Помилки переповнення буфера
- •5.4.1. Переповнення буфера у стеку
- •5.4.2. Переповнення буфера у статичній або динамічній пам'яті
- •5.4.3. Помилка переповнення в один байт
- •5.5. Помилки оброблення текстових рядків
- •5.5.1. Використання конвеєра
- •5.5.2. Переспрямування введення-виведення
- •5.5.3. Спеціальні символи
- •5.6. Люки
- •5.6.1. Режим debug у програмі sendmail
5.5.2. Переспрямування введення-виведення
Переспрямування введення-виведення даних покладено в основу більш досконалих механізмів, на кшталт конвеєрів. Типова конструкція переспрямування введення-виведення має такий вигляд:
< file
Якщо в текстове поле ввести file, то програмі буде передано ім'я файлу, а якщо < file — його вміст. Права доступу до такого файлу визначаються не правами користувача, який вводить цю конструкцію, а правами програми (або того користувача, від імені якого вона діє). Як і в ситуації з конвеєром, рекомендують проводити тестування поведінки програмних продуктів після введення таких конструкцій у будь-які поля введення.
5.5.3. Спеціальні символи
Широке поняття «спеціальні символи» у цьому підрозділі буде розглянуто відносно використання таких символів у специфікаціях або шаблонах імен файлів. Здебільшого проблеми, пов'язані з неправильним використанням спеціальних символів, створюють не програмісти, а користувачі. Утім наслідки таких помилок можуть бути досить серйозними.
З огляду на це ще раз нагадаємо всім відомі угоди щодо побудови шаблонів імен файлів, які діють у командних інтерпретаторах різних ОС.
Багато помилок оброблення рядків знаходили у серверах різних мережних протоколів. Наведемо приклади неправильного оброблення спеціальних символів. Зауважимо, що веб-адреси в наведених далі прикладах — лише ілюстрації, які жодним чином не стосуються реальних ресурсів в Інтернеті.
Існувала відома помилка — після додавання символу крапки до URL сценарію замість результату його роботи відображався вихідний текст цього сценарію [15].
Використання замість символу крапки його шістнадцяткового подання (%2е) давало той самий результат.
Потім (в інших серверах) абсолютно аналогічну помилку було знайдено після додавання до URL шістнадцяткового подання символу пробілу (%20).
Використавши в URL додатковий символ скісної риски (/), можна обійти обмеження доступу до каталогу (http://www.target.eom//top__secret/index.html).
В деяких серверах використання посилання на батьківський каталог (..) давало можливість вийти за межі частини файлової системи, відведеної для доступу з Інтернету (http://www.target.com/../).
Наведений перелік не є повним. І хоча всі зазначені помилки вже давно виправлено, не можна гарантувати, що помилки такого типу в подальшому ніколи не виникатимуть.
5.6. Люки
Як уже зазначалося, люки (або «чорні ходи») — це недокументовані функції програмного забезпечення, які дають змогу здійснювати проникнення в систему. Програмісти можуть впроваджувати люки задля тестування та налагодження програм, а потім залишати їх у кінцевому продукті через неуважність або з метою подальшого використання ресурсів систем чи збирання інформації. Безумовно, виявлення люків у програмних продуктах завдає шкоди репутації розробника, тому їх не залишають або ретельно приховують. Крім того, люки можуть впроваджувати спеціально розроблені шкідливі програмні засоби (віруси, «троянські коні») або зловмисники в результаті атаки.
У цьому розділі ми розглядаємо помилки програмного забезпечення, тому згадаємо лише ті люки, які вважають ненавмисно впровадженими. У наступному розділі, присвяченому шкідливому програмному забезпеченню, йтиметься про люки, які впроваджують навмисно.
