С++ и переполнение буфера - Свободное общение - Форумы Anti-Malware.ru Перейти к содержанию
Deja_Vu

С++ и переполнение буфера

Recommended Posts

Deja_Vu
странный вывод.

настолько же странный как и этот: Сергей Ильин признал всеобщую опасность языка С++ - с помощью него можно шпионить за пользователями...

В принципе так оно и есть, пока пишут софт на С++, будут существовать уязвимости в этом ПО по переполнению буфера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dr_dizel
Насколько я в курсе, последние версии компилляторов Visual C++ умеют автоматически обнаруживать такие проблемы.

...

Особенно мне понравилось, как автор статьи пытался всё же сознательно допустить переполнение буфера:

Не вижу в ваших суждениях логики.

Готовый софт обычно компилируется в релизной версии, а не отладочной. В релизной находят и эксплуатируют уязвимости.

Как видно отладочная версия Visual C++ позволяет находить ожидаемые ошибки и проблемы в работе самого софта, а в релизной версии все эти проверки снимаются. Считайте что их нет.

Если автору удалось реализовать атаку на релизной версии, то это говорит о полной бесплезности средств Visual C++ (значит даже банальных маркеров стека нет).

Так что, насколько вижу, если программировать на C++, зная об этой проблеме, то довольно просто её избежать - все средства для этого сейчас есть.

Да-да-да. Все программисты на С[++] собрались ночью на перекрёстке и поклялись ценой жизни избегать переполнений буферов. :lol:

Средства-то есть, но как показывает практика и статистика - мало когда используются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy
Не вижу в ваших суждениях логики.

Готовый софт обычно компилируется в релизной версии, а не отладочной.

По логике вещей сначала должна происходить компилляция в отладочной версии, и если проблемы в ней не обнаруживаются, тогда уже этот же исходный код компилируется в релизной версии. Так должно быть. Конечно, многие пренебрегают всеми возможностями, которые предоставляет компиллятор, но виноват в этом не C++ и не компиллятор.

Вы не могли бы назвать известные Вам госорганы, использующие МСВС по прямому назначению?

http://ru.wikipedia.org/wiki/МСВС - изучайте :)

И это был всего лишь пример.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
4rward

Всем привет.Да какая разница с++ или нет .В любом софте рано или поздно будут обнаружены недоработки.Вопрос в том-насколько оперативно или ,в идеале,превентивно устранят ошибки.

По поводу интервью: во многом согласен с ИД,у человека вцелом правильный взгляд на вещи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dr_dizel
По логике вещей сначала должна происходить компилляция в отладочной версии, и если проблемы в ней не обнаруживаются, тогда уже этот же исходный код компилируется в релизной версии. Так должно быть.

Валерий, вы же эксперт портала и являетесь одним из представителей его профессионализма . Вы даже прочитали целую статью на тему переполнения стека! Прочитали, но ничего не поняли и ещё учите форумчан жить. Это такой фирменный стиль представителей Dr.Web? :lol:

Проблемы в отладочной версии могут возникнуть только если уязвимость будет применена разработчиком или на основе автоматического поиска паттернов. Вы сами должны понимать, что это так сказать мало вероятно. Поэтому защита должна работать в рантайме в релизной версии, но это как видно в Visual C++ не так. Поэтому ваши умозаключения неверны.

Да, есть специальные средства защиты, но они либо стоят денег либо не востребованы разработчиками из-за фазы луны. Со времён червя Морриса ничего особо не изменилось, а это было в 1988 году... :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy
только если уязвимость будет применена разработчиком

Не понял.

Вы даже прочитали целую статью на тему переполнения стека!

Если честно, не читал, но просмотрел. И увидел, что подавляющее большинство потенциальных проблем с переполнением буфера можно учесть на этапе написания кода. Конечно, 100%-ой гарантии это не даёт, но, судя по количеству обнаруживаемых уязвимостей, программисты не знают или знают, но не используют даже то знание, что описано в этой статье. Конечно, она далеко не претендует на полноту исследования данного вопроса.

Я лишь хотел сказать, что "плохому программисту мешает компиллятор" (с) :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
p2u

@ dr_dizel

На день Пасхи можно было чуть помягче, без наездов на личность, нет? Ничего однозначного нет. Ссылаться на 'экспертность' или 'не-экспертность' никогда не оправдано - это может восприниматься как отсутствие реальных аргументов. Именно поэтому, и без обид, я попросил бы вас немного отредактировать ваше сообщение. Спасибо.

Paul

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dr_dizel
На день Пасхи можно было чуть помягче, без наездов на личность, нет?

Причём тут Пасха? Кесарю кесарево.

Если бы та тематика переполнения была под авторством, например, Агента, то я бы мог проигнорировать такое излияние. Но Валерий является экспертом портала и представителем АВ на форуме. Разве это позволяет автоматически ему писать всякую ерунду с умным слогом? А аргументы я привожу.

Так что, насколько вижу, если программировать на C++, зная об этой проблеме, то довольно просто её избежать - все средства для этого сейчас есть.

С 1988 года все программируют, зная об этом и что? Весь эшелон разработчиков софта, библиотек, ОС сразу стали экспертами в сфере безопасного программирования и постоянно думают о переполнении?

Не понял.

Жаль.

Для того чтобы отловить уязвимость - она должна проявиться в процессе отладки. Но обычно уязвимость - это нестандартная ситуация, которая не может возникнуть при штатной работе любой скомпилированности. Иногда уязвимости можно отловить (юни)тестами, анализом исходников или просто случайно. Но это может не дать ничего. Всёгда что-то остаётся. На вашем же багтрекере разработчики требуют шаги воспроизведения бага не просто так. Они сами не могут дойти что и где не так, в хорошо известном им софте.

Если честно, не читал, но просмотрел. И увидел, что подавляющее большинство потенциальных проблем с переполнением буфера можно учесть на этапе написания кода. Конечно, 100%-ой гарантии это не даёт, но, судя по количеству обнаруживаемых уязвимостей, программисты не знают или знают, но не используют даже то знание, что описано в этой статье. Конечно, она далеко не претендует на полноту исследования данного вопроса.
"Мы все учились понемногу чему-нибудь и как-нибудь"? Но вы же эксперт портала. А эксперт = специалист. А вы даже не подготовились к уроку, высказываете ошибочное мнение и не хотите признать, что ошибаетесь.

Проблема же переполнения в языке и библиотеках. Код пишут разные люди с разной квалификацией используя чужие наработки и библиотеки. Это вавилонская башня.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy

dr_dizel, если так ставить вопрос, как Вы написали в последнем сообщении, то я согласен.

А по поводу экспертства и отношения к компании - на соответствующей странице АМ можно узнать, в чём я эксперт на этом портале. С продуктами компании "Доктор Веб" я знаком достаточно хорошо и довольно продолжительное время.

Также, являясь сотрудником компании, я не являюсь разработчиком продуктов. У меня совершенно другие задачи.

Программирование же для меня - это больше хобби. Если не считать разработку и программирование математических методов и алгоритмов.

Да, я могу не всё знать о переполнении буферов. Возможно, Вы об этом знаете больше. Но я не думаю всё же, что эта проблема нерешаемая. Как Вы уже сказали, средства для этого есть. Просто разработчики подобным проблемам уделяют подчас недостаточно внимания. Иногда сознательно, иногда неосознанно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dr_dizel
Программирование же для меня - это больше хобби.

Если не считать разработку и программирование математических методов и алгоритмов.

Да, я могу не всё знать о переполнении буферов.

Хороший повод почитать статьи по сабжу и восполнить пробел, раз уж вы начали дискутировать на эту тему, не правда ли? ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy
Хороший повод почитать статьи по сабжу и восполнить пробел, раз уж вы начали дискутировать на эту тему, не правда ли? wink.gif

Ну, если только Вы запишетесь на учебные курсы по нашим продуктам и узнаете, наконец, куда встроен Dr.Web Shield и что это такое. А то вот так вот получается:

http://www.anti-malware.ru/forum/index.php...ost&p=58592 ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dr_dizel
Ну, если только Вы запишетесь на учебные курсы по нашим продуктам и узнаете, наконец, куда встроен Dr.Web Shield и что это такое.

Хороший ответ. Главное по сабжу. :lol:

Да мне не по барабану почему из-за глюков вэба спайдер не запускался и выдавал сообщения о невозможности загрузить "Shiled Lite" (а не "Shield Lite" :rolleyes: ), что намекало на попытку грузить облегчённую версию шилда. ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Valery Ledovskoy
Да мне не по барабану почему из-за глюков вэба спайдер не запускался и выдавал сообщения о невозможности загрузить "Shiled Lite"

Вообще-то так запускался в бете Scanning Engine. В релизе этой ошибки уже не было.

Хороший ответ. Главное по сабжу. laugh.gif

Так мы и не в серьёзном разделе ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  • Сообщения

    • demkd
      Да есть такой баг, выбор целого диска не предусмотрел.
    • PR55.RP55
      Сейчас попробовал добавить файлы и... E:\ [Error: 0x3 - The system cannot find the path specified. ] т.е. Файл > Добавить в список >  Все исполняемые файлы каталога. или пишет вышеуказанную ошибку или вешается. Это и на Win 7 и на Win 10 и с HDD дисками и с USB Диски нормально открываются т.е. доступны.
    • demkd
      А ничего с этим не сделать старые версии windows проблемные там система сама балуется внедрением потоков при очень низком уровне защиты системных процессов, а эцп вообще ничего не гарантирует когда речь заходит о внедренных потоках, зловред вполне может внедрить поток в системный процесс как с помощью подкинутой в правильное место "легитимной" dll, так и просто создав его, а тот уже в свою очередь внедрить в следующий системный и ищи концы среди вот этого вот всего.
      Все это усугубляется тем что тот же SVCHOST.EXE который был когда запущен может оказаться совсем не системным, хотя путь у него будет правильным как и файл будет иметь валидную эцп и запущен он будет якобы services.exe, в 10ке такое провернуть уже сложнее, а вот 7ке легко, потому урезать лог по принципу "оба файла имеют эцп" никак нельзя.
    • PR55.RP55
      uVS v5.0.6v x64 [http://dsrt.dyndns.org:8888]: Windows 7 Home Basic x64 (NT v6.1 SP1) build 7601 Service Pack 1 [C:\WINDOWS] (!) ПРЕДУПРЕЖДЕНИЕ: Ф зафиксировал внедрение потока C:\WINDOWS\SYSTEM32\SERVICES.EXE [428] внедрил поток [380] в процесс: C:\WINDOWS\SYSTEM32\SVCHOST.EXE [876]   C:\WINDOWS\SYSTEM32\SVCHOST.EXE [1060] внедрил поток [1276] в процесс: C:\WINDOWS\SYSTEM32\SVCHOST.EXE [336] и т.д.  А есть ли смысл выводить в лог десяток - другой аналогичных записей, если все эти файлы  в базе проверенных и у них легальная цифровая?  
    • demkd
      ---------------------------------------------------------
       5.0.6
      ---------------------------------------------------------
       o Добавлено 4 новых ключа автозапуска в список для проверки.

       o Добавлен новый статус "UWP".
         Его получают пакеты приложений универсальной платформы Windows (Universal Windows Platform Apps).

       o Добавлен новый твик #46: Отключить Windows Terminal и очистить реестр.
         Если Windows Terminal активен, в лог выдается предупреждение.
         При обнаружении подозрительных настроек Windows Terminal в конфигурационных файлах, реестре или в каталогах с фрагментами в лог выводится предупреждение.
         Если подозрительная строка найдена в JSON-файле настроек, то в список автозапуска добавляется этот файл с содержимым со статусом "подозрительный".
         В любом случае рекомендуется отключить Windows Terminal, а еще лучше немедленно удалить это из системы.
         Windows Terminal — крайне уязвимый и неоптимизированный кусок кода.

       o Улучшена функция масштабирования удаленного рабочего стола, повышено качество аппаратного апскейла, добавлен параметр "Резкость".
         (Требуется D2D и DX11 на клиентском компьютере)

       o Исправлена старая ошибка в функции отправки ответов серверной части uVS.
         Из-за ошибки в редких случаях могло происходить подвисание серверной и клиентской частей uVS при работе с удаленной системой.

       o Исправлена ошибка в функции завершения серверной части при выходе из удаленной системы.

       o Оптимизирована функция подключения к удаленной системе.

       o Оптимизирована функция сжатия фреймов для DDAL/DDAw режимов: шрифты теперь не теряют яркость, а картинка DDAL практически неотличима от DDA1/DDA2 на глаз, 
         при этом размер сжатого фрейма вырос лишь незначительно.

       o Добавлена x64 версия report_crash.

       o Обновалена функция сбора дампа при падении uVS, функция перенесена в утилиту report_crash, что позволит
         получить максимально точную информацию о произошедшей ошибке.

       o Временно добавлена аппаратная функция обнаружения разрушения списка автозапуска в памяти uVS, что позволит отлавливать сложные в обнаружении ошибки.
         Есть 5 дампов, по которым не удалось выяснить точное место ошибки и эта функция должна помочь найти проблемное место.
         Функция снижает скорость формирования списка на ~5% на современных процессорах.

       o Исправлена ошибка в функции подсчета удаленных ключей реестра.

       o Исправлена ошибка в функции записи параметров при выходе из uVS.

       o Исправлена ошибка разбора JSON-файлов.

       o Исправлена ошибка проверки переменных окружения загруженного пользователя.

       o Из списка доступных для подключения IP-адресов удалены адреса активных VPN.

       
×