Компания WhiteSource опубликовала (https://www.whitesourcesoftware.com/most-secure-programming-.../) результаты анализа распределения уязвимостей в зависимости от применяемых языков программирования. При рассмотрении общего распределения уязвимостей в открытых проектах, 47% всех выявленных проблем с безопасностью затрагивают программы написанные на языке Си, 17% на PHP, 12% на Java и 11% на JavaScript.
Данная статистика сильно коррелирует с популярностью того или иного языка и объёмом наработанной кодовой базы. Тем не менее, общие тенденции прослеживаются, например, язык PHP занимает (https://www.opennet.ru/opennews/art.shtml?num=49244) в рейтинге Tiobe седьмое место по популярности, но находится на втором месте по числу уязвимостей в приложениях. Язык Си более подвержен возникновению уязвимостей в силу своего низкоуровневого характера при обработке строк и работе с памятью.Некоторые выводы:
- Активное внедрение автоматизированных систем тестирования, fuzzing-инструментов и программ выплаты вознаграждений за выявление уязвимостей привело к заметному всплеску уязвимостей, выявленных в 2017 и 2018 годах, при этом число опасных уязвимостей за два последних года уменьшилось. В 2017 году заметно возросло число уязвимостей, выявленных в программах на языках Си, JavaScript и PHP. В 2018 году число уязвимостей в программах на языках Си и JavaScript снизилось до показателей прошлых лет, но существенно возросло число уязвимостей, выявленных в программах на Java;
При сужении выборки только для опасных уязвимостей (CVSS выше 7) динамика сохраняется:- Наибольшее число выявленных за последнее время уязвимостей относятся к категориям межсайтового скриптинга (XSS), ошибок при проверка входных данных, неверно выставленных прав доступа/привилегий и утечке информации;
- Статистика по частоте появления уязвимостей в привязке к языкам программирования:
- В программах на языке Си наибольшее число уязвимостей, связаны с выходом за допустимые границы буфера, ошибками при проверке корректности входных данных и ненадлежащим управлением ресурсами (Race Condition, двойное освобождение памяти, обращение к данным после освобождения и т.п.). Около 20% выявленных уязвимостей в программах на Си отнесены к категории опасных. Наибольшее число уязвимостей в 2018 году выявлено в ядре Linux, ImageTragic, WireShark и FFmpeg.
- PHP: межсайтовый скриптинг, подставновка SQL-кода и проблемы связанные с правами доступа и установкой привилегий. Около 20% выявленных уязвимостей отнесены к категории опасных;
- Java: утечки информации (получение данных без наличия должных прав доступа), ошибки при проверке корректности входных данных и межсайтовый скриптинг (XSS). Около 10% выявленных уязвимостей отнесены к категории опасных;
- JavaScript: применение ненадёжных криптографических методов (неправильная проверка сертификатов, проблемы со случайными числами, применение скомпрометированных алгоритмов, применение хэшей с коллизиями, передача важных данных в открытом виде), неправильная проверка файловых путей (например, выход за пределы базового каталога через "../") и межсайтовый скриптинг (XSS). Около 30% выявленных уязвимостей отнесены к категории опасных;
- C++: выход за границу буфера, ошибки при проверке входных данных, утечки информации. Около 30% выявленных уязвимостей отнесены к категории опасных;
- Python: ошибки при проверке входных данных, проблемы с правами доступа и установкой привилегий, межсайтовый скриптинг (XSS). Около 20% выявленных уязвимостей отнесены к категории опасных;- Ruby: межсайтовый скриптинг (XSS), проблемы с правами доступа, ошибки при проверке входных данных. Около 10% выявленных уязвимостей отнесены к категории опасных.
URL: https://resources.whitesourcesoftware.com/blog-whitesource/i...
Новость: https://www.opennet.ru/opennews/art.shtml?num=50415
про раст намеренно умолчали
Власти скрывают правду о Rust и BASIC (его же нет в списке по той же причине?).
Кодовая база ещё слишком незначительна. Да и инструментов для исследования подходящих нет, скорее всего.
Паскаля нет
значит он безопасен
я на паскале 20 лет назад написал игру, до сих пор никто не взломал
Потому что единственная копия записана на дискетку 5'25, которая 20 лет лежит в сейфе и ты ее никому не показывал?
> Потому что единственная копия записана на дискетку 5'25, которая 20 лет лежит в сейфе и ты ее никому не показывал?Замени дискету и сейф на запароленый RAR и можешь смело писать "bulletproof software protection, uncracked for years …" (привет автору ExeCryptor ;) )
3.5!
Потому что все копии сгинули
Не камильфо. На кассету МЭК-90!))
Интересно почему про Go не сказали. Хоть кодовая база не такая обширная, но поделий много (тот же docker или kubernetes).
>тот же docker или kubernetesGo там применяется в качестве заменителя BASH.
Даёшь gRPC на баше!
можно с этого момента поподробнее?
Похоже на фейковую налитику. Выборка мусор.
То что жаба с 12% и все что выше - красным, а JS с 11% - синим какбы тонко намекает - кто и что хотел сказать.
Похоже очень. Например, по коммерческой статистике доля венды якобы 80% (и Linux 1%), а по нескольким независимым источникам венды 20% (что ненамного превышает Linux с его 17%).
63% сидят на маках и хромбуках? Или даже bsd?
видимо андроид и айос
Ну тогда он противопоставляет выборку всех устройств вообще выборке только десктопов.
Если "независимые источники" перестанут хлебать смузи и проведут опрос не только в своём офисе, картина будет именно 80%/1%.
Эксперты опеннета подвергли сомнению выводы экспертов компании whitesource
Да те ваще -- казлы по сравнению с нами, икспердами opennet-а.
>Данная статистика сильно коррелирует с популярностью того или иного языка и объёмом наработанной кодовой базыНадо было сразу разделить на частоту использования языка, а не сидеть и гадать.
и в результате получилась бы бесполезная метрика "количество-ошибок/взятый-с-потолка-процент-популярности". уж лучше пусть останется как есть, так больше полезной информации, а уж разделить одно на другое в случае необходимости большинство читателей сможет самостоятельно
а так еще более бесполезная статистика.
такая же как, скажем, "количество абортов по странам" - самый плохой окажется китай, индия, пакистан, а какая-нибудь буркина-фасо будет в топе.
Данные без нормировки - пальцем в небо.
Взять и переписать всё на Rust!
Для начала можно написать на расте хоть что-нибудь полезное, кроме нескольких процентов кода Firefox'а (который, похоже, скоро будет окончательно вытеснен Хромом).
> Для начала можно написать на расте хоть что-нибудь полезное, кроме нескольких процентов
> кода Firefox'а (который, похоже, скоро будет окончательно вытеснен Хромом).ну тока что ж было https://www.opennet.ru/opennews/art.shtml?num=50387
Я же сказал "что-нибудь полезное", а не очередной "hello world".
У вас так себе представление о hello world.
> Взять и переписать всё на Rust!На Dvast!
На shell надёжнее.
> Взять и переписать всё на Rust!...может только пидa...
На Обероне же!))
Статистика столь же вздорна, как рейтинг TIOBE.
Уязвимости ИЩУТ в серьезном коде (это С в первую очередь) и НИКТО НИКОГДА не будет искать в 99% кода, написанного на РНР или JS.
По факту, эти "конкретные цифры" - примерная оценка риска превращения сферического коня в вакууме в сверхновую.
> НИКТО НИКОГДА не будет искать в 99% кода, написанного на РНР или JS.Доооо... учитывая, что поиметь хомячка (стырить номер кредитки или помайнить крипту) легче всего именно через хакнутый сайт на Пыхе.
Вот только сайты на Пыхе, взлом которых хотя бы теоретически может окупиться, составляют менее 1% кода, написанного на Пыхе.
Ломать могут популярные CMS, например. Это ложка соли (причем сплошь и рядом вполне приличной и безопасной) в море говнокода на Пыхе, которым завален интернет.
Ну, если конь оладает достаточной массой для зажигания термоядерной реакции, то почему нет-то...
C++ - это неточная характеристика. Это может быть Си, Си с классами, Си++ 98, С++11/14/17 - и всё это фактически разные языки.
> C++ - это неточная характеристика. Это может быть Си, Си с классами,
> Си++ 98, С++11/14/17 - и всё это фактически разные языки.//оффтоп
я был лучшего мнения о мире Си*
Если руки не ижжопы, то одно является суперклассом другого и обратно совместимо. Так что, всякие C++123456 используют немногие программисты. В основном - те, кто хотел и просил новые фичи, и те, кто только начал изучать ЯП.
Заодно видно, что в отличие от Си открытого софта на Си++ совсем немного.
Ну да, всякие там Хромиумы, Огнелисы, Электроны, нодджэйэсы с джавамашинами, Либреофисы и прочие КДЕ с Qt не в счёт.
Большие legacy проекты. Но на этом список и заканчивается.
На Visual Basic-е 0%. Срочно все переходим на Visual Basic!
Для C++ в точности тот же набор ошибок, что и для C (даже порядок примерно тот же). При этом он ничуть не менее популярный. Но в рейтинге почему-то значительно ниже.
Я чего-то не понимаю, для него доступны лучшие анализаторы или что?
Просто те ошибки в "С++", вроде выхода за границы буфера, на самом деле из подмножества Си. Если не писать на С++ как на Си, то и ошибок этих нет.
Процедурное программирование до сих пор остаётся самым верным направлением для нынешних ЭВМ, поэтому не язык виноват, а его дырозатыкательное использование. Если кому-то нужны классы, то тут вы совершенно правы: используйте Си++, но это частный случай. В остальных -- только Си, только истинна!
> Процедурное программирование до сих пор остаётся самым верным направлением для нынешних
> ЭВМ, поэтому не язык виноват, а его дырозатыкательное использование. Если кому-то
> нужны классы, то тут вы совершенно правы: используйте Си++, но это
> частный случай. В остальных -- только Си, только истинна!
>Why, Mr. Anderson, why? Why, why do you do it? Why, why get up? Why keep fighting? Do you believe you're fighting for something, for more than your survival? Can you tell me what it is, do you even know? Is it freedom or truth, perhaps peace — could it be for love? Illusions, Mr. Anderson, vagaries of perception. Temporary constructs of a feeble human intellect trying desperately to justify an existence that is without meaning or purpose. And all of them as artificial as the Matrix itself. Although, only a human mind could invent something as insipid as love. You must be able to see it, Mr. Anderson, you must know it by now! You can't win, it's pointless to keep fighting! Why, Mr. Anderson, why, why do you persist?
Ну, то есть, самый безопасный язык - Ruby.... Логично, что он так популярен для веба.
линь тоже считался очень безопасной системой пока его не начали использовать на 80% серверов в интернете))) а потом... потом начался поиск дыр. и как мы видим идет до сих пор. одно хорошо пока никто не додумался переписать политику прав доступа иначе уже гуляли бы вирусы и антивири под линя повсюду)) а мак в свое время тоже не знал , что такое антивирь(еще на powerG), но перевели на интелл и вуаля , стал не на много лучше винды.))
> линь тоже считался очень безопасной системой пока его не начали использовать на
> 80% серверов в интернете))) а потом...Сначала, для использования на 80% серверов увеличили на 800% кодовую базу на 146% худшего качества кодом (цифры, как и у предыдущего анонима, взяты от балды).
Ну и про "считался очень безопасной" - это все же не в нашей вселенной.
а я о чем. безопасно только выключить свет)) и то не всегда)) чем реже используется ось, тем меньше знают о её дырах. а они есть всегда. если не в самой программе, то в её стыковке с другими. так что нет безопасных программ, как и языков программирования. в си/с++ так много ошибок выявили только потому , что на них написана подавляющая часть кода. ну и они более требовательны к знанию языка и железа. это как управлять авто с механикой или автоматом. и то и то едет, но на механике ты управляешь действительно полностью и сам. так что много косяков от ручного управления теми , кто недостаточно готов.)
> это как управлять авто с механикой
> или автоматом. и то и то едет, но на механике ты
> управляешь действительно полностью и сам.Угу, без синхронизатора, с подгазовкой и двойным переключением … ох уж эти аналогии.
нас и такому обучали к слову. и перегазовку и без синхронизатора могем)) кстати автоматы до сих пор не перевариваю. даже современные. ну не люблю я их. хотя на питоне писать проще и быстрее, правда если это не касается глубоко системных утилит. а прикладные оч здорово. особенно связанное с расчетами и формулами. ну просто милое дело.
>нас и такому обучали к слову. и перегазовку и без синхронизатора могемДа... ещё умеешь тормозить прерывисто круче 4-канальной АБС (у тебя наверное 4 педали тормоза стоит). И "газ-тормоз" и прочие куль-приёмчики из 40-х годов активно применяешь. Зачем останавливаться на трансмиссии, надо все новомодные системы выкорчевать.
Как-то ехали мы по М10 2-го января, красота - трасса пустая, ляпота. Ехали мы потихонечку, отчасти потому что гололед, отчасти что последствия НГ до конца не выветрились. И тут обгоняет нас мажор на джипе, и только он после обгона решил оттормозиться, как завертело его, и жoпой назад на встречку вынесло. Мы такие окуевшие мимо проезжаем и друг на друга смотрим - вот тебе и хваленая ABC, и прочие навороты за сотни нефти. Был бы обычный день - пушной зверь бы к москалю тут же пришел.ЗЫж А "куль-приёмчики из 40-х годов" здорово выручили меня на зимних серпантинах Кавказа, когда меня только-только получившего права, призвали в армию и засунули в эту задницу. Ну, и конечно, когда наблюдаешь в ущелье 200-ми метрами ниже чью-то переломанную и сгнившую раму - это, знаешь, мотивирует весьма и весьма.
>обгоняет нас мажор на джипеповеяло прохладой... виноват конечно автомат.
Нет, виноваты дураки, которые думают, что всякие АБСы и прочие "бортовые компьютеры" спасут их от необходимости своей головой думать, потому как - "такие деньги плочены!"
> и перегазовку и без синхронизатора могем))Только не на чем уже демонстрировать. Разче что на велосипедах.
надо запретить писать на си/сипп и пхп
а лучше - вообще запретить писать. на чём либо и кому-либо. Вот увидите - сразу ошибки все исчезнут.
>а лучше - вообще запретить писатьПисать нужно мне.
А стучать можно? Азбукой Морзе?
Да Вы, товарищ Майор, вроде и так пишете.
и все вернется в прошлый век)) потому как не будет ни операционных систем, ни системных программ под них)) все ведь строится на си/с++. выкинь и все что останется это веб без программ для его использования. мда наделали языков , а дельного как тот же си/с++ так и нет.
Пару новостей назад было про микроядерную ОС на ржавчине, так что не надо тут вашего елея религиозного про си
читал. но не верю я в такие чудеса как безопасное программирование. всегда найдется дыра.
Безопасного программирования даже в теории не существует. А вот безопасный язык теоретически существует. И некоторые ныне существующие языки даже приближаются к этому званию.
Даже теоретически не существует. Пока человек будет разрабатывать язык программирования - всегда найдется дыра.
> Пару новостей назад было про микроядерную ОС на ржавчине, так что не
> надо тут вашего елея религиозного про сиМикроядерных ОС и на C хватает: начиная с Minix, заканчивая QNX и используются они гораздо более активно новодела на Rust.
FORTRAN и перфокарты спасут мир! Назад в будущее!
Си критикует дураки; настоящие программисты преклоняются перед Си и используют его благоговейно и с любовью.
>настоящие программисты-JSники, преклоняются перед Си с благоговением и любовью, ведь на большее их знаний матчасти не хватает.поправил, не благодарите.
- сказал обиженный Java-погромист...
А мне очень нравится обращаться к ячейкам памяти массива -- это просто высшее удовольствие: работать вроде бы на высоком уровне по сравнению с ассемблером. Си -- это чань, а Карниган и Ричи -- это идеал программистов.
Тут бы неплохо нормализацию к объёму кода на данных языках. А то получается, что в коде на сях и пыхе дыр дофигища, но вот незадача - на этих языках и кода на порядок, если не на порядки (в случае сравнения с какими-нибудь рубями) больше.
Какие-то чуваки наговнякали код, проигнорировав всё изобилие средств языка для написания безопасного кода. Другие чуваки посмотрели на код первых и такие: "О, какой небезопасный язык программирования!". И все на полном серьёзе это обсуждают?
Опять же - как ныть в энторнетиках про овнокодеров - так каждый горазд, а как спросишь кто будет ментором у йуного падавана - так разом все попрятались.
самый толковый пост на весь топик. Жаль что можно ставить только один плюс
А разве не пхп и жс должны за первое место спорить?
> А разве не пхп и жс должны за первое место спорить?Напомните пожалуйста, PHP и JS уже "selfhosted" или все еще "уже почти да, но все еще нет"?
И значит ли это , что дыры в интерпретаторе JS (пых мне искать лень), как и всей той куче (под)компонентов, благодаря которым JS вообще запускается -- проблемы плюсанутых-сишников и никак не затрагивают гордых архитекторов приложений в мировой паутине ☺?https://www.cvedetails.com/vulnerability-list/vendor_id-1224...
> which allows remote attackers to cause a denial of service (memory corruption) or possibly have unspecified other impact via crafted JavaScript code.
> mishandles external string sizes, which allows remote attackers to cause a denial of service (out-of-bounds read) via crafted JavaScript code.https://www.cvedetails.com/cve/CVE-2013-6640/
> he DehoistArrayIndex function in hydrogen-dehoist.cc (aka hydrogen.cc) in Google V8 before 3.22.24.7, as used in Google Chrome before 31.0.1650.63, allows remote attackers to cause a denial of service (out-of-bounds read) via JavaScript code that sets a variable to the value of an array element with a crafted index.
>
Сейчас бы публиковать ненормированную статистику по языкам.