Чудес не бывает. А использовать уязвимость библиотек можно везде, в любой ОС. И это не раз доказывали умельцы, эксплуатирующие огрехи в различных библиотеках и программах. Чисто физически человек не способен создать сложное ПО полностью не подверженное ошибкам. Слишком много потребуется времени, слишком много будет потрачено средств на вылизывание кода и его верификацию. А если вспомнить о том, что ошибки встречаются и в микрокоде CPU, и в BIOS и везде, где есть хоть какое-то программное обеспечение, написанное человеком. Одни баги исправляют, новые создают. Спросите любого программиста на C-подобном языке, и он признает что иногда случались у него ошибки в коде типа: if(условие==значение){наш код} Так и просится вместо двух == одно. И иногда случается такая опечатка. Это очень распространённый случай. А ведь есть и другие, гораздо более страшные ошибки. И очень часто поданные на вход какой-то функции/методу данные не верифицируют в надежде на то, что они и так верны, а верификация в сто раз сложней этой функции/метода, здорово снижает скорость работы нашей функции, да и до память очень жадна. В результате всех факторов:усталость, халатность, надежда что тысячу раз проверенный на разных наборах данных код отлично работает, и т.д. мы имеем много потенциальных дыр практически везде. И отследить ошибки в коде бывает нелегко. В том же примере с if присваивание при опечатке будет приводить к ошибке только при определённых условиях:если вызовут эту функцию, если другие проверки не закончатся выходом из функции и т.д. А если этих условий так много, что ошибочный код выполняется один раз на миллион, или реже? Его могут и не находить годами. Так что без паники, всё нормально. Так всегда было, есть и будет. Пока человек склонен ошибаться, во всяком случае.
|