« Отговор #8 -: Jul 21, 2011, 22:53 »
Единствената приемлива причина, според която линукс е по-неподходяща цел за вируси, троянски коне и т.н, като се абстрахираме от далеч по-ниският дял на десктоп сегмента е голямото разнообразие на екосистемата. След като сорса е достъпен, съществуват ужасно голям брой билдове на този софтуер, билднати с различни параметри, на различни архитектури, с apply-нати различни пачове, накрая пакетирани в различни дистрибуции, с различна дефолтна конфигурация. Доста трудно е да се пише malware, който да работи на огромен брой линукс системи. Трябва първо да успее да се изпълни на машината, за да я зарази - примерно чрез браузърен експлойт или дупка в някоя дефолтна услуга. Само че версии и билдове на браузъри и демони доволно много. Трябва да си ескалира правата. Само че различни среди колкото искаш и е трудно да се напише reliable локален експлойт, който да работи на всички. Трябва да се скрие добре - което е неефективно с каквито и да било малоумни userspace трикове от сорта на прихващане на библиотечни функции и LD_PRELOAD - трябва кърнълски код за целта. Обаче дистрибуции много, ядра много. И така нататък.
В контраст с това, Windows или MacOSX не могат да се похвалят с това. При тях сорса е proprietary и хората получават някой си build на този софтуер. Ако се открие проблем, примерно zero-day buffer overflow някъде, същите параметри (payload, офсети и адреси в паметта) ще сработят на всички примерно 32-битови windows XP-та. С малко повече занимавки се пригажда и за 64-битови версии, и за Виста, седмица и така нататък. Възможностите не са чак толкова малко, но са нищо в сравнение с линукс. Имаш malware, който работи надеждно на голям процент от юзърските системи. Сега ОК, има разни канали за ъпдейтване на софтуера като Windows update, само дето болшинството от жертвите са келеши с пиратски копия, които не могат да се ъпдейтват. И нещата просто цъфтят.
Всички останали аргументи, които често се споменават, от сорта на сорса бил отворен и милиони хора го audit-вали или че security модела в линукс бил мега-гига-хипер добре замислен, са несериозни. Да, вярно е че кода е отворен и повече хора го ровят за security проблеми, от друга страна една хубава част от хората, които го правят, нямат интерес да report-ват бъговете. Освен това, development-а обикновено е хаотичен, прекалено бързо се вкарват нови features без достатъчно много тестове и code review, проблеми се introduce-ват по-бързо, отколкото се решават. Еле пък че security модела в линукс бил много добре дизайн-нат. Това са пълни глупости. Традиционният секюрити модел в юникс е малоумен и груб, това е истината. Много прост пример мога да дам - традиционно няма предвиден механизъм, който да регулира кой процес какви сокети може да отваря. Няма как да кажеш на apache процеса да не отваря outbound конекции към порт 80 примерно. Да, има selinux и подобни неща, но администрацията е достатъчно затормозяваща и за хора, ползвали линукс с години. Друг пример - привилегиите на файловата система - в юникс позволенията се "назначават" с ужасно голяма гранулярност. Няма начин няколко потребителя да имат write права върху един файл без да са в една и съща група и файла да е собственост на тази група и group-writable. Това не е ли малоумно? Малоумно е. ОК, разрешава се с extended ACL, но аз мога да се хвана на бас, че 90% от хората, ползващи линукс, никога не са ползвали setfacl командата.
И такива неща.