Безопасность сетевых протоколов ЗАРАЗА Спецвыпуск: Хакер, номер #058, стр. 058-084-7 3. Ошибки реализации сетевых протоколов в клиентских приложениях Хотя это и могло бы быть вкусным, мы не будем подробно разбирать уязвимости конкретных реализаций. На момент написания статьи в базе уязвимостей (www.security.nnov.ru) 577 клиентских ошибок (более 10%). Назовем только наиболее распространенные проблемы: - Переполнение буфера, ошибки форматной строки, целочисленные переполнения. Ошибки, связанные с плохим стилем программирования. Очень часто возникают при разборе клиента ответа на команду или даже при просто длинном приветственном сообщении сервера. - Манипуляция данными. Сюда можно отнести проблемы межсайтового скриптинга или подмены содержимого в браузерах и почтовых программах. Подобные ошибки, как правило, связаны с плохим дизайном программы. - Отказ в обслуживании. Возникает при разборе сложных или нестандартных данных и может привести к зависанию приложения (вечным циклам) или краху. Чаще всего возникает из-за невозможности обработать исключительные или граничные ситуации. - Недостаточная проверка данных. Например, недостаточная проверка пути доверия сертификата или обратный путь в каталогах, при котором серверное приложение может управлять тем, в какую папку попадет файл, загруженный клиентом. - Утечка информации. Клиент передает данные о себе системе, в которой оно работает, или пользователю. И передает больше, чем нужно. Пора делать выводы Необходимо учитывать многие аспекты безопасности клиентских приложений: безопасность используемого протокола передачи данных, безопасность выбранного метода аутентификации и шифрования, качество кода клиентского приложения. Любое обращение клиентского приложения на сервер связано с некоторым обменом данных. Эти данные могут быть "хорошими" или "плохими", о чем очень часто забывают разработчики. <<220 mailserver.domain.example Microsoft ESMTP MAIL Service, Version: 6.0.3790.1 830 ready at Thu, 14 Jul 2005 00:21:38 +0400 >>EHLO ME <<250- mailserver.domain.example Hello [172.22.22.227] <<250-TURN <<250-SIZE <<250-ETRN <<250-PIPELINING <<250-DSN <<250-ENHANCEDSTATUSCODES <<250-8bitmime <<250-BINARYMIME <<250-CHUNKING <<250-VRFY <<250-X-EXPS GSSAPI NTLM LOGIN <<250-X-EXPS=LOGIN <<250-AUTH GSSAPI NTLM LOGIN <<250-AUTH=LOGIN <<250-XEXCH50 <<250 OK Дырки в клиентском приложении могут возникнуть из-за настроек по умолчанию - из-за выбранного протокола или стандарта. FTP изначально не был ориентирован на клиента, поэтому наряду с мнимым удобством привнес и множество проблем. Чем сложнее протокол, тем выше вероятность наличия бреши в нем. Нужно только найти. Некоторые клиентские приложения выбирают протокол аутентификации на автомате. Можно склонить пользователя к выбору более пробиваемого протокола - вплоть до открытого текста :). На сайте www.security.nnov.ru есть база данных, в которой собраны практически все известные уязвимости. Досадное недоразумение Mozilla Firefox - www.security.nnov.ru/Fnews19.html. |