.NET — безкоштовна платформа Microsoft з відкритим кодом для створення й запуску застосунків на C#, F# і Visual Basic у Windows, Linux та macOS.
Як влаштований .NET
Вихідний код компілюється в проміжну мову (IL). Під час роботи середовище виконання CLR (Common Language Runtime) перетворює IL на машинний код, керує пам’яттю за допомогою збирача сміття й контролює типобезпеку. Велика бібліотека класів охоплює роботу з мережею, криптографію, файли та веброзробку (ASP.NET Core).
- .NET Framework — початкова версія лише для Windows (остання — 4.8.1), і далі постачається з Windows.
- .NET (раніше .NET Core) — кросплатформний наступник, об’єднаний із .NET 5 у 2020 році. Нова версія виходить щолистопада; парні релізи (.NET 8, .NET 10) отримують три роки довгострокової підтримки (LTS).
Чим .NET важливий для безпеки
Керований код позбавляє цілих класів помилок роботи з пам’яттю, але в .NET-застосунках лишаються логічні вразливості, ін’єкції й насамперед небезпечна десеріалізація: BinaryFormatter виявився настільки небезпечним, що Microsoft видалила його в .NET 9. Зловмисники теж люблять .NET: IL легко декомпілювати й завантажувати просто в пам’ять, тому багато стилерів і троянів віддаленого доступу написано на C# і приховано обфускаторами та пакувальниками. Шкідливі пакети NuGet, що маскуються під популярні бібліотеки, — постійна загроза ланцюгу постачання.
Рекомендації
- Використовуйте підтримувану версію .NET і встановлюйте щомісячні оновлення безпеки.
- Не десеріалізуйте недовірені дані серіалізаторами, які зберігають типи; використовуйте
System.Text.Jsonз фіксованими типами. - Фіксуйте версії та перевіряйте підписи пакетів NuGet.
- Ставтеся до непідписаних .NET-файлів із невідомих джерел з підозрою; декомпілятори на кшталт ILSpy чи dnSpy покажуть, що вони роблять насправді.