Об авторах | 24 |
|
Предисловие | 26 |
|
Благодарности | 30 |
|
Введение | 32 |
Кому и зачем следует читать эту книгу | 34 |
|
Часть I. ГРЕХИ ВЕБ-ПРИЛОЖЕНИЙ |
|
Грех 1. Внедрение SQL | 37 |
|
Общие сведения | 37 |
Ссылки CWE | 39 |
Потенциально опасные языки | 39 |
Объяснение | 39 |
Пара слов по поводу LINQ | 40 |
С# | 40 |
PHP | 41 |
Perl/CGI | 41 |
Python | 42 |
Ruby on Rails | 42 |
Java и JDBC | 42 |
C/C++ | 43 |
SQL | 44 |
Сопутствующие грехи | 45 |
Признаки греха | 46 |
Выявление в ходе анализа кода | 46 |
Приёмы тестирования для обнаружения гpexa | 47 |
Примеры | 49 |
CVE-2006-4953 | 50 |
CVE-2006-4592 | 50 |
Путь к искуплению | 51 |
Проверка всего ввода | 51 |
Использование подготовленных команд для построения команд SQL | 51 |
С# | 52 |
РНР 5.0/MySQL 4 1 и выше | 52 |
Perl/CGI | 53 |
Python | 53 |
Java с JDBC | 54 |
ColdFusion | 55 |
SQL | 55 |
Использование QUOTENAME и REPLACE | 56 |
Стоит ли использовать DВMS_ASSERT? | 56 |
Использование CAT.NET | 56 |
Дополнительные меры безопасности | 57 |
Шифрование конфиденциальных и личных данных | 57 |
Использование URLScan | 57 |
Другие ресурсы | 58 |
Итоги | 59 |
|
Грех 2. Уязвимости, связанные с веб-серверами (XSS, XSRF и |
расщепление ответа) | 60 |
|
Общие сведения | 60 |
Ссылки СWE | 61 |
Потенциально опасные языки | 62 |
Объяснение | 62 |
Атаки XSS на базе DOM (тип 0) | 62 |
Отражённые атаки XSS, несохраняемые атаки XSS (тип 1) | 62 |
Сохраняемые атаки XSS, долгосрочные атаки XSS (тип 2) | 65 |
Расщепление ответа HTTP | 66 |
Межсайтовая фальсификация запросов | 67 |
Ruby on Rails (XSS) | 68 |
Ruby on Rails (расщепление ответа) 68 |
Приложение CGI, написанное на Python (XSS) | 69 |
Приложение CGI, написанное на Python (расщепление ответа) | 69 |
ColdFusion (XSS) | 69 |
C/C++ ISAPI (XSS) | 69 |
C/C++ ISAPI (расщепление ответа) | 70 |
ASP (XSS) | 70 |
ASP (расщепление ответа) | 70 |
Формы ASP.NET (XSS) | 70 |
ASP.NET (расщепление ответа) | 70 |
JSP (XSS) | 71 |
JSP (расщепление ответа) | 71 |
PHP (XSS) | 71 |
PHP (расщепление ответа) | 71 |
CGI/Perl (XSS) | 71 |
mod_perl (XSS) | 72 |
mod_perl (расщепление ответа) | 72 |
Запросы HTTP (XSRF) | 72 |
Признаки греха | 72 |
Выявление в ходе анализа кода 73 |
Выявление дефектов XSRF в ходе анализа кода | 74 |
Приёмы тестирования для обнаружения греха | 74 |
Примеры | 75 |
СVE-2003-0712 Microsoft Exchange 5.5 Outlook Web Access XSS | 75 |
CVE-2004-0203 Microsoft Exchange 5.5 Outlook Web Access |
расщепление ответа | 76 |
CVE-2005-1674 Help Center Live (XSS и XSRF) | 76 |
Путь к искуплению (XSS и расщепление ответа) | 76 |
Ruby on Rails (XSS) | 77 |
ISAPI C/C++ (XSS) | 77 |
Python (XSS) | 78 |
ASP (XSS) | 78 |
ASP.NET Web Forms (XSS) | 79 |
ASP.NET Web Forms (RS) | 79 |
JSP (XSS) | 80 |
PHP (XSS) | 82 |
CGI (XSS) | 82 |
mod_perl (XSS) | 83 |
Путь к искуплению (XSRF) | 83 |
По поводу тайм-аута | 83 |
По поводу POST/GET | 84 |
Ruby on Rails (XSRF) | 84 |
ASP.NET Web Forms (XSRF) | 84 |
Умеренное использование защитного кодирования HTML | 85 |
Дополнительные защитные меры | 86 |
Cookie с пометкой HttpOnly | 86 |
Заключение свойств тегов в кавычки | 86 |
Свойство ASP.NET ViewStateUserKey | 86 |
Параметр ASP.NET Validate Request | 87 |
ASP.NET Security Runtime Engine | 87 |
OWASP CSRFGuard | 87 |
Apache::TaintRequest | 87 |
UrlScan | 87 |
Выбор кодировки по умолчанию | 88 |
Другие ресурсы | 88 |
Итоги | 89 |
|
Грех 3. Уязвимости, связанные с веб-клиентами (XSS) | 91 |
|
Общие сведения | 91 |
Ссылки CWE | 93 |
Потенциально опасные языки | 93 |
Объяснение | 93 |
Уязвимые гаджеты и конфиденциальность | 94 |
JavaScript и HTML | 95 |
Признаки греха | 95 |
Выявление в ходе анализа кода | 96 |
Приёмы тестирования для обнаружения греха | 96 |
Примеры | 97 |
Microsoft ISA Server XSS CVE-2003-0526 | 97 |
Windows Vista Sidebar CVE-2007-3033 и CVE-2007-3032 | 97 |
Yahoo! Instant Messenger ActiveX Control CVE-2007-4515 | 98 |
Путь к искуплению | 98 |
He используйте непроверенные входные данные | 98 |
Замена небезопасных конструкций | 99 |
Дополнительные защитные меры | 100 |
Другие ресурсы | 100 |
Итоги | 100 |
|
Грех 4. «Волшебные URL», предсказуемые cookie и скрытые поля форм | 102 |
|
Общие сведения | 102 |
Ссылки СWE | 103 |
Потенциально опасные языки | 103 |
Объяснение | 103 |
Волшебные URL | 103 |
Предсказуемые cookie | 104 |
Скрытые поля форм | 104 |
Сопутствующие грехи | 104 |
Признаки греха | 104 |
Выявление в ходе анализа кода | 105 |
Приёмы тестирования для обнаружения греха | 106 |
Примеры 107 |
CVE-2005-1784 | 107 |
Путь к искуплению | 107 |
Атакующий просматривает данные | 107 |
Атакующий воспроизводит данные | 108 |
Атакующий угадывает данные | 109 |
Атакующий изменяет данные | 110 |
Дополнительные меры безопасности | 111 |
Другие ресурсы | 111 |
Итоги | 111 |
|
Часть II. ГРЕХИ РЕАЛИЗАЦИИ |
|
Грех 5. Переполнение буфера | 115 |
|
Ссылки СWE | 116 |
Потенциально опасные языки | 117 |
Объяснение | 118 |
64-разрядные аспекты | 121 |
C/C++ | 122 |
Сопутствующие грехи | 124 |
Признаки греха | 125 |
Выявление в ходе анализа кода | 125 |
Приёмы тестирования для обнаружения греха | 126 |
Примеры | 127 |
CVE-1999-0042 | 127 |
CVE-2000-0389-CVE-2000-0392 | 127 |
CVE-2002-0842, CVE-2003-0095, CAN-2003-0096 | 128 |
AN-2003-0352 | 128 |
Путь к искуплению | 129 |
Замена опасных функций для работы со строками | 129 |
Контроль за выделением памяти | 129 |
Проверка циклов и обращений к массивам | 130 |
Замена строковых буферов С строками C++ | 130 |
Замена статических массивов контейнерами STL | 130 |
Использование средств анализа | 130 |
Дополнительные защитные меры | 131 |
Защита стека | 131 |
Неисполняемый стек и куча | 132 |
Другие ресурсы | 132 |
Итоги | 133 |
|
Грех 6. Дефекты форматных строк | 134 |
|
Общие сведения | 134 |
Ссылки CWE | 135 |
Потенциально опасные языки | 135 |
Объяснение | 135 |
C/C++ | 138 |
Сопутствующие грехи | 139 |
Признаки греха | 139 |
Выявление в ходе анализа кода | 139 |
Приёмы тестирования для обнаружения греха | 140 |
Примеры | 140 |
CVE-2000-0573 | 140 |
CVE-2000-0844 | 140 |
Путь к искуплению | 141 |
C/C++ | 141 |
Дополнительные меры безопасности | 142 |
Другие ресурсы | 142 |
Итоги | 142 |
|
Грех 7. Целочисленные переполнения | 134 |
|
Общие сведения | 143 |
Ссылки CWE | 144 |
Потенциально опасные языки | 144 |
Объяснение | 144 |
C/C++ | 145 |
Операции преобразования | 145 |
Преобразования операторов | 147 |
Операции сравнения | 150 |
Двоичные операции | 150 |
Проблемы 64-разрядного портирования | 150 |
Опасные оптимизации | 152 |
С# | 152 |
Ключевые слова checked и unchecked | 153 |
Visual Basic и Visual Basic .NET | 154 |
Java | 155 |
Perl | 155 |
Признаки греха | 156 |
Выявление в ходе анализа кода | 156 |
C/C++ | 157 |
С# | 159 |
Java | 159 |
Visual Basic и Visual Basic .NET | 159 |
Perl | 160 |
Приёмы тестирования для обнаружения греха | 160 |
Примеры | 160 |
Множественные целочисленные переполнения в SearchKit API |
для Apple Mac OS X | 160 |
Целочисленное переполнение в Google Android SDK | 161 |
Выполнение произвольного кода через дефект |
в Windows Script Engine | 161 |
Переполнение буфера в куче HTR | 161 |
Путь к искуплению | 162 |
Вспомните математику | 162 |
Не изощряйтесь | 162 |
Запись преобразований типов | 163 |
Используйте SafeInt | 164 |
Дополнительные меры безопасности | 165 |
Другие ресурсы | 166 |
Итоги | 166 |
|
Грех 8. Катастрофы C++ | 187 |
|
Общие сведения | 167 |
Ссылки CWE | 168 |
Потенциально опасные языки | 168 |
Объяснение | 169 |
Вызовы delete | 169 |
Копирующие конструкторы | 170 |
Уязвимые конструкторы | 171 |
Отсутствие повторной инициализации | 172 |
Неумение использовать STL | 172 |
Инициализация указателей | 173 |
Признаки греха | 173 |
Выявление в ходе анализа кода | 174 |
Приёмы тестирования для обнаружения греха | 174 |
Примеры | 174 |
CVE-2008-1754 | 174 |
Путь к искуплению | 175 |
Несоответствие между new и delete | 175 |
Копирующий конструктор | 175 |
Инициализация в конструкторе | 176 |
Повторная инициализация | 176 |
STL | 177 |
Неинициализированные указатели | 177 |
Дополнительные меры безопасности | 177 |
Другие ресурсы | 178 |
Итоги | 178 |
|
Грех 9. Обработка исключений | 178 |
|
Общие сведения | 179 |
Ссылки CWE | 179 |
Потенциально опасные языки | 180 |
Объяснение | 180 |
Исключения C++ | 180 |
Уязвимости структурированной обработки исключений | 183 |
Обработка сигналов | 185 |
С#, VB.NET и Java | 185 |
Ruby | 186 |
Признаки греха | 186 |
Выявление в ходе анализа кода | 187 |
Приёмы тестирования для обнаружения греха | 188 |
Примеры | 188 |
CVE-2007-0038 | 188 |
Путь к искуплению | 188 |
C++ | 188 |
SEH | 189 |
Обработчики сигналов | 189 |
Другие ресурсы | 190 |
Итоги | 190 |
|
Грех 10. Внедрение команд | 181 |
|
Общие сведения | 191 |
Ссылки CWE | 192 |
Потенциально опасные языки | 192 |
Объяснение | 192 |
Сопутствующие грехи | 194 |
Признаки греха | 194 |
Выявление в ходе анализа кода | 194 |
Приёмы тестирования для обнаружения греха | 196 |
Примеры | 197 |
CAN-2001-1187 | 197 |
CAN-2002-0652 | 197 |
Путь к искуплению | 198 |
Проверка данных | 198 |
Если данные не прошли проверку | 201 |
Дополнительные защитные меры | 201 |
Другие ресурсы | 202 |
Итоги | 202 |
|
Грех 11. Некорректная обработка ошибок | 181 |
|
Общие сведения | 203 |
Ссылки CWE | 204 |
Потенциально опасные языки | 204 |
Объяснение | 204 |
Предоставление лишней информации | 204 |
Игнорирование ошибок | 204 |
Неверная интерпретация ошибок | 205 |
Бесполезные возвращаемые значения | 206 |
Возвращение допустимых значений в случае ошибки | 206 |
C/C++ | 206 |
C/C++ для Windows | 207 |
Сопутствующие грехи | 208 |
Признаки греха | 208 |
Выявление в ходе анализа кода | 208 |
Приёмы тестирования для обнаружения греха | 208 |
Примеры | 208 |
CVE-2007-3798 tcpdump print-bgp.c: уязвимость переполнения буфера | 208 |
CVE-2004-0077 ядро Linux: do_mremap | 208 |
Путь к искуплению | 209 |
C/C++ | 209 |
C/C++ при использовании Microsoft Visual C++ | 209 |
Другие ресурсы | 210 |
Итоги | 210 |
|
Грех 12. Утечка информации | 211 |
|
Общие сведения | 211 |
Ссылки CWE | 212 |
Потенциально опасные языки | 212 |
Объяснение | 212 |
Побочные каналы | 213 |
Временные каналы | 213 |
Избыток информации | 214 |
Подробная информация версии | 214 |
Информация о сетевых хостах | 215 |
Информация о приложениях | 215 |
Информация о пути | 216 |
Информация о структуре стека | 216 |
Модель безопасности передачи информации | 216 |
С# (и любой другой язык) | 218 |
Сопутствующие грехи | 218 |
Признаки греха | 219 |
Выявление в ходе анализа кода | 219 |
Приёмы тестирования для обнаружения греха | 220 |
Сценарий «украденного ноутбука» | 220 |
Примеры | 221 |
CVE-2008-4638 | 221 |
CVE-2005-1133 | 221 |
Путь к искуплению | 221 |
С# (и другие языки) | 222 |
Локальные адреса | 223 |
Дополнительные меры безопасности | 223 |
Другие ресурсы | 224 |
Итоги | 225 |
|
Грех 13. Ситуация гонки | 22В |
|
Ссылки CWE | 227 |
Потенциально опасные языки | 227 |
Объяснение | 227 |
Язык С | 229 |
Сопутствующие грехи | 230 |
Признаки греха | 230 |
Выявление в ходе анализа кода | 231 |
Приёмы тестирования для обнаружения греха | 232 |
Примеры | 232 |
CVE-2008-0379 | 232 |
CVE-2008-2958 | 233 |
CVE-2001-1349 | 233 |
CAN-2003-1073 | 233 |
CVE-2000-0849 | 233 |
Путь к искуплению | 234 |
Дополнительные меры безопасности | 236 |
Другие ресурсы | 236 |
Итоги | 236 |
|
Грех 14. Слабое юзабилити | 237 |
|
Общие сведения | 237 |
Ссылки CWE | 238 |
Потенциально опасные языки | 238 |
Объяснение | 238 |
Представления о пользователях | 239 |
Минное поле: вывод информации о безопасности для пользователей | 240 |
Сопутствующие грехи | 241 |
Признаки греха | 241 |
Выявление в ходе анализа кода | 241 |
Приёмы тестирования для обнаружения греха | 242 |
Примеры | 242 |
Проверка подлинности сертификатов SSL/TLS | 242 |
Установка корневых сертификатов в Internet Explorer 4.0 | 243 |
Путь к искуплению | 244 |
Пользовательский интерфейс должен быть простым и понятным | 244 |
Принимайте решения безопасности за пользователей | 244 |
Не только кнут, но и пряник | 245 |
Упростите избирательное смягчение политики безопасности | 246 |
Чётко описывайте последствия | 247 |
Предоставьте возможность действовать | 248 |
Предоставьте централизованное управление | 248 |
Другие ресурсы | 248 |
Итоги | 249 |
|
Грех 15. Трудности с обновлением | 260 |
|
Общие сведения | 250 |
Ссылки CWE | 251 |
Потенциально опасные языки | 251 |
Объяснение | 251 |
Установка дополнительных программ | 251 |
Управление доступом | 251 |
Раздражающие напоминания | 252 |
Нехватка информации | 252 |
Обновление без оповещения | 252 |
Децентрализованное обновление | 252 |
Принудительная перезагрузка | 252 |
Слишком сложное обновление | 253 |
Отсутствие плана восстановления | 253 |
Доверие к DNS | 253 |
Доверие к серверу обновлений | 253 |
Цифровые подписи обновлений | 253 |
Распаковка обновлений | 254 |
Установка на пользовательском уровне | 254 |
Признаки греха | 254 |
Выявление греха в ходе анализа кода | 255 |
Приёмы тестирования для обнаружения греха | 255 |
Примеры | 255 |
Обновление Apple QuickTime | 255 |
Исправления Microsoft SQL Server 2000 | 256 |
Браузер Google Chrome | 256 |
Путь к искуплению | 256 |
Отказ от установки дополнительных программ | 256 |
Управление доступом | 256 |
Раздражающие напоминания | 257 |
Отсутствие информации | 257 |
Обновление без оповещения | 257 |
Децентрализованное обновление | 257 |
Принудительная перезагрузка | 258 |
Слишком сложное обновление | 258 |
Отсутствие плана восстановления | 259 |
Доверие к DNS | 259 |
Доверие к серверу обновлений | 259 |
Цифровые подписи обновлений | 260 |
Распаковка обновлений | 260 |
Установка на пользовательском уровне | 260 |
Дополнительные меры безопасности | 261 |
Другие ресурсы | 261 |
Итоги | 261 |
|
Грех 16. Выполнение кода с завышенными привилегиями | 262 |
|
Общие сведения | 262 |
Ссылки CWE | 263 |
Потенциально опасные языки | 263 |
Объяснение | 263 |
Сопутствующие грехи | 264 |
Признаки греха | 265 |
Выявление в ходе анализа кода | 265 |
Приёмы тестирования для обнаружения греха | 265 |
Примеры | 266 |
Путь к искуплению | 266 |
Windows, С и C++ | 267 |
Linux, BSD и Mac OS X | 269 |
Код .NET | 270 |
Дополнительные меры безопасности | 270 |
Другие ресурсы | 270 |
Итоги | 270 |
|
Грех 17. Хранение незащищённых данных | 271 |
|
Общие сведения | 271 |
Ссылки CWE | 272 |
Потенциально опасные языки | 272 |
Объяснение | 272 |
Слабое управление доступом к хранимым данным | 272 |
Списки ACL системы Windows | 273 |
Модель разрешений UNIX | 273 |
Управление доступом | 274 |
Отсутствие ограничений доступа | 276 |
Слабое шифрование хранимых данных | 276 |
Сопутствующие грехи | 277 |
Признаки греха | 277 |
Выявление в ходе анализа кода | 278 |
Приёмы тестирования для обнаружения греха | 278 |
Примеры | 279 |
CVE-2000-0100 | 280 |
CVE-2005-1411 | 280 |
CVE-2004-0907 | 280 |
Путь к искуплению | 280 |
C++ для Windows | 281 |
С# для Windows | 282 |
C/C++ (GNOME) | 282 |
Дополнительные меры безопасности | 283 |
Другие ресурсы | 283 |
Итоги | 283 |
|
Грех 18. Дефекты мобильного кода | 284 |
|
Общие сведения | 284 |
Ссылки CWE | 286 |
Потенциально опасные языки | 286 |
Объяснение | 286 |
Мобильный код | 287 |
Контейнеры мобильного кода | 287 |
Сопутствующие грехи | 287 |
Признаки греха | 288 |
Выявление в ходе анализа кода | 288 |
Приёмы тестирования для обнаружения греха | 289 |
Примеры | 289 |
CVE-2006-2198 | 289 |
CVE-2008-1472 | 290 |
CVE-2008-5697 | 290 |
Путь к искуплению | 290 |
Контейнеры мобильного кода | 290 |
Мобильный код | 292 |
Дополнительные меры безопасности | 292 |
Другие ресурсы | 292 |
Итоги | 293 |
|
Часть III. КРИПТОГРАФИЧЕСКИЕ ГРЕХИ |
|
Грех 19. Слабые пароли | 2S7 |
|
Общие сведения | 297 |
Ссылки CWE | 298 |
Потенциально опасные языки | 298 |
Объяснение | 298 |
Разглашение паролей | 299 |
Слабые пароли | 299 |
Серийные пароли | 300 |
Неограниченный срок действия пароля | 300 |
Пароли по умолчанию | 300 |
Атаки повторного воспроизведения | 300 |
Хранение паролей вместо хеш-кодов | 301 |
Атаки методом «грубой силы» против хеш-кодов паролей | 301 |
Разглашение информации о причине отказа | 302 |
Атаки реального времени | 302 |
Восстановление забытого пароля | 303 |
Сопутствующие грехи | 303 |
Признаки греха | 303 |
Разглашение паролей | 303 |
Слабые пароли | 303 |
Серийные пароли | 303 |
Неограниченный срок действия пароля | 304 |
Пароли по умолчанию | 304 |
Атаки повторного воспроизведения | 304 |
Атаки методом «грубой силы» | 304 |
Хранение паролей вместо хеш-кодов | 305 |
Атаки реального времени | 305 |
Возвращение забытого пароля вместо сброса | 305 |
Признаки греха | 305 |
Приёмы тестирования для обнаружения греха | 306 |
Разглашение паролей | 306 |
Атаки повторного воспроизведения | 306 |
Атаки методом «грубой силы» | 306 |
Примеры | 307 |
Впереди зомби! | 307 |
Пароль для изменения файлов Microsoft Office | 307 |
Шифрование в Adobe Acrobat | 308 |
Аварийные ядра WU-ftpd | 308 |
CVE-2005-1505 | 308 |
CVE-2005-0432 | 309 |
Ошибка TENEX | 309 |
Взлом электронной почты Сары Пэйлин | 309 |
Путь к искуплению | 309 |
Разглашение пароля | 310 |
Слабые пароли | 310 |
Серийные пароли | 310 |
Изменение паролей | 310 |
Пароли по умолчанию | 311 |
Атаки повторного воспроизведения | 311 |
Проверка пароля | 311 |
Атаки реального времени методом «грубой силы» | 312 |
Утечка информации о регистрационных данных | 313 |
Забытый пароль | 313 |
Дополнительные меры безопасности | 313 |
Другие ресурсы | 314 |
Итоги | 314 |
|
Грех 20. Слабые случайные числа | 31В |
|
Ссылки CWE | 316 |
Потенциально опасные языки | 317 |
Объяснение | 317 |
He-криптографические генераторы | 318 |
Криптографические генераторы | 318 |
Чистые генераторы случайных чисел | 319 |
Сопутствующие грехи | 320 |
Признаки греха | 320 |
Выявление греха в ходе анализа кода | 321 |
Поиск мест для использования случайных чисел | 321 |
Поиск мест использования ГПСЧ | 321 |
Проверка правильности инициализации КГСЧ | 322 |
Приёмы тестирования для обнаружения греха | 323 |
Примеры | 323 |
Порядковые номера TCP/IP | 323 |
Стандарт шифрования документов ODF | 323 |
CVE-2008-0166: Генерирование «случайного» ключа в Debian | 325 |
Браузер Netscape | 325 |
Путь к искуплению | 325 |
Windows, С и C++ | 325 |
Windows с поддержкой ТРМ (Trusted Platform Module) | 326 |
Код для .NET | 327 |
UNIX | 327 |
Java | 328 |
Повторное воспроизведение числовых потоков | 329 |
Дополнительные меры безопасности | 329 |
Другие ресурсы | 330 |
Итоги | 330 |
|
Грех 21. Неудачный выбор криптографии | 382 |
|
Общие сведения | 332 |
Ссылки CWE | 333 |
Потенциально опасные языки | 333 |
Объяснение | 333 |
Доморощенные криптографические решения | 333 |
Создание протоколов на базе низкоуровневых алгоритмов там, |
где достаточно высокоуровневых протоколов | 334 |
Использование слабых криптографических примитивов | 334 |
Неправильное использование криптографических примитивов | 335 |
Неправильный выбор криптографических примитивов | 338 |
Неправильный выбор коммуникационных протоколов | 338 |
Отсутствие затравки | 338 |
Отсутствие случайного вектора инициализации | 338 |
Слабые функции установления ключа | 339 |
Отсутствие проверки целостности | 339 |
Отсутствие гибкого шифрования | 340 |
Сопутствующие грехи | 340 |
Признаки греха | 340 |
Выявление греха в ходе анализа кода | 341 |
Доморощенные криптографические решения (VB.NET и C++) | 341 |
Создание протоколов на базе низкоуровневых алгоритмов там, |
где достаточно высокоуровневых протоколов | 342 |
Использование слабых криптографических примитивов (С# и C++) | 342 |
Неправильное использование криптографических примитивов |
(Ruby, C# и C++) | 342 |
Неправильный выбор криптографических примитивов | 343 |
Неправильный выбор коммуникационных протоколов | 343 |
Приёмы тестирования для обнаружения греха | 343 |
Примеры | 343 |
Цифровые сертификаты и слабые хеши | 343 |
Маскировка XOR в Microsoft Office | 344 |
Adobe Acrobat и слабая KDF в Microsoft Office | 344 |
Путь к искуплению | 345 |
Доморощенные криптографические решения | 345 |
Создание протоколов на базе низкоуровневых алгоритмов там, |
где достаточно высокоуровневых протоколов | 345 |
Неправильный выбор криптографических примитивов | 345 |
Неправильное использование криптографических примитивов | 345 |
Конкатенация | 346 |
Неверный выбор криптографических примитивов | 347 |
Отсутствие затравки | 347 |
Отсутствие случайного вектора инициализации | 347 |
Слабые функции установления ключа | 348 |
Отсутствие проверки целостности | 348 |
Отсутствие гибкого шифрования | 349 |
Неправильный выбор коммуникационных протоколов | 349 |
Дополнительные меры безопасности | 350 |
Другие ресурсы | 350 |
Итоги | 350 |
|
Часть IV. СЕТЕВЫЕ ГРЕХИ |
|
Грех 22. Незащищённый сетевой трафик | 355 |
|
Общие сведения | 355 |
Ссылки CWE | 356 |
Потенциально опасные языки | 356 |
Объяснение | 356 |
Сопутствующие грехи | 360 |
Признаки греха | 361 |
Выявление греха в ходе анализа кода | 361 |
Приемы тестирования для обнаружения греха | 361 |
Примеры | 362 |
TCP/IP | 362 |
Протоколы электронной почты | 363 |
E*TRADE | 363 |
Путь к искуплению | 363 |
Дополнительные меры безопасности | 364 |
Другие ресурсы | 364 |
Итоги | 364 |
|
Грех 23. Неправильное использование PKI (и особенно SSL) | 366 |
|
Общие сведения | 366 |
Ссылки CWE | 367 |
Потенциально опасные языки | 368 |
Объяснение | 368 |
Сопутствующие грехи | 369 |
Признаки греха | 369 |
Выявление греха в ходе анализа кода | 369 |
Приёмы тестирования для обнаружения греха | 371 |
Примеры | 372 |
CVE-2007-4680 | 372 |
CVE-2008-2420 | 372 |
Путь к искуплению | 372 |
Проверка действительности сертификата | 373 |
Проверка имени хоста | 374 |
Проверка отзыва сертификата | 375 |
Иногда некоторые проверки PKI можно не использовать | 376 |
Дополнительные меры безопасности | 376 |
Другие ресурсы | 376 |
Итоги | 377 |
|
Грех 24. Доверие к механизму разрешения сетевых имён | 378 |
|
Общие сведения | 378 |
Ссылки CWE | 379 |
Потенциально опасные языки | 379 |
Объяснение | 379 |
Грех в приложениях | 382 |
Сопутствующие грехи | 383 |
Признаки греха | 383 |
Выявление греха в ходе анализа кода | 384 |
Приёмы тестирования для обнаружения греха | 384 |
Примеры | 385 |
CVE-2002-0676 | 385 |
CVE-1999-0024 | 385 |
Путь к искуплению | 386 |
Другие ресурсы | 387 |
Итоги | 387 |
|
Алфавитный указатель | 388 |