Январская починка дыр
Аккурат к концу новогодних каникул в России, 9-го января, Microsoft выпустили обновления, исправляющие CVE-2018–0786 и CVE-2018–0764. В этом коротком посте мы ещё раз вспомним, что это такое и что нам теперь делать.
Для иллюстрации этого хабрапоста я попытался изобразить решето. Как видите, у меня не получилось. К сожалению, сделать решето в коде — гораздо проще, чем изобразить его, в первый раз взяв в руки графический планшет.
Я тоже под угрозой?
Нужно пойти на файловую систему и посмотреть, какая версия установлена. Если там нет директории 1.0.9
, 1.1.6
или 2.0.5
, то у вас проблемы!
Где смотреть:
Windows | C:\Program Files\dotnet\shared\Microsoft.NETCore.App\ |
macOS | /usr/local/share/dotnet/shared/Microsoft.NETCore.App/ |
GNU/Linux | /usr/share/dotnet/shared/Microsoft.NETCore.App/ |
Точный список уязвимых версий:
Версия рантайма | Исправлено в версии |
---|---|
1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.7, 1.0.8 | 1.0.9 |
1.1.0, 1.1.1, 1.1.2, 1.1.4, 1.1.5 | 1.1.6 |
2.0.0, 2.0.3, 2.0.4 | 2.0.5 |
Что делать?
Разработчикам придётся обновить .NET Core SDK до версий 2.1.4
или 1.1.7
. Сисадминам нужно обновить .NET Core до версий 1.0.9
, 1.1.6
или 2.0.5
. Self-contained приложения придётся пересобрать.
CVE-2018–0764: Denial of Service when parsing XML documents
Официальные ссылки
- Github: .NET Foundation
- Common Vulnerabilities and Exposures Database
Что случилось?
.NET Core плохо парсит XML, пользуясь чем, хакер может устроить DDOS-атаку на ваше приложение.
В обновлении это починили. Эксплоиты публично не распространялись.
CVE-2018–0786: Security Feature Bypass in X509 Certificate Validation
Официальные ссылки
- Github: .NET Foundation
- Common Vulnerabilities and Exposures Database
Что случилось?
В общедоступных версиях .NET Core есть уязвимость, позволяющая хакеру подсунуть сертификат, помеченный невалидным для конкретного способа использования, и тем не менее использовать его по этому назначению. Это позволяет игнорировать Enhanced Key Usage.
В обновлении это починили. Эксплоиты публично не распространялись.
Нужно ли обновлять пакеты?
Уязвимости подвержен пакет Microsoft.NETCore.UniversalWindowsPlatform
.
Версия пакета указана вместе с соответствующей ему версией .NET Native.
NuGet / .NET Native | Исправлено в версии |
---|---|
5.2.* / 1.4.* | 5.2.4 |
5.3.* / 1.6.* | 5.3.5 |
5.4.* / 1.7.* | 5.4.2 |
6.0.* / 2.0.* | 6.0.6 |
Как починить моё приложение?
Для этого бага важен тип приложения:
- Обычное
- Self-contained
- Native
Обычные приложения можно починить, просто установив нужную версию SDK или рантайма, на которых вы запускаетесь. Скачать можно здесь.
Self-contained приложения придётся пересобрать со свежеобновлённым SDK и передеплоить.
Дальше поговорим о нативных приложениях. Нужно снова обработать его нативным компилятором обновлённого SDK и результат перевыложить в Windows Store.
MS рекомендует обновить UWP-приложения до самой последней минорной версии NuGet-пакета Microsoft.NETCore.UniversalWindowsPlatform
, чтобы можно было пересобрать приложение и понять, что оно не развалилось. Можно, конечно, обновиться сразу и на более свежую мажорную версию, но это не обязательно — обновление выпускается для всех мажорных версий, которые пострадали от бага.
Вне зависимости от того, обновили ли вы свои NuGet-пакеты, все приложения, залитые в стор после 9-го января, будут автоматически чиниться прямо в ходе выкладывания в стор.
Если же вы не обновите своё приложение в сторе, его всё равно автоматически обработают и разошлют через Windows Update в течение ближайших недель. Все, у кого не отключены автообновления, получат обновлённую версию без необходимости в ручном вмешательстве кого-либо. А вот для sideloaded-приложений придётся самостоятельно обновить NuGet-пакеты, пересобрать их и доставить пользователям.
Резюме
Даже очень хорошие и качественные проекты содержат ошибки. Чтобы не попасть впросак, нужно вовремя обновляться, читать официальные новости и изучать современные тенденции на конференциях типа DotNext, конечно. Спасение утопающих — дело рук самих утопающих!