ESET_NOD32

19 смертных грехов, угрожающих безопасности программ

19 смертных грехов, угрожающих безопасности программ
Книга в данный момент недоступна
Оценка читателей
3.33

Эта книга необходима всем разработчикам программного обеспечения, независимо от платформы, языка или вида приложений. В ней рассмотрены 19 грехов, угрожающих безопасности программ, и показано, как от них избавиться. Рассмотрены уязвимости на языках C/C++, C#, Java, Visual Basic, Visual Basic.NET, Perl, Python в операционных системах Windows, Unix, Linux, Mac OS, Novell Netware. Авторы издания, Майкл Ховард и Дэвид Лебланк, обучают программистов, как писать безопасный код в компании Microsoft. На различных примерах продемонстрированы как сами ошибки, так и способы их исправления и защиты от них. Если вы программист, то вам просто необходимо прочесть эту книгу.

Читать книгу «19 смертных грехов, угрожающих безопасности программ» очень удобно в нашей онлайн-библиотеке на сайте или в мобильном приложении IOS, Android или Windows. Надеемся, что это произведение придется вам по душе.

Оглавление
  • Об авторах
  • О научных редакторах
  • Предисловие
  • Благодарности
  • Введение
  • Структура книги
  • Кому предназначена эта книга
  • Какие главы следует прочитать
  • Грех 1.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Греховность C/C++
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • CVE–1999–0042
  • CVE–2000–0389 – CVE–2000–0392
  • CVE–2002–0842, CVE–2003–0095, CAN–2003–0096
  • CAN–2003–0352
  • Искупление греха
  • Замена опасных функций работы со строками
  • Следите за выделениями памяти
  • Проверьте циклы и доступ к массивам
  • Пользуйтесь строками в стиле С++, а не С
  • Пользуйтесь STL–контейнерами вместо статических массивов
  • Пользуйтесь инструментами анализа
  • Дополнительные защитные меры
  • Защита стека
  • Запрет исполнения в стеке и куче
  • Другие ресурсы
  • Резюме
  • Грех 2.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Греховность C/C++
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • CVE–2000–0573
  • CVE–2000–0844
  • Искупление греха
  • Искупление греха в C/C++
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 3.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Греховность С и С++
  • Операции приведения
  • Преобразования при вызове операторов
  • Арифметические операции
  • Операции сравнения
  • Поразрядные операции
  • Греховность С#
  • Ключевые слова checked и unchecked
  • Греховность Visual Basic и Visual Basic .NET
  • Греховность Java
  • Греховность Perl
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • C/C++
  • С#
  • Java
  • Visual Basic и Visual Basic .NET
  • Perl
  • Тестирование
  • Примеры из реальной жизни
  • Ошибка в интерпретаторе Windows Script позволяет выполнить произвольный код
  • Переполнение целого в конструкторе объекта SOAPParameter
  • Переполнение кучи в HTR–документе, передаваемом поблочно, может скомпрометировать Web–сервер
  • Искупление греха
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 4.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Греховность С#
  • Греховность PHP
  • Греховность Perl/CGI
  • Греховность Java
  • Греховность SQL
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • CAN–2004–0348
  • CAN–2002–0554
  • Искупление греха
  • Проверяйте все входные данные
  • Никогда не применяйте конкатенацию для построения SQL–предложений
  • Искупление греха в С#
  • Искупление греха в PHP 5.0 и MySQL версии 4.1 и старше
  • Искупление греха в Perl/CGI
  • Искупление греха в Java с использованием JDBC
  • Искупление греха в ColdFusion
  • Искупление греха в SQL
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 5.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • CAN–2001–1187
  • CAN–2002–0652
  • Искупление греха
  • Контроль данных
  • Если проверка не проходит
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 6.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Раскрытие излишней информации
  • Игнорирование ошибок
  • Неправильная интерпретация ошибок
  • Бесполезные возвращаемые значения
  • Обработка не тех исключений, что нужно
  • Обработка всех исключений
  • Греховность C/C++
  • Греховность C/C++ в Windows
  • Греховность С++
  • Греховность C#, VB.NET и Java
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • CAN–2004–0077 do_mremap в ядре Linux
  • Искупление греха
  • Искупление греха в C/C++
  • Искупление греха в C#, VB.NET и Java
  • Другие ресурсы
  • Резюме
  • Грех 7.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Греховное ISAPI–расширение или фильтр на C/C++
  • Греховность ASP
  • Греховность форм ASP. NET
  • Греховность JSP
  • Греховность PHP
  • Греховность Perl–модуля CGI.pm
  • Греховность mod–perl
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • Уязвимость IBM Lotus Domino для атаки с кросс–сайтовым сценарием и внедрением HTML
  • Ошибка при контроле входных данных в сценарии isqlplus, входящем в состав Oracle HTTP Server, позволяет удаленному пользователю провести атаку с кросс–сайтовым сценарием
  • CVE–2002–0840
  • Искупление греха
  • Искупление греха в ISAPI–расширениях и фильтрах на C/C++
  • Искупление греха в ASP
  • Искупление греха в ASP. NET
  • Искупление греха в JSP
  • Искупление греха в PHP
  • Искупление греха в Perl/CGI
  • Искупление греха в mod–perl
  • Замечание по поводу HTML–кодирования
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 8.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • TCP/IP
  • Протоколы электронной почты
  • Протокол E*Trade
  • Искупление греха
  • Рекомендации низкого уровня
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 9.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Загадочные URL
  • Скрытые поля формы
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • CAN–2000–1001
  • Модификация скрытого поля формы в программе MaxWebPortal
  • Искупление греха
  • Противник просматривает данные
  • Противник воспроизводит данные
  • Противник предсказывает данные
  • Противник изменяет данные
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 10.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • Почтовые клиенты
  • Web–браузер Safari
  • SSL–прокси Stunnel
  • Искупление греха
  • Выбор версии протокола
  • Выбор семейства шифров
  • Проверка сертификата
  • Проверка имени хоста
  • Проверка отзыва сертификата
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 11.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Политика управления сложностью пароля
  • Смена и переустановка пароля
  • Протоколы проверки паролей
  • Ввод и хранение паролей
  • Тестирование
  • Примеры из реальной жизни
  • CVE–2005–1505
  • CVE–2005–0432
  • Ошибка в TENEX
  • Кража у Пэрис Хилтон
  • Искупление греха
  • Многофакторная аутентификация
  • Хранение и проверка паролей
  • Рекомендации по выбору протокола
  • Рекомендации по переустановке паролей
  • Рекомендации по выбору пароля
  • Прочие рекомендации
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 12.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Слабый контроль доступа к секретным данным
  • ACL и ограничение прав
  • Греховность элементов управления доступом
  • Встраивание секретных данных в код
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • CVE–2000–0100
  • CAN–2002–1590
  • CVE–1999–0886
  • CAN–2004–0311
  • CAN–2004–0391
  • Искупление греха
  • Использование технологий защиты, предоставляемых операционной системой
  • Искупление греха в C/C++для Windows 2000 и последующих версий
  • Искупление греха bASP.NET версии 1.1 и старше
  • Искупление греха в С# на платформе . NET Framework 2.0
  • Искупление греха в C/C++ для Mac OS X версии v10.2 и старше
  • Искупление греха без помощи операционной системы (или «храните секреты от греха подальше»)
  • Чтение из файловой системы из PHP–сценария в Linux
  • Чтение из файловой системы с помощью ASP.NET (С#)
  • Чтение из файловой системы с помощью ASP (VBScript)
  • Чтение из реестра с помощью ASP.NET (VB.NET)
  • Замечание по поводу Java и Java KeyStore
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 13.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Побочные каналы
  • Слишком много информации!
  • Правильно ли имя пользователя
  • Детальная информация о версии
  • Информация о сетевом хосте
  • Информация о приложении
  • Информация о пути
  • Информация о структуре стека
  • Модель безопасности информационного потока
  • Греховность С# (и других языков)
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Имитация кражи ноутбука
  • Примеры из реальной жизни
  • Атака с хронометражем Дэна Бернстайна на шифр АЕS
  • CAN–2005–1411
  • CAN–2005–1133
  • Искупление греха
  • Искупление греха в С# (и других языках)
  • Учет локальности
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 14.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Греховность C/C++ в Windows
  • Греховность C/C++
  • Греховность Perl
  • Греховность Python
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • CAN–2005–0004
  • CAN–2005–0799
  • CAN–2004–0452 и CAN–2004–0448
  • CVE–2004–0115 Microsoft Virtual PC для Macintosh
  • Искупление греха
  • Искупление греха в Perl
  • Искупление греха в C/C++для Unix
  • Искупление греха в C/C++для Windows
  • Получение места нахождения временного каталога пользователя
  • Искупление греха в .NET
  • С#
  • VB.NET
  • Managed С++
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 15.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Греховные приложения
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • CVE–2002–0676
  • CVE–1999–0024
  • Искупление греха
  • Другие ресурсы
  • Резюме
  • Грех 16.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Греховность кода
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • CVE–2001–1349
  • CAN–2003–1073
  • CVE–2004–0849
  • Искупление греха
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 17.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • Атака с «человеком посередине» на Novell Netware
  • CAN–2004–0155
  • Искупление греха
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 18.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Греховность некриптографических генераторов
  • Греховность криптографических генераторов
  • Греховность генераторов истинно случайных чисел
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Когда следует использовать случайные числа
  • Выявление мест, где применяются PRNG–генераторы
  • Правильно ли затравлен CRNG–генератор
  • Тестирование
  • Примеры из реальной жизни
  • Браузер Netscape
  • Проблемы в OpenSSL
  • Искупление греха
  • Windows
  • Код для .NET
  • Unix
  • Java
  • Повторное воспроизведение потока случайных чисел
  • Дополнительные защитные меры
  • Другие ресурсы
  • Резюме
  • Грех 19.
  • В чем состоит грех
  • Подверженные греху языки
  • Как происходит грехопадение
  • Каков круг ваших пользователей?
  • Минное поле: показ пользователям информации о безопасности
  • Родственные грехи
  • Где искать ошибку
  • Выявление ошибки на этапе анализа кода
  • Тестирование
  • Примеры из реальной жизни
  • Аутентификация сертификата в протоколе SSL/TLS
  • Установка корневого сертификата в Internet Explorer 4.0
  • Искупление греха
  • Делайте интерфейс пользователя простым и понятным
  • Принимайте за пользователей решения, касающиеся безопасности
  • Упрощайте избирательное ослабление политики безопасности
  • Ясно описывайте последствия
  • Помогайте пользователю предпринять действия
  • Предусматривайте централизованное управление
  • Другие ресурсы
  • Резюме
  • Приложения
  • Приложение А.
  • Приложение В.
  • Грех 1.
  • Грех 2.
  • Грех 3.
  • Грех 4.
  • Грех 5.
  • Грех 6.
  • Грех 7.
  • Грех 8.
  • Грех 9.
  • Грех 10.
  • Грех 11.
  • Грех 12.
  • Грех 13.
  • Грех 14.
  • Грех 15.
  • Грех 16.
  • Грех 17.
  • Грех 18.
  • Грех 19.
  • Примечания