С++ и переполнение буфера - Свободное общение - Форумы 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

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

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


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

  • Сообщения

    • PR55.RP55
      + Уточнение по: " при первых запусках после установки драйвера Ф и перезагрузки PC  - uVS не видел процессов запущенного  Firefox ( все файлы в базе проверенных ( если это имеет значение ) " Я говорю о том, что процессов не было в "История процессов и задач..."
    • PR55.RP55
      Demkd По поводу: 5.0.4 На: "uVS v5.0.4v x64 [http://dsrt.dyndns.org:8888]: Windows 7 Home Basic x64 (NT v6.1 SP1) build 7601 Service Pack 1 [C:\WINDOWS] " История процессов и задач... Отобразить цепочку запуска процесса uVS начинает жрать память и... Out of memory. Сжирает все 8гб+файл подкачки и... На компьютере недостаточно памяти ( и да, твик: 39\40 ) на происходящее не влияет ) ----- Второе, при первых запусках после установки драйвера Ф и перезагрузки PC  - uVS не видел процессов запущенного  Firefox ( все файлы в базе проверенных ( если это имеет значение ) Третье: При проверке системы с Live CD Видим следующее: Загружено реестров пользователей: 6
      Анализ автозапуска...
      (!) Переменная окружения TEMP содержит неcуществующий или испорченный путь: %USERPROFILE%\AppData\Local\Temp
      \REGISTRY\MACHINE\rcvscxggb\Environment\TEMP
      --------------------------------------------------------------------------------------------------
      (!) Переменная окружения TMP содержит неcуществующий или испорченный путь: %USERPROFILE%\AppData\Local\Temp
      \REGISTRY\MACHINE\rcvscxggb\Environment\TMP
      --------------------------------------------------------------------------------------------------
      (!) Переменная окружения TEMP содержит неcуществующий или испорченный путь: %USERPROFILE%\AppData\Local\Temp
      \REGISTRY\MACHINE\fnfozvsrt\Environment\TEMP
      --------------------------------------------------------------------------------------------------
      (!) Переменная окружения TMP содержит неcуществующий или испорченный путь: %USERPROFILE%\AppData\Local\Temp
      \REGISTRY\MACHINE\fnfozvsrt\Environment\TMP
      --------------------------------------------------------------------------------------------------
      (!) Переменная окружения TEMP содержит неcуществующий или испорченный путь: %USERPROFILE%\AppData\Local\Temp
      \REGISTRY\MACHINE\rpnrvystm\Environment\TEMP
      --------------------------------------------------------------------------------------------------
      (!) Переменная окружения TMP содержит неcуществующий или испорченный путь: %USERPROFILE%\AppData\Local\Temp
      \REGISTRY\MACHINE\rpnrvystm\Environment\TMP
      --------------------------------------------------------------------------------------------------
      (!) Переменная окружения TEMP содержит неcуществующий или испорченный путь: %USERPROFILE%\AppData\Local\Temp
      \REGISTRY\MACHINE\evikeffmz\Environment\TEMP
      --------------------------------------------------------------------------------------------------
      (!) Переменная окружения TMP содержит неcуществующий или испорченный путь: %USERPROFILE%\AppData\Local\Temp
      \REGISTRY\MACHINE\evikeffmz\Environment\TMP
      --------------------------------------------------------------------------------------------------
      (!) Переменная окружения TEMP содержит неcуществующий или испорченный путь: %USERPROFILE%\AppData\Local\Temp
      \REGISTRY\MACHINE\uvs_default\Environment\TEMP
      --------------------------------------------------------------------------------------------------
      (!) Переменная окружения TMP содержит неcуществующий или испорченный путь: %USERPROFILE%\AppData\Local\Temp
      \REGISTRY\MACHINE\uvs_default\Environment\TMP ------------- Так это в списке Live CD: ;uVS v5.0.4v x64 [http://dsrt.dyndns.org:8888] [Windows 10.0.14393 SP0 ]
      ; Все ПОДОЗРИТ.  | <%TEMP%>
      ПОДОЗРИТ.  | <%TMP%>
      автозапуск | MMDRV.DLL
      автозапуск | MSCORSEC.DLL
      ПОДОЗРИТ.  | E:\USERS\DEFAULT\<%TEMP%>
      ПОДОЗРИТ.  | E:\USERS\DEFAULT\<%TMP%>
      ПОДОЗРИТ.  | E:\USERS\USER\<%TEMP%>
      ПОДОЗРИТ.  | E:\USERS\USER\<%TMP%>
       \DESKTOP\ЗАГРУЗКИ\PASSIST_STANDARD ( РАЗДЕЛЫ ДИСКА )_20251230.1.EXE
      ПОДОЗРИТ.  | E:\WINDOWS\SERVICEPROFILES\LOCALSERVICE\<%TEMP%>
      ПОДОЗРИТ.  | E:\WINDOWS\SERVICEPROFILES\LOCALSERVICE\<%TMP%>
      ПОДОЗРИТ.  | E:\WINDOWS\SERVICEPROFILES\NETWORKSERVICE\<%TEMP%>
      ПОДОЗРИТ.  | E:\WINDOWS\SERVICEPROFILES\NETWORKSERVICE\<%TMP%> ------ Четвёртое, по поводу запуска файлов В старых версиях uVS брал информацию: AppData\Roaming\Microsoft\Windows\Recent судя по всему сейчас этого нет.  
    • demkd
      ---------------------------------------------------------
       5.0.4
      ---------------------------------------------------------
       o Переменные окружения всех пользователей с некорректным содержимым теперь добавляются
         в список как подозрительные объекты со статусом "ПЕРЕМЕННАЯ".
         Удаление такого объекта приведет к удалению переменной пользователя или 
         к восстановлению значения по умолчанию если это системная переменная.  
         Поскольку уже запущенные процессы используют копии переменных потребуется перезагрузка системы.

       o Для процессов с внедренными потоками теперь печатается родитель этого процесса.

       o В лог выводится состояние SecureBoot.

       o В лог выводится версия драйвера Ф.

       o Добавлена интеграция с Ф:
         o История процессов загружается из Ф, а не из журнала Windows.
           Работает и при выключенной опции отслеживания процессов и задач, но если эта опция выключена
           то будет доступна лишь история процессов, но не задач.
           Это может быть полезно в случае когда зловред удаляет свою активность из журнала Windows.
         o Если установлен Ф v2.20 и старше, то в лог выводится список процессов (в т.ч. и уже завершенных)
           внедрявших потоки в чужие процессы, такие процессы получают статус "ПОДОЗРИТЕЛЬНЫЙ" и новый статус "ИНЖЕКТОР".

       o В меню запуска добавлена опция "Установить драйвер Ф".
         Версия драйвера: v2.20 mini - это урезанный драйвер бесплатной версии Ф.
         В отличии от драйвера в Ф эта версия не имеет региональных ограничений. 
         Драйвер ведет историю запуска процессов и внедрения потоков в чужие процессы.
         Дополнительно осуществляется защита ключа драйвера в реестре и самого файла драйвера.
         Остальной функционал удален.
         Драйвер устанавливается под случайным именем.
         Удалить драйвер можно будет в том же меню запуска, после установки/удаления требуется перезагрузка системы.
         (!) Для установки драйвера Ф потребуется выключить SecureBoot в BIOS-е.
         (!) Установка драйвера возможна лишь в 64-х битных системах начиная с Win7.
         (!) После установки драйвера система перейдет в тестовый режим из-за включения опции Testsigning.
         (!) При удалении драйвера запрашивается разрешение на отключение опции Testsigning.
         (!) Если эта опция изначально была включена и пользователь использует самоподписанные драйвера
         (!) то это опцию НЕ следует выключать, иначе система может уже и не загрузиться.

       o В меню "Запуск" и в меню удаленной системы добавлен пункт "Свойства системы".

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

       
    • PR55.RP55
      Возможно, что-то в открытом коде будет полезного и для uVS https://www.comss.ru/page.php?id=19320
    • Ego Dekker
      Домашние антивирусы для Windows были обновлены до версии 19.0.14.
×