Основным источником проблем безопасности в мире .NET являются разработчики, использующие его. Легко писать приложения на любом фреймворке, и .NET Framework не лучше.
Кроме того, единственная серьезная проблема, о которой я могу думать, это все элементы управления, которые используют String вместо SecureString для хранения конфиденциальных данных, таких как пароли. Каждая версия .NET Framework лучше, чем предыдущая, но я думаю, что есть еще несколько общих элементов управления, которые их не используют.
SecureString можно рассматривать как строку, которая хранится в зашифрованной памяти и удаляется из памяти после использования. Поскольку строки в .NET являются неизменяемыми, любые новые строки будут храниться в памяти в общих местах, чтобы новые строки с одинаковым значением могли совместно использовать эту область памяти. Это означает, что конфиденциальные данные, хранящиеся в строке, относительно легко достать.