- PVSM.RU - https://www.pvsm.ru -
Эта небольшая заметка является промежуточным итогом на тему поиска уже известных уязвимостей в open source C# проектах. Я хотел посмотреть на примеры кода, который бы являлся уязвим и был причиной появления очередной CVE, но оказалось, что не всё так просто…
Я уже сталкивался с подобной задачей касаемо языков программирования C и C++, и хотел бы сделать небольшую отсылку к проделанной ранее работе, чтобы суть вопроса, вынесенного в заголовок, стала более понятна.
Вдаваться в детали не буду, расскажу в нескольких предложениях. Предыдущая цель была аналогичной — посмотреть, какие CVE были обнаружены в open source C/C++ проектах, и выяснить, может ли PVS-Studio находить подобные проблемы. По результатам работы я нашёл несколько интересных уязвимостей (а если бы продолжил работу в этом направлении, уверен, нашёл бы ещё больше), появления которых можно было бы предотвратить, используя PVS-Studio. Эксперимент закончился удачно, и на его основе я написал статью "Как PVS-Studio может помочь в поиске уязвимостей? [1]".
Удобным было то, что в описании CVE часто фигурировали ссылки на коммиты, закрывающие уязвимость. Таким образом, просматривая историю изменений кода, можно было понять, в чём заключается уязвимость, и каким образом она была закрыта. В итоге задача сводилась примерно к тому, чтобы среди таких исправлений найти что-то интересное.
Подводя итог вышесказанному, можно выделить несколько пунктов, которые определяют CVE, удобную для проверки:
Если CVE отвечает этим требованиям, скорее всего она будет доступна для обнаружения с помощью статического анализа исходного кода.
В направлении поиска уязвимостей в open source C# проектах я предпринимал несколько заходов с различных сторон, но все они не принесли ожидаемого результата.
Основными информационными средствами, на которые я ориентировался, были база CVE [2] и сайт CVE Details [3] (а также Google, GitHub, reddit, StackOverflow).
Вот основные подходы, которые я использовал:
К моему большому удивлению, все эти подходы не принесли ожидаемого результата — было найдено крошечное количество уязвимостей, в которых были бы также ссылки на исходный код, чтобы можно было точно понять суть проблемы.
Имея опыт подобной работы с проектами на C/C++ меня вот что удивило:
В общем, я был удивлён таким положением дел в отношении уязвимостей в C# проектах. Почему их так мало? Почему мало примеров уязвимостей, которые были закрыты?
Ситуация действительно такая, какая есть? Или был какой-то изъян в моих подходах, которые не позволили получить необходимого результата?
Если у вас есть примеры разбора уязвимого кода (задокументированного, то есть, имеющего идентификатор CVE) или вы заметили какой-то явный изъян в моём подходе, не позволивший получить ожидаемых результатов, прошу написать мне на почту — vasiliev@viva64.com [5], с интересном прочитаю ваши предложения/замечания.
Ниже я привожу список тех уязвимостей, которые бы имели и идентификатор CVE, и примеры уязвимого кода. Возможно, они будут кому-то интересны/полезны. Также, если вы хотите предложить в письме ссылку на пример кода уязвимостей, пожалуйста, посмотрите, не встречается ли идентификатор этой уязвимости в нижеприведённом списке.
Автор: Сергей Васильев
Источник [17]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/c-2/267044
Ссылки в тексте:
[1] Как PVS-Studio может помочь в поиске уязвимостей?: https://www.viva64.com/ru/b/0514/
[2] база CVE: https://cve.mitre.org/data/downloads/index.html
[3] CVE Details: http://www.cvedetails.com/
[4] .NET Open Source Developer Projects: https://github.com/Microsoft/dotnet/blob/master/dotnet-developer-projects.md
[5] vasiliev@viva64.com: mailto:vasiliev@viva64.com
[6] CVE-2017-15280: https://github.com/umbraco/Umbraco-CMS/commit/5dde2efe0d2b3a47d17439e03acabb7ea2befb64
[7] CVE-2017-15279: https://github.com/umbraco/Umbraco-CMS/commit/fe2b86b681455ac975b294652064b2718d4e2ba2
[8] CVE-2015-8814: https://github.com/umbraco/Umbraco-CMS/commit/18c3345e47663a358a042652e697b988d6a380eb
[9] CVE-2015-8813: https://github.com/umbraco/Umbraco-CMS/commit/924a016ffe7ae7ea6d516c07a7852f0095eddbce
[10] CVE-2013-6795: https://github.com/rackerlabs/openstack-guest-agents-windows-xenserver/commit/ef16f88f20254b8083e361f11707da25f8482401
[11] CVE-2012-3382: https://github.com/mono/mono/commit/d16d4623edb210635bec3ca3786481b82cde25a2
[12] CVE-2011-0991: https://github.com/mono/mono/commit/89d1455a80ef13cddee5d79ec00c06055da3085c
[13] CVE-2015-2526: http://blog.malerisch.net/2015/09/net-mvc-redos-denial-of-service-vulnerability-cve-2015-2526.html
[14] CVE-2016-0132: https://coding.abel.nu/2016/03/vulnerability-in-net-signedxml/
[15] CVE-2017-8759: https://www.fireeye.com/blog/threat-research/2017/09/zero-day-used-to-distribute-finspy.html
[16] CVE-2017-8585: https://www.sidertia.com/Home/Community/Blog/2017/07/14/Microsoft-fixes-the-CVE-2017-8585-security-vulnerability-discovered-by-Sidertia-Team
[17] Источник: https://habrahabr.ru/post/341320/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.