Перейти к содержанию
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
      В категории установленные программы необходимо добавить распределение по типу программ. ( актуальных для темы лечения ) Браузеры Антивирусы VPN - Сервисы Порой у некоторых пользователей установлено буквально по 200 программ и сидеть  искать установлен ли браузер или антивирус - или VPN, удалён ли он или от него остались в системе хвосты...  
    • demkd
      ничего нового ---------------------------------------------------------
       4.99.5
      ---------------------------------------------------------
       o Добавлен новый режим запуска для работы с неактивной системой без необходимости загрузки с флешки или диска.
         Начиная с Windows 8 доступна интеграция uVS в меню дополнительных параметров загрузки для
         запуска uVS из штатной среды восстановления Windows (WinRE) для работы с _неактивной_ системой.

         Интеграция осуществляется нажатием кнопки "Интегрировать uVS в меню дополнительных параметров загрузки".
         Загрузиться в меню можно с помощью кнопки "Перезагрузить систему в меню дополнительных параметров загрузки",
         после появления меню выберите:
         Поиск и устранение неисправностей/Диагностика/Troubleshoot(зависит от версии и региона Windows) --> uVS

         В отличии от dclone, uVS уже не получится разместить в образе WinRE, просто не хватит места на диске,
         поэтому запуск uVS происходит из каталога запуска процесса интеграции, т.е. при обновлении версии uVS
         не нужно повторно выполнять интеграцию, достаточно обновить uVS в каталоге из которого была произведена интеграция.
         В пути до uVS допустимо использовать кириллицу, даже если WinRE не имеет поддержки русского языка.
         При запуске из меню дополнительно производится инициализация сети в WinRE, т.е. будет доступна сеть
         для проверки файлов на VT, проверки сертификатов или для предоставления доступа удаленному пользователю к "рабочему столу".

       o Разовый доступ к рабочему столу доступен в WinRE/WinPЕ если в нем была инициализирована сеть,
         если образ сделан в uVS или загрузка была через интегрированный пункт в меню то сеть инициализируется при старте системы
         автоматически, однако поддержки uPNP в WinRE по умолчанию нет, поэтому для подключения к "рабочему столу" WinPE
         следует использовать обратное подключение к клиенту с белым адресом. (если подключение будет через интернет).
         (!) В WinRE/PE доступен только один режим захвата экрана - GDI, передача экрана нормально работает в WinRE/PE на базе
         (!) Win8/Win8.1/Win11, в Win11 и WinPE на его базе необходим включенный режим BLT, в противном случае консольные окна не отображаются.
         (!) Как минимум часть версий WinPE на базе Win10 дефектные (все x86), при работе с ним не отображаются консольные окна и есть проблемы
         (!) с отрисовкой окон и без удаленного доступа.
         (!) Аналогичная проблема наблюдается в WinRE для устаревших билдов Win10, для новых билдов Win10 проблемы нет.
         (!) В некоторых случаях окно uVS может оказаться за меню загрузки, в этом случае используйте Alt+Tab для переключения окон.

       o Добавлены новые модули:
         o файл rein/rein.x64 отвечает за запуск uVS из меню.
         o файл usvc.x64 отвечает за запуск uVS под LocalSystem.
         o встроенный ресурс getcpb отвечает за получение файлов из пользовательского буфера обмена при запуске под LocalSystem.

       o В окно лога подключения к удаленному рабочему столу добавлены кнопки для быстрого доступа к настройкам системы,
         запуску uVS и файлового менеджера.

       o Добавлена поддержка создания загрузочных образов дисков на базе WinPE+ADK v10.1.26100.2454 (декабрь 2024).
         (!) для создания 32-х битного WinPE или WinPE с поддержкой старого железа этот ADK не годится.
         (!) для создания 32-х битных образов используйте ADK для Windows 10 2004. (см. подробнее в FAQ.txt)

       o Улучшена функция создания загрузочных дисков.
         ISO стал мультизагрузочным с поддержкой UEFI, ISO теперь создается в UDF формате,
         т.е. загрузка с диска будет работать и на старом компьютере без UEFI и на новом с UEFI.
         Образ диска теперь занимает немного меньше места за счет дополнительно оптимизации содержимого UDF ISO.
         Добавлена проверка на разметку флешки, допустимая разметка MBR, GPT не поддерживается.
         (!) Загрузочная флешка всегда форматируется в FAT32, вся информация на флешке будет удалена,
         (!) флешки теперь мультизагрузочные.

       o Если недоступен режим захвата экрана DDA то серверная часть теперь автоматически устанавливает режим захвата GDI.

       o Теперь пока открыто окно удаленного рабочего стола удаленная система не будет засыпать.

       o Теперь окно лога передачи файла можно свернуть вместе с основным окном.

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

       o Исполняемый файл при выборе режима разового доступа к рабочему столу теперь
         всегда имеет фиксированное имя "uvsrdp".
         Т.е. теперь можно из одного каталога последовательно запустить удаленный рабочий стол и затем uVS в обычном режиме.

       o Оптимизирована вспомогательная функция копирования незащищенных файлов, теперь она работает немного быстрее
         системной функции CopyFile если копирование файла происходит на другой диск и значительно быстрее если
         при этом исходный файл хотя бы частично попал в файловый кэш.

       o Уменьшены требования к доступной памяти при запуске в системе без файла подкачки.
         Уменьшено максимально возможное число файлов в списке для x86 систем до 100000.

       o uVS теперь совместим со штатной средой восстановления Windows 8.

       o Перехват клавиатуры выделен в отдельный поток, что снизило инпут лаг нажатий клавиш и устранило проблему
         задержки ввода с клавиатуры на клиентской машине при передаче файлов по узкому каналу (менее 10Mbit).

       o Исправлена ошибка из-за которой не восстанавливался размер окна удаленного рабочего стола при повторном нажатии Alt+V.

       o Исправлена ошибка из-за которой был доступен просмотр экрана удаленного компьютера в режиме "только передача файлов"
         если был выбран режим захвата экрана GDI или DDA1.

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

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

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

       o Передаваемый по сети файл теперь блокируется не полностью на время передачи, а остается доступным для чтения.

       o Исправлена ошибка из-за которой не передавались на удаленный компьютер файлы с длинным путем (ошибка "путь не найден").

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

       
    • PR55.RP55
      Добавить в меню команды: Блокировать запуск файла по: [MinimumStackCommitInBytes] Снять блокировку [MinimumStackCommitInBytes] установленную uVS - [1077777777] Полностью снять блокировку [MinimumStackCommitInBytes] -  [?ХХХХХХХХ?] ---------- Пример: Блокировать запуск файла по: [MinimumStackCommitInBytes] IFEO\mediaget.exe: [MinimumStackCommitInBytes] 1077777777 IFEO\PowwerTool.exe: [MinimumStackCommitInBytes] 1077777777 -------- Команда: Проверить реестр и доступные копии реестра ( с возможностью указать копию ) на IFEO -  [MinimumStackCommitInBytes] Команда: Проверить реестр и доступные копии реестра ( а тут можно подумать, на что ещё можно проверить копию )
    • PR55.RP55
      В том году была статья : по поводу MinimumStackCommitInBytes https://www.trendmicro.com/en_in/research/23/e/attack-on-security-titans-earth-longzhi-returns-with-new-tricks.html Похоже и у нас начали активно это применять. https://forum.kasperskyclub.ru/topic/465310-slovil-majner-kogda-skachival-obhod-blokirovki-diskorda/ https://www.cyberforum.ru/viruses/thread3189071.html?ysclid=m4x30zzs6v421256067  
    • demkd
      И не должен работать, такое удалять разрешено только вручную.
×