Radoslav Panev

SysAdmin and DevOps

Пробуждането на разсеяния програмист

16 Jun 2014 » Разни

Хакерските атаки и пробиви в сигурността може да доведат до създаването на автоматизирани системи за проверка на написания код

Софтуерът не е сигурен. Това е тъжната реалност, която все повече започва да изпъква на фона на всички разкрития за проблеми в най-различни платформи. Компании и специалисти търсят най-разнообразни решения, но засега без особени резултати. Което провокира появата на ново, по-нетрадиционно предложение, което цели съставянето на методи, които да накарат програмистите да обръщат повече внимание на качеството на своите приложения.

Само преди няколко седмици еBay например обяви, че е жертва на хакерска атака, която е компрометирала данните на много потребители. Тя помоли своите 145 млн. клиенти да сменят паролите си за всеки случай. Пак тази пролет беше открит и сериозен проблем в сигурността на стандарта за криптиране на интернет трафика OpenSSL. Пробивът, наречен Heartbleed, практически позволяваше на хакерите да заобикалят системите за сигурност и ако са достатъчно търпеливи, да изтеглят малки блокчета с информация, които след това могат да „сглобят“. Съвсем наскоро беше открита уязвимост и в протокола TLS. Оказва се, че и двете грешки са дело на един и същ програмист и са съществували още от самото създаване на софтуера преди повече от 15 години.

Заложено в системата

Голяма част от програмите се пишат на езиците за програмиране C и C++. Той е обичан от разработчиците, защото разполага с множество възможности. Но тази му всеобхватност създава и проблеми, тъй като става много лесно да се допуснат грешки и да се направят пропуски, които след това да останат незабелязани. Причина за множеството неволи със сигурността на софтуера е и голямата динамика на индустрията. Високата конкуренция притиска разработчиците и често те трябва да правят труден избор: да забавят продукта си, докато той е напълно изпипан (с което рискуват конкуренцията да превземе сегмента) или да пуснат софтуера си на пазара, преди да са изчистили всички проблеми и да правят това в движение. Обикновено повечето компании избират втория вариант, който пък има и допълнителна уловка: започване на работа по следващия проект и така ресурсите за поддръжка на дадения продукт стават още по-малко.

Разбира се, това не означава, че фирмите пускат разработките си веднага, щом програмистите напишат последния ред на софтуера и го компилират. Всеки продукт преминава редица тестове, които да проверят сигурността й. Проблемът е, че в повечето случаи тези проверки са разработени от същите хора. Както знаем, веднъж допусната, една грешка продължава да се повтаря, докато не бъде посочена като такава. А това може да отнеме доста време, като в случая на OpenSSL – повече от 15 години. Има и още един доста показателен пример. Проблем в сигурността на iPhone и Mac компютрите на Apple позволяваше да се прихващат безжичните комуникации на тези устройства. Пробивът се оказва дело на програмист, който неволно копирал код на грешното място в програмата. А самият софтуер го е допуснал, защото конкретната използвана функция в езика за програмиране С, го е позволявала. Ироничното е, че за тази функция се знае, че е проблемна още преди да е въведена в C, отбелязва компютърният специалист Симсън Гарфинкъл пред онлайн изданието Technology Review. Гарфинкъл е и професор по компютърни науки.

Практически няколко фактора се крият в основата на всички софтуерни уязвимости. Те се коренят на едно място – неволните пропуски при писането на код и при самото създаване на езиците за програмиране. Тоест това е ситуация, която няма как да бъде избегната, освен ако не се направи тотално пренаписване на цялата софтуерна индустрия в буквалния смисъл на думата.

Разумното решение

Разбира се, няма как изведнъж да се пренапишат милиони програми или да се промени начинът на тяхното създаване. Нито пък подобна идея би била рентабилна и приложима в практиката. Гарфинкъл обаче препоръчва да се вземе пример от физическия свят, който също не е имунизиран от човешките грешки.

За сметка на това са въведени правила и норми, които се спазват и практически елиминират голяма част от потенциалните проблеми. „Строителите имат регулация какви материали да използват, определени характеристики на сградите имат задължителни минимални критерии, на които трябва да да отговарят. Строителните инспектори редовно проверяват в процеса на изграждане на сградата дали всичко отговаря на изискванията“, отбелязва специалистът.

В света на софтуера свободата е доста по-голяма, в което няма нищо лошо. Гарфинкъл предлага все пак да се въведат единни стандарти при писането на софтуер, които да гарантират някакво поне минимално ниво на сигурност във всяко приложение. След това трябва да се разработи и система, която да извършва проверки на софтуера.

Тази система трябва да се поддържа както от хора, така и от интелигентни софтуерни системи, които да тестват всеки програмен код. Софтуерът може да преглежда работата на програмистите почти в реално време и когато открие проблем, да го коригира автоматично, или да връща разработката на нейните създатели и да не я допуска обратно, докато всичко не бъде коригирано.

Вече има софтуерни разработки, които могат да извършват подобни проверки в програмите, но те са насочени най-вече към откриването на т.нар. бъгове в производителността и стабилността им на работа. Често и самите програмисти не знаят за наличието на такива инструменти и не ги използват. Привличането на вниманието към този проблем и взимане на мерки навреме, може да има доста голямо значение за глобалната икономика.

Ново проучване на Центъра за стратегически и международни проучвания показва, че само през тази година кибератаките ще струват около 445 млрд. долара на световната икономика. Освен това само в САЩ и Европа те ще доведат до загубата на 350 хил. работни места. „Единствено чудо може да накара щетите от кибератаки да спрат да нарастват занапред“, коментира пред телевизия CBS Стюард Бейкър, съавтор на проучването.

Източник : Капитал