Название: 19 смертных грехов, угрожающих безопасности программ.
Автор: Ховард М., Лебланк Д., Виега Д.
2006.
Эта книга необходима всем разработчикам программного обеспечения, независимо от платформы, языка или вида приложений. В ней рассмотрены 19 грехов, угрожащих безопасности программ, и показано как от них избавиться. Рассмотрены уязвимости на языках C/C++, C#,Java, Visual Basic, Visual Basic .NET, Perl, Python в операционных системах Windows, Unix, Linux, Mac OS, Novell Netware. Авторы издания, Майкл Ховард и Дэвид Лебланк, обучают программистов как писать безопасный код в компании Microsoft. На различных примерах продемонстрированы как сами ошибки, так и способы их исправления и защиты от них. Если вы - программист, то вам просто необходимо прочесть эту книгу.
В основе теории компьютеров лежит предположение о детерминированном поведении машин. Обычно мы ожидаем, что компьютер будет вести себя так, как мы его запрограммировали. На самом деле это лишь приближенное допущение. Современные компьютеры общего назначения и их программное обеспечение стали настолько сложными, что между щелчком по кнопке мыши и видимым результатом лежит множество программных слоев. И мы вынуждены полагаться на то, что все они работают правильно.
Любой слой программного обеспечения может содержать ошибки, из-за которых оно работает не так, как хотел автор, или, по крайней мере, не соответствует ожиданиям пользователя. Эти ошибки вносят в систему неопределенность, что может приводить к серьезным последствиям с точки зрения безопасности. Проявляться они могут по-разному: от простого краха системы, и тогда ошибку можно использовать, чтобы вызвать отказ от обслуживания, до переполнения буфера, позволяющего противнику выполнить в системе произвольный код.
Содержание
Об авторах
Предисловие
Введение
Грех 1. Переполнение буфера
В чем состоит грех
Подверженные греху языки
Как происходит грехопадение
Греховность C/C++
Выявление ошибки на этапе анализа кода
Родственные грехи
Где искать ошибку
Тестирование
CVE-2002-0842, CVE-2003-0095, CAN-2003-0096
Примеры из реальной жизни
CVE-1999-0042
CVE-2000-0389 – CVE-2000-0392
CAN-2003-0352
Искупление греха
Пользуйтесь строками в стиле C++, а не C
Следите за выделениями памяти
Замена опасных функций работы со строками
Проверьте циклы и доступ к массивам
Дополнительные защитные меры
Пользуйтесь STL-контейнерами вместо статических массивов
Пользуйтесь инструментами анализа
Защита стека
Запрет исполнения в стеке и куче
Грех 2. Ошибки, связанные с форматной строкой
Подверженные греху языки
В чем состоит грех
Как происходит грехопадение
Греховность C/C++
Родственные грехи
Где искать ошибку
Выявление ошибки на этапе анализа кода
Тестирование
CVE-2000-0573
Искупление греха
Примеры из реальной жизни
CVE-2000-0844
Искупление греха в C/C++
Дополнительные защитные меры
Грех 3. Переполнение целых чисел
Как происходит грехопадение
В чем состоит грех
Подверженные греху языки
Греховность C и C++
Поразрядные операции
Греховность C#
Греховность Visual Basic и Visual Basic .NET
Греховность Java
Греховность Perl
Выявление ошибки на этапе анализа кода
C/C++
Где искать ошибку
C#
Visual Basic и Visual Basic .NET
Perl
Тестирование
Примеры из реальной жизни
Java
Переполнение целого в конструкторе объекта SOAPParameter
Ошибка в интерпретаторе Windows Script позволяет выполнить произвольный код
Переполнение кучи в HTR-документе, передаваемом поблочно, может скомпрометировать Web-сервер
Искупление греха
Дополнительные защитные меры
Грех 4. Внедрение SQL-команд
Подверженные греху языки
Греховность С#
Как происходит грехопадение
Греховность Perl/CGI
Греховность Java
Греховность SQL
Родственные грехи
Выявление ошибки на этапе анализа кода
Где искать ошибку
Тестирование
Искупление греха
CAN-2002-0554
CAN-2004-0348
Примеры из реальной жизни
Проверяйте все входные данные
Никогда не применяйте конкатенацию для построения Дополнительные защитные меры
Грех 5. Внедрение команд
В чем состоит грех
Подверженные греху языки
Как происходит грехопадение
Выявление ошибки на этапе анализа кода
Родственные грехи
Примеры из реальной жизни
CAN-2001-1187
CAN-2002-0652
Если проверка не проходит
Дополнительные защитные меры
Грех 6. Пренебрежение обработкой ошибок
Раскрытие излишней информации
Подверженные греху языки
Как происходит грехопадение
Игнорирование ошибок
Неправильная интерпретация ошибок
Обработка не тех исключений, что нужно
Бесполезные возвращаемые значения
Обработка всех исключений
Греховность С/С++
Греховность С/С++ в Windows
Греховность С#, VB.NET и Java
Родственные грехи
Выявление ошибки на этапе анализа кода
Искупление греха в С/С++
Примеры из реальной жизни
CAN-2004-0077 dojnremap в ядре Linux
Искупление греха в С#, VB.NET и Java
Грех 7. Кросс-сайтовые сценарии
Подверженные греху языки
Как происходит грехопадение
Греховное ISAPI-расширение или фильтр на С/С++
Греховность форм ASP.NET
Греховность Perl-модуля CGI.pm
Греховность JSP
Греховность mod-perl
Выявление ошибки на этапе анализа кода
Примеры из реальной жизни
Ошибка при контроле входных данных в сценарии isqlplus, входяшем в состав Oracle HTTP Server, позволяет удаленному пользователю провести атаку с кросс-сайтовым сценарием
Уязвимость IBM Lotus Domino для атаки с кросс-сайтовым сценарием и внедрением HTML
СѴЕ-2002-0840
Искупление греха в JSP
Искупление греха в ASPNET
Искупление греха в ISAPI-расширениях и фильтрах Искупление греха в ASP
Искупление греха в PHP
Искупление греха в Perl/CGI
Искупление греха в mod-perl
Замечание по поводу HTML-кодирования
Грех 8. Пренебрежение защитой сетевого трафика
Подверженные греху языки
Как происходит грехопадение
Родственные грехи
Где искать ошибку
Выявление ошибки на этапе анализа кода
Примеры из реальной жизни
Протоколы электронной почты
Рекомендации низкого уровня
Дополнительные защитные меры
Грех 9. Применение загадочных URL и скрытых. Подверженные греху языки
Как происходит грехопадение
Родственные грехи
Выявление ошибки на этапе анализа кода
Примеры из реальной жизни
CAN-2000-1001
Модификация скрытого поля формы в программе Противник просматривает данные
Противник воспроизводит данные
Противник предсказывает данные
Противник изменяет данные
Дополнительные защитные меры
Грех 10. Неправильное применение SSL и TLS
Подверженные греху языки
Как происходит грехопадение
Родственные грехи
Где искать ошибку
Выявление ошибки на этапе анализа кода
Тестирование
Почтовые клиенты
Примеры из реальной жизни
Web-браузер Safari
SSL-прокси Stunnel
Искупление греха
Выбор версии протокола
Выбор семейства шифров
Проверка сертификата
Проверка имени хоста
Проверка отзыва сертификата
Дополнительные защитные меры
Грех 11. Использование слабых систем на основе паролей
В чем состоит грех
Подверженные греху языки
Как происходит грехопадение
Где искать ошибку
Родственные грехи
Выявление ошибки на этапе анализа кода
Политика управления сложностью пароля
Смена и переустановка пароля
Протоколы проверки паролей
Тестирование
Ввод и хранение паролей
Примеры из реальной жизни
CVE-2005-1505
CVE-2005-0432
Ошибка в TENEX
Кража у Пэрис Хилтон
Многофакторная аутентификация
Искупление греха
Хранение и проверка паролей
Рекомендации по выбору протокола
Рекомендации по переустановке паролей
Рекомендации по выбору пароля
Прочие рекомендации
Дополнительные защитные меры
Грех 12. Пренебрежение безопасным хранением и защитой данных
Подверженные греху языки
В чем состоит грех
Слабый контроль доступа к секретным данным
Как происходит грехопадение
Греховность элементов управления доступом
Встраивание секретных данных в код
Родственные грехи
Где искать ошибку
Тестирование
Выявление ошибки на этапе анализа кода
CVE-1999-0886
Примеры из реальной жизни
CVE-2000-0100
CAN-2002-1590
CAN-2004-0311
Искупление греха
CAN-2004-0391
Использование технологий защиты, предоставляемых операционной системой
Искупление греха в C/C++ для Windows и последующих версий
Искупление греха в C# на платформе .NET Framework 2.0
Искупление греха в ASP.NET версии 1.1 и старше
Искупление греха без помощи операционной системы (или «храните секреты от греха подальше»)
Искупление греха в C/C++ для Mac OS X версии v10.2 и старше
Замечание по поводу Java и Java KeyStore
Дополнительные защитные меры
Грех 13. Утечка информации
В чем состоит грех
Подверженные греху языки
Как происходит грехопадение
Побочные каналы
Слишком много информации!
Модель безопасности информационного потока
Греховность C# (и других языков)
Родственные грехи
Где искать ошибку
Выявление ошибки на этапе анализа кода
Примеры из реальной жизни
Тестирование
Имитация кражи ноутбука
CAN-2005-1411
CAN-2005-1133
Атака с хронометражем Дэна Бернстайна на шифр AES
Искупление греха
Дополнительные защитные меры
Искупление греха в C# (и других языках)
Учет локальности
Грех 14. Некорректный доступ к файлам
Подверженные греху языки
В чем состоит грех
Греховность C/C++ в Windows
Как происходит грехопадение
Греховность Perl
Греховность Python
Греховность C/C++
Родственные грехи
Где искать ошибку
Выявление ошибки на этапе анализа кода
CAN-2005-0004
Примеры из реальной жизни
Тестирование
Искупление греха
CAN-2005-0799
CVE-2004-0115 Microsoft Virtual PC для Macintosh
CAN-2004-0452 и CAN-2004-0448
Искупление греха в Perl
Искупление греха в C/C++ для Unix
Искупление греха в .NET
Искупление греха в C/C++ для Windows
Получение места нахождения временного каталога пользователя
Дополнительные защитные меры
Грех 15. Излишнее доверие к системе разрешения сетевых имен
Подверженные греху языки
Как происходит грехопадение
В чем состоит грех
Родственные грехи
Греховные приложения
Где искать ошибку
Выявление ошибки на этапе анализа кода
Тестирование
Примеры из реальной жизни
CVE-2002-0676
Искупление греха
CVE-1999-0024
Грех 16. Гонки
В чем состоит грех
Подверженные греху языки
Как происходит грехопадение
Греховность кода
Где искать ошибку
Родственные грехи
Выявление ошибки на этапе анализа кода
CVE-2001-1349
Тестирование
Примеры из реальной жизни
CVE-2004-0849
Искупление греха
CAN-2003-1073
Другие ресурсы
Дополнительные защитные меры
Резюме
Грех 17. Неаутентифицированный обмен ключами
В чем состоит грех
Как происходит грехопадение
Подверженные греху языки
Выявление ошибки на этапе анализа кода
Где искать ошибку
Родственные грехи
Примеры из реальной жизни
Тестирование
Атака с «человеком посередине» на Novell Netware
CAN-2004-0155
Искупление греха
Другие ресурсы
Дополнительные защитные меры
Грех 18. Случайные числа криптографического качества
В чем состоит грех
Подверженные греху языки
Как происходит грехопадение
Греховность некриптографических генераторов
Греховность генераторов истинно случайных чисел
Греховность криптографических генераторов
Где искать ошибку
Родственные грехи
Выявление мест, где применяются PRNG-генераторы
Выявление ошибки на этапе анализа кода
Когда следует использовать случайные числа
Тестирование
Правильно ли затравлен CRNG-генератор
Проблемы в OpenSSL
Браузер Netscape
Примеры из реальной жизни
Искупление греха
Windows
Unix
Код для .NET
Java
Дополнительные защитные меры
Повторное воспроизведение потока случайных чисел
Грех 19. Неудобный интерфейс
Подверженные греху языки
В чем состоит грех
Как происходит грехопадение
Каков круг ваших пользователей?
Родственные грехи
Минное поле: показ пользователям информации о безопасности
Тестирование
Выявление ошибки на этапе анализа кода
Где искать ошибку
Примеры из реальной жизни
Аутентификация сертификата в протоколе SSL/TLS
Искупление греха
Установка корневого сертификата в Internet Explorer 4.0
Принимайте за пользователей решения, касающиеся безопасности
Делайте интерфейс пользователя простым и понятным
Упрощайте избирательное ослабление политики безопасности
Ясно описывайте последствия
Помогайте пользователю предпринять действия
Предусматривайте централизованное управление
Приложение A. Соответствие между 19 смертными грехами и «10 ошибками» OWASP
Приложение B. Сводка рекомендаций
Предметный указатель
Купить книгу 19 смертных грехов, угрожающих безопасности программ - Ховард М., Лебланк Д., Виега Д. -
Купить книгу 19 смертных грехов, угрожающих безопасности программ - Ховард М., Лебланк Д., Виега Д.
По кнопкам выше и ниже «Купить бумажную книгу» и по ссылке «Купить» можно купить эту книгу с доставкой по всей России и похожие книги по самой лучшей цене в бумажном виде на сайтах официальных интернет магазинов Лабиринт, Озон, Буквоед, Читай-город, Литрес, My-shop, Book24, Books.ru.
По кнопке «Купить и скачать электронную книгу» можно купить эту книгу в электронном виде в официальном интернет магазине «ЛитРес», и потом ее скачать на сайте Литреса.
По кнопке «Найти похожие материалы на других сайтах» можно найти похожие материалы на других сайтах.
On the buttons above and below you can buy the book in official online stores Labirint, Ozon and others. Also you can search related and similar materials on other sites.
Теги: учебник по программированию :: программирование :: Ховард :: Лебланк :: Виега
Смотрите также учебники, книги и учебные материалы:
- Интернет в Delphi
- VBA для чайников - Камминг С.
- Руководство по PHP, 2006
- Первые шаги в программировании, самоучитель, Ставровский А.Б., Карнаух Т.А.
- Linux - Системное программирование - Лав Р.
- Классика программирования - алгоритмы, языки, автоматы, компиляторы - Мозговой М.В.
- Язык программирования Java - Кен А., Гослинг Д.
- Форматы и алгоритмы сжатия изображений в действии - Миано Д.