>> А в cat не было багов?
> У него и опций уже с десяток. А баги не только сишники
> делаютДык ты можешь привести пример сишной "популярной программы/библиотеки без 0дней дырени в истории" или нет?
> log4j подтвердит.
О, они чуть-ли не тьюринг-полный рантайм шаблонизатор запилили с сознательно заложенной возможностью запуска произвольного кода. Они бы ещё rm -rf /* сделали бы. Это настолько за пределами разумного, что это почти уже не баг, а злоумышленный бекдор.
То есть, в принципе засовывать пользовательские данные в шаблон -- это класть себе под ноги грабли, которые затем надо очень внимательно и аккуратно обходить. Баги типа "injection" -- это довольно распространённый класс багов. Но ежели ты не просто подставляешь значения, и тьюринг-полный язык делаешь для форматной строки, то ты можешь считать, что ты уже выстрелил себе в ногу, и если нога этого ещё не чувствует, то лишь потому что скорость движения пули ограничена, равно как и скорость распространения сигналов по нервной системе.
> И CVE на растовый софт, а они что, особые?
Да. Пойти и посчитай количество проблем с памятью у растового софта. Или чуть шире: количество багов, которые при эксплуатации могут дать что-то, кроме DoS, вызванного падением процесса в полуконтролируемом формате.
Если ты возьмёшь две рандомизированные выборки CVE -- одну C'шную, а другую Rust'овую, то даже если оттуда кто-нибудь эти выбранные описания багов "анонимизирует", то есть перепишет так, чтобы суть бага осталась бы, а всё, что позволяет идентифицировать язык было бы удалено, то ты всё равно сможешь сказать, какая из этих выборок сишная, а какая растовая.
Ты даже можешь попросить эти выборки "анонимизировать" ещё сильнее, оставить лишь потенциал для эксплуатации даваемый багом -- DoS, DDoS, OOM, arbitrary code execution, -- и по этой очень обрывочной информации сказать какая выборка была создана на основании растовых CVE, а какая -- на основании сишных.
То есть -- да, CVE на растовый софт особые.