Visual studio 2022 когда выйдет

Обновлено: 07.07.2024

Хотя разработчики с любым уровнем опыта в целом положительно относятся к VS 2019, нет IDE, которая не могла бы улучшить ситуацию. Действительно ли VS 2022 намного лучше? Стоит ли становиться ранним пользователем и обновляться до последней версии?

Вот что вам нужно знать.

История Visual Studio: пока что в основном хорошо

Visual Studio 2019 и Visual Studio Code рекламируются как удобные для начинающих, но также заслужили постоянную похвалу от продвинутых и опытных программистов.

Например, его интеграция с Azure, Git / GitHub и недавнее добавление таких платформ, как Live Share и Xamarin , позволяет упростить облачное хранилище, совместную работу в реальном времени и кроссплатформенную разработку.

Но несмотря на то, что VS 2019 и VS Code хороши, VS 2022 предлагает несколько новых, весьма заманчивых улучшений.

Самое важное улучшение в VS 2022

Одно из основных улучшений в новом выпуске касается повторяющейся жалобы на VS 2019, а именно, его интенсивной потребности в памяти.

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

На момент написания этой статьи предварительная версия не лицензирована для производственных приложений.

Что еще нового в VS 2022?

На странице « Дорожная карта на 2022 год» в онлайн-документации Microsoft утверждается, что команда, работающая над этим последним выпуском, имеет в виду следующие темы: «личная и командная продуктивность, современное развитие и постоянные инновации».

Нам всем нравится, как они звучат! Но что означает это обязательство для повседневной работы с последней версией VS 2022?

Релиз 2022 года обещает следующие дополнительные улучшения:

Улучшенная функция автозавершения кода

Intellicode в VS 2022 может заполнять целые строки кода, используя улучшенное понимание контекста кодирования.

Более мощные возможности отладки

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

Улучшенный интерфейс программирования

Visual Studio 2022 предлагает более удобный и интуитивно понятный интерфейс среды программирования.

Это включает в себя расширенные возможности для настройки внешнего вида среды IDE (например, вы можете сопоставить ее со своей темой Windows), а также возможность развертывания системы управления документами, которая работает на вас.

Улучшенная доступность

В Visual Studio 2019 было несколько функций, которые улучшили общую доступность, а VS 2022 Improved добавляет еще больше функций доступности.

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

Улучшенная поддержка последней сборки C ++

VS 2022 включает в себя полный набор инструментов для C ++ 20. Это язык, на котором написана Windows, поэтому разработчики Windows должны найти это долгожданное включение.

В примечаниях к предварительному просмотру VS 2022 перечислены девять улучшений на момент написания этой статьи. Это должно упростить программирование на C ++ в новой версии IDE за счет улучшенной функциональности IntelliSense и более мощных возможностей отладки и анализа.

Улучшенная разработка приложений для Windows

Вы также найдете улучшения в интеграции Git, такие как возможность работать с несколькими репозиториями в исходном режиме из одной локальной установки IDE.

Для разработчиков, создающих контейнерные приложения, обещаны дополнительные возможности для работы или оркестровки проектов с использованием Kubernetes , Docker и Service Fabric . (В документации нет подробностей о том, что это повлечет за собой, но в настоящее время ведется работа по улучшению процесса создания приложений и расширению диагностики.)

Стоит ли вам перейти на VS 2022 сейчас?

Ответ зависит от того, как вы сейчас используете Visual Studio.

К сожалению, на момент написания этой статьи предварительная версия VS 2022 не лицензирована для использования в производственной среде.

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

Индивидуальные разработчики с любым уровнем квалификации, вероятно, получат выгоду от улучшений, предлагаемых в VS 2022, и захотят как можно скорее ознакомиться с новыми и улучшенными функциями до официального выпуска.

Если вы решите выполнить обновление, у вас есть несколько вариантов, как начать использовать предварительную версию VS 2022.

И не забывайте, вы можете внести свой вклад в проект VS 2022! В период предварительного просмотра активно запрашиваются мнения и отзывы разработчиков. В онлайн-документации « Что нового в Visual Studio 2022 » есть ссылка на страницу « Предложить функцию» .

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

Предварительная версия Visual Studio 2022, объяснение

Большинство индивидуальных пользователей, вероятно, сочтут целесообразным начать использовать предварительную версию VS 2022, тем более, что вам не нужно отказываться от VS 2019.

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

Следующий крупный выпуск Visual Studio будет более быстрым, доступным и легким, предназначенным как для учащихся, так и для тех, кто создает решения промышленного масштаба. Впервые Visual Studio будет 64-разрядной. Пользовательский интерфейс будет более чистым, интеллектуальным и ориентированным на действия.

Команды разработчиков стали более рассредоточенными географически, чем когда-либо. За последний год стало очевидно, что организациям нужны команды разработчиков для безопасного взаимодействия, более быстрого предоставления решений и постоянного повышения удовлетворенности конечных пользователей и повышения их ценности. Мы упрощаем совместную работу за счет улучшенной интеграции с GitHub, что упрощает переход от идеи к коду.

Visual Studio 2022: 64-bit

Visual Studio 2022 будет 64-битным приложением, которое больше не будет ограничено

4 ГБ памяти в основном процессе devenv.exe. С помощью 64-разрядной Visual Studio в Windows вы можете открывать, редактировать, запускать и отлаживать даже самые большие и сложные решения, не исчерпывая памяти.

Хотя Visual Studio переходит на 64-разрядную версию, это не меняет типы или разрядность приложений, которые вы создаете с помощью Visual Studio. Visual Studio по-прежнему будет отличным инструментом для создания 32-разрядных приложений.

Мне очень приятно смотреть это видео о масштабировании Visual Studio с целью использования дополнительной памяти, доступной для 64-разрядного процесса, поскольку открывается решение с 1600 проектами и

Мы также работаем над тем, чтобы сделать каждую часть вашего рабочего процесса быстрее и эффективнее, от загрузки решений до отладки F5.

Дизайн для всех

Мы обновляем пользовательский интерфейс, чтобы вы всегда были в курсе событий. Некоторые из изменений - это тонкие косметические штрихи, которые модернизируют пользовательский интерфейс. В целом мы стремимся снизить сложность и когнитивную нагрузку, чтобы вы могли сосредоточиться и оставаться в зоне работы. Кроме того, повышение доступности Visual Studio повысит удобство использования для всех - следующая версия Visual Studio будет включать:

Обновленные значки для большей четкости, разборчивости и контрастности

Cascadia Code, новый шрифт фиксированной ширины для лучшей читаемости и поддержки лигатур. (Если хотите, можете попробовать Cascadia Code прямо сейчас!)

Обновленные и улучшенные темы продуктов

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

Персонализация

Как разработчики, мы понимаем, что персонализация вашей IDE так же важна, как и выбор рабочего стула. Мы должны сделать все «в самый раз», прежде чем сможем работать максимально продуктивно. Сделать Visual Studio 2022 «подходящей» для вас будет проще, чем когда-либо, от возможности настраивать аспекты IDE до синхронизации настроек между устройствами для тех, кто поддерживает несколько блоков разработки.

Создание современных приложений

Azure

Visual Studio 2022 позволит быстро и легко создавать современные облачные приложения с Azure. Мы поможем вам начать с большого количества репозиториев, описывающих общие шаблоны, используемые в современных приложениях. Эти репозитории состоят из кода, показывающего эти шаблоны в действии, ресурсов IAAC для предоставления ресурсов Azure, а также предварительно созданных рабочих процессов и действий GitHub, настраивающих вас с помощью полного решения CI/CD при первом создании проекта. Кроме того, в репозитории будет определена необходимая среда разработки, чтобы вы могли сразу приступить к кодингу и отладке.


С++

Visual Studio 2022 будет включать надежную поддержку рабочей нагрузки C++ с новыми функциями повышения производительности, инструментами C++ 20 и IntelliSense. Новые возможности языка C++ 20 упростят управление большими базами кода, а улучшенная диагностика упростит отладку сложных проблем с помощью шаблонов и концепций.

Мы также интегрируем поддержку CMake, Linux и WSL, чтобы упростить вам создание, редактирование, сборку и отладку кроссплатформенных приложений. Если вы хотите перейти на Visual Studio 2022, но беспокоитесь о совместимости, двоичная совместимость со средой выполнения C++ сделает это безболезненным.

Инновации

Диагностика и дебаггинг

Возможность уверенно отлаживать приложения - это центральный элемент вашего повседневного рабочего процесса. Visual Studio 2022 будет включать улучшения производительности в основном отладчике с дополнительными функциями.

Коллаборация в реальном времени

Live Share открывает новые возможности для сотрудничества с другими, обмена идеями, парного программирования и анализа кода. В Visual Studio 2022 Live Share появится интегрированный текстовый чат, чтобы вы могли быстро обсуждать свой код без каких-либо переключений контекста. У вас будет возможность запланировать повторяющиеся сеансы с повторным использованием одной и той же ссылки, что упростит совместную работу с вашими частыми контактами. Чтобы лучше поддерживать Live Share в организациях, мы также представим политики сеансов, которые определяют любые требования соответствия для совместной работы (например, должны ли терминалы чтения/записи быть общими?).

Инсайты и продуктивность

Подсистема AI IntelliCode в Visual Studio продолжает совершенствоваться, легко предвидя ваш следующий шаг. Visual Studio 2022 обеспечит все более глубокую интеграцию в ваши повседневные рабочие процессы, помогая вам предпринимать правильные действия в нужном месте в нужное время.

Асинхронная коллаборация

Visual Studio 2022 будет включать новую мощную поддержку Git и GitHub. Фиксация кода, отправка запросов и слияние ветвей - это когда «мой код становится нашим кодом». Вы заметите много встроенной логики и контрольных точек, которые помогут вам эффективно провести процесс слияния и проверки, не ожидая отзывов от коллег, которые могут замедлить работу. Наш руководящий принцип здесь заключался в том, чтобы помочь вам больше доверять коду.

Улучшенный поиск кода

Поиск кода - неотъемлемая часть жизненного цикла разработки программного обеспечения. Разработчики используют поиск кода по множеству причин: учиться у других, делиться кодом, оценивать влияние изменений во время рефакторинга, исследовать проблемы или анализировать изменения. Мы стремимся повысить производительность всех этих критически важных действий в Visual Studio 2022, чтобы ваша продуктивность была еще выше. Вы также сможете искать за пределами загруженной области, чтобы найти то, что ищете, независимо от того, в какой базе кода или репозитории оно находится.

Обновление Visual Studio для Mac

Поделитесь с нами вашими мыслями

Мы показали вам лишь несколько основных моментов нашей незавершенной работы над Visual Studio 2022. Как всегда, вы можете перейти в новое сообщество разработчиков, чтобы просмотреть существующие запросы функций, проголосовать и комментировать или создать свои собственные.

Следите за новостями о доступности 64-разрядной версии Visual Studio 2022 Preview 1, которая будет включать наши улучшения пользовательского интерфейса и специальные возможности. (И помните! Как и любая другая работа, эти функции все еще находятся в разработке, поэтому некоторые из них появятся в Visual Studio 2022 после первого общедоступного выпуска.)


Ты можешь скачать превью со своего веб-сайта. Хотя он все еще «экспериментален» и не готов к производству, это все еще Visual Studio, поэтому, если вы не зависите от расширений, которые еще не были обновлены, не бойтесь попробовать.

Мы рассмотрим наиболее важные изменения, произошедшие в Preview 3, но если вы хотите прочитать построчную примечания к патчу, вы можете сделать это из документации Microsoft. Есть также дорожная карта описывая общее направление.

Наконец-то 64-битный

Visual Studio всегда была 32-разрядной, что означает, что в основном процессе она была ограничена 4 ГБ ОЗУ. Обычно этот бюджет не превышает этого бюджета для обычных проектов, но некоторые пользователи могут столкнуться с исключениями нехватки памяти с особенно большими решениями.

В VS 2022 это исправлено, и теперь это 64-битное приложение. Microsoft протестировала проекты с 1600 проектами и 300 КБ файлов, и все работает нормально.

64-разрядная версия теоретически должна работать быстрее, и, похоже, она немного быстрее запускается, но Microsoft также работает над производительностью в целом, поэтому трудно сказать, насколько это на самом деле влияет на нее. В любом случае, хорошая перемена.

Конечно, вы все еще можете разрабатывать 32-битные приложения с VS 2022. Это относится только к редактору.

AI IntelliCode потрясающий

Возможности Visual Studio 2022 серьезное обновление их механизма автозаполнения IntelliCode. Он может автоматически заполнять целые строки и фрагменты кода и работает очень хорошо.

Это немного отличается от Второй пилот GitHub, который выполняет аналогичную работу. Copilot будет генерировать полные фрагменты кода и лучше всего подходит для небольших автономных функций с четким решением. Это здорово, но у него есть свои проблемы, в основном тот факт, что код, который он генерирует, даже не гарантирует, что он будет тем, что вы хотите (и может дословно извлекать код из случайных репозиториев GitHub, что является другой проблемой).

IntelliCode использует гораздо более ограниченный подход и просто завершает одну строку, принимая во внимание некоторые из следующих факторов:

  • Имена и позиции переменных
  • Библиотеки, которые вы используете
  • Функции в окружающем коде
  • Раскрывающийся список IntelliSense, который вы можете переместить вниз, чтобы дать IntelliCode больше предложений.

После двух недель использования это действительно то, что вам нужно попробовать на себе. Он потрясающе умный, и много раз, используя его, я ловил себя на мысли: «Вау, я как раз собирался это напечатать!»

Например, напишите функцию, которая принимает число от 1 до 12:


Зная все это, он делает чрезвычайно точное предположение о моих намерениях и решает, что ArgumentOutOfRangeException должно быть тем, что я пытаюсь ввести, прежде чем я даже смогу начать печатать «новое».

И, если вы перейдете на страницу вниз, вы можете заполнить результаты для различных вариантов. Это все еще немного непоследовательно (было решено жестко закодировать «Ширина», а затем использовать nameof), но в целом работает хорошо.



Некоторые типы изменений могут не применяться должным образом, что потребует правильного перезапуска. Вы можете просмотреть полный их список здесь, но суть в следующем:

  • Не изменять сигнатуры методов
  • Без добавления операторов using
  • Без модификации интерфейсов
  • Никаких переименований участников

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

Он хорошо интегрирован в отладку VS с новым значком «Применить изменения кода», который запускает горячую перезагрузку. Вы также можете использовать новую команду dotnet watch для автоматической перезагрузки при изменении файла.

Веб-приложения Razor / Blazor в настоящее время могут использовать горячую перезагрузку, но Blazor WebAssembly все еще требует доработки, и в настоящее время она еще не работает. Тем не менее, над ним работают и, возможно, он выйдет в финальную версию позже в ноябре.

Удаленное тестирование

VS 2022 включает экспериментальную предварительную версию, которая позволяет запускать тесты в других средах, включая контейнеры Linux, WSL и даже через SSH.


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

Общие улучшения

Есть много мелких изменений в сломать примечания к патчу, поэтому мы перечислим здесь некоторые из самых интересных.

Отладка претерпела некоторые улучшения качества жизни, с новыми параметрами контекста для более продвинутых точек останова, а также с функцией «Принудительный запуск к курсору», которая игнорирует все существующие точки останова и останавливается на выбранной вами строке кода. Это может быть очень полезно, если вы хотите что-то протестировать, не удаляя каждую точку останова или снова пропуская все вручную.

Контекстное меню точки останова

Принудительный переход к курсору

Интеграция VS с Git теперь поддерживает несколько репозиториев для каждого решения, а коммит во многих репозиториях теперь проще.


Все значки были переработаны для единообразия.

Примеры новых иконок с темным и светлым фоном

Комментарии XML теперь поддерживают многострочные комментарии с сохраненными пробелами и блоками CDATA.

Краткая информация для XML сохраняет пробелы

«Найти все ссылки» больше не приводит к повторному выводу мусора в многоцелевом проекте.

Найти все справочные группы Многоцелевые проекты

Razor Pages / Blazor получили многочисленные интеграции редактирования и теперь будут лучше работать с IntelliSense, подсветкой синтаксиса и улучшенным форматированием в блоках @code. Теперь вы также можете использовать «Просмотр кода» в файлах Razor, что какое-то время было досадным ограничением.

Переход на x64, измененный интерфейс, упрощенная персонализация и версия IDE для macOS. Компания Microsoft анонсировала Visual Studio (VS) 2022. Разработчиков ждет крупное обновление впервые за три года.

Переход на 64-разрядную версию

Впервые Visual Studio (VS) будет 64-разрядной. В компании заявляют, что благодаря этому в Windows можно будет открывать, редактировать, запускать и отлаживать даже самые большие и сложные решения. При этом переход на х64 не меняет типы или разрядность приложений, которые создаются с помощью VS. Среда разработки по-прежнему будет инструментом для разработки 32-разрядных приложений.

Обновленный пользовательский интерфейс

Некоторые из изменений — это тонкие косметические штрихи, которые модернизируют пользовательский интерфейс. В целом, по словам разработчиков Microsoft, стремятся снизить сложность и когнитивную нагрузку, чтобы пользователи могли сосредоточиться на работе, не покидая рабочую зону VS.

Среди заявленных визуальных изменений:

  • Обновленные значки для большей четкости, разборчивости и контрастности;
  • Новый шрифт Cascadia Code — для лучшей читаемости и поддержки лигатур ;
  • Обновленные и улучшенные темы продуктов;
  • Интеграция с продуктом Accessibility Insights — для раннего обнаружения проблем доступности.

Обновленный интерфейс VS 2022

Разработка современных приложений.

Согласно описанию , в Visual Studio 2022 будет:

Диагностика и отладка

VS 2020 будет включать улучшения производительности в основном отладчике с дополнительными функциями, такими как flame-диаграммы в профилировщике, зависимые брейкпойнты и интегрированные возможности декомпиляции.

Совместная работа и парное программирование

Согласно документации, в Visual Studio 2022 Live Share появится:

  • Интегрированный текстовый чат для мгновенного обсуждения кода без переключения контекста;
  • Возможность запланировать повторяющие сеансы, с сохранением одной и той же ссылки, что упростит совместную работу с частными контактами;
  • Политика сеансов для определения требований соответствия для совместной работы. Например, должны ли терминалы чтения/записи быть общими.

Среди прочих новшеств и обновлений специалисты компании выделяют:

Упрощенная персонализация. Разработчикам будет гораздо проще настроить IDE от Microsoft под себя.

Ожидается, что 64-разрядная версия Visual Studio 2020 Preview 1 появится летом 2021-го. Финальный релиз планируется выпустить ближе к концу года.

Highload нужны авторы технических текстов. Вы наш человек, если разбираетесь в разработке, знаете языки программирования и умеете просто писать о сложном!
Откликнуться на вакансию можно здесь .

В апреле 2021 года Microsoft анонсировала новую версию своей IDE – Visual Studio 2022, попутно объявив, что она будет 64-битной. Сколько мы этого ждали — больше никаких ограничений по памяти в 4 Гб! Однако, как оказалось, есть нюансы.

0865_VS2022_XMLBomb_ru/image1.jpg

Кстати, если вы пропустили, вот ссылка на тот пост с анонсом.

Но вернёмся к нашему вопросу из заголовка. Я воспроизвёл эту проблему на последней доступной на момент написания заметки версии Visual Studio 2022 Preview — 17.0.0 Preview 3.1.

Для воспроизведения достаточно:

  • создать проект пустого решения (шаблон Blank Solution);
  • добавить в него XML-файл.

После этого в созданный XML-файл нужно попробовать скопировать следующий текст:

Теперь идём заваривать кофе, возвращаемся и наблюдаем за тем, как Visual Studio отжирает всё больше и больше ОЗУ.

0865_VS2022_XMLBomb_ru/image2.jpg

Могут возникнуть 2 вопроса:

  • Зачем делать какие-то странные XML и добавлять их в проекты?
  • Что здесь вообще происходит?

Что ж, давайте разбираться. Для этого нам нужно будет вспомнить, какие опасности может нести неаккуратная обработка XML-файлов, а также узнать, как со всем этим связан статический анализатор PVS-Studio.

SAST в PVS-Studio

Собственно, для тестирования работы анализатора я и создал (точнее, попытался создать) соответствующий синтетический проект. Дело в том, что одна из категорий OWASP Top 10, над которой сейчас ведётся работа, – A4:2017-XML External Entities (XXE). Она затрагивает уязвимость приложений к различным атакам посредством неправильной обработки XML-файлов. Что подразумевается под неправильной обработкой? Например, излишнее доверие к входным данным (извечная проблема многих уязвимостей) и отсутствие должных ограничений в парсерах XML.

В итоге, если файлы окажутся скомпрометированы, это может вылиться в разные неприятные последствия. Здесь можно выделить 2 основные проблемы: раскрытие каких-то данных и отказ в обслуживании. Обе имеют соответствующие CWE:

CWE-611 оставим на другой раз, сегодня нас интересует CWE-776.

XML бомбы (billion laughs attack)

Я поясню только основную суть проблемы. Если у вас есть желание изучить проблему глубже – топик легко гуглится, не обессудьте.

Стандарт XML предусматривает использование DTD (document type definition). DTD даёт возможность использовать так называемые XML-сущности.

Синтаксис определения сущностей прост:

Получить значение сущности в дальнейшем можно следующим образом:

Нюанс состоит в том, что сущности могут раскрываться не только в строки (как в нашем случае — "Entity value"), но и в последовательности других сущностей. Например:

В итоге при раскрытии сущности 'lol1' мы получим строку следующего вида:

Можно пойти дальше и определить сущность 'lol2', раскрыв её уже через 'lol1':

Тогда при раскрытии одной лишь сущности 'lol2' мы получим следующий выхлоп:

Погрузимся на уровень ниже и определим сущность 'lol3'?

Выхлоп при её раскрытии:

Собственно, сгенерированный по такому принципу XML-файл мы и использовали в начале статьи. Думаю, теперь понятно, откуда название "billion laughs". Получается, что если XML-парсер настроен неправильно (обрабатывает DTD и не имеет ограничений на максимальный размер сущностей), то при обработке подобной 'бомбы' ничего хорошего не случится.

Сконфигурировав экземпляр XmlReader подобным образом, вы как бы говорите злоумышленнику этим кодом: "Давай, подорви меня!".

  • разрешена обработка DTD;
  • снято ограничение на максимальное количество символов из сущностей, то есть разрастание файла никак не ограничено.

Возвращаясь к Visual Studio 2022

Похоже, что в Visual Studio 2022 при копировании нашей XML бомбы сработали как раз оба условия:

  • запустилась обработка DTD;
  • не стояло никаких ограничений, из-за чего объём потребляемой памяти пробил потолок.

Если посмотреть, что происходит в процессе в это время, можно найти подтверждение нашим предположениям.

0865_VS2022_XMLBomb_ru/image3.jpg

В списке потоков видно, что основной поток как раз обрабатывает XML. К слову, из-за этого повис весь GUI и IDE никак не реагировала на попытки потыкать её палочкой.

Если посмотреть call stack потока VS Main, можно увидеть, что он как раз занят обработкой DTD (исполняется метод ParseDtd).

0865_VS2022_XMLBomb_ru/image4.jpg

В ходе экспериментов у меня возник вопрос: а зачем Visual Studio вообще запускает процессинг DTD, почему просто не отображает XML как есть? Ответ пришёл в ходе экспериментов с 'XML-бомбочкой' (суть та же, но нагрузка поменьше).

Похоже, всё дело в том, чтобы отображать в редакторе "на лету" возможные значения сущностей.

0865_VS2022_XMLBomb_ru/image5.jpg

Небольшие значения обрабатываются успешно, но разрастание XML приводит к проблемам.

Конечно, такая проблема не могла обойтись без написания мной баг-репорта.

Заключение

Вот так неожиданным образом удалось посмотреть, как на практике могут выглядеть уязвимости к XML-бомбам. Самое интересное, что удалось пощупать это не на каком-то абстрактном примере, а на вполне знакомом и популярном приложении.

Мы планируем добавить поиск кода, уязвимого к проблемам обработки XML-файлов, в PVS-Studio 7.15. Если же интересно посмотреть, что анализатор умеет уже сейчас, предлагаю загрузить его и попробовать на своих проектах. ;)

Как всегда, приглашаю подписываться на мой Twitter, чтобы не пропустить ничего интересного.

Читайте также: