Выбрать главу

Большинство компьютеров снабжены плохим ПО, потому что за редким исключением рынок не поощряет высококачественные программы. «Хорошо, быстро, дешево – выберите любые две из трех составляющих». Выбросить на рынок недорогую и быстро сделанную программу куда проще, чем корпеть над созданием качественного продукта. Что примечательно, на протяжении какого-то времени большинство из нас считает плохо написанное ПО достаточно хорошим.

Такой подход прижился в области компьютерных технологий и проявился на всех ее уровнях. Для среднестатистической компании гораздо важнее получить продукцию с опережением графика и в рамках бюджета, нежели приобрести качественное ПО. Университеты c большей вероятностью ограничатся кодом, который едва работает, чем приобретут надежную программу. И мы как потребители ПО чаще всего не готовы платить дополнительные деньги за его улучшение.

Современные программы содержат мириады ошибок, некоторые из них – неотъемлемая часть сложного ПО{65} (подробнее об этом позже), однако большинство возникает на начальном этапе создания программы и не исправляется в процессе разработки. Соответственно, к потребителю ПО поступает с ошибками. Способность работать с некачественным кодом свидетельствует о нашем мастерстве.

В 2002 г. руководство компании Microsoft всерьез задумалось над тем, чтобы свести к минимуму количество уязвимостей в системе безопасности своих программ, и на улучшение процесса разработки ПО ушло целое десятилетие{66}. Продукты Microsoft все еще несовершенны – это за пределами существующих на сегодняшний день технологических возможностей, – но качество их намного выше среднего уровня. Компания Apple славится своим высококачественным ПО{67}. Как и Google. Некоторые небольшие, но критически важные сегменты ПО с самого начала отличались высоким уровнем исполнения. Например, программы для авионики написаны в соответствии с очень жесткими стандартами качества. Также и в НАСА: контроль за качеством ПО космических челноков обязателен{68}.

Столь разное отношение к вопросам безопасности ПО у ИТ-специалистов разных отраслей продиктовано мерой ответственности и степенью рисков. Стратегически важные сферы имеют и более высокую степень защиты. Именно поэтому в НАСА действуют консервативные стандарты гарантии качества. На бытовом же уровне, пользуясь такими относительно высококачественными операционными системами, как Windows, macOS, iOS и Android, мы постоянно их обновляем и пропатчиваем.

Некоторые ошибки (баги) в ПО, безусловно, – уязвимости в системе безопасности, чем не преминут воспользоваться атакующие. Например, ошибка переполнения буфера позволяет злоумышленнику захватить контроль над компьютером и принудить его выполнять произвольные команды{69}. И таких багов множество. Точное количество не поддается исчислению. Мы не знаем, сколько ошибок следует рассматривать в качестве уязвимостей и сколько уязвимостей можно потенциально использовать{70}. На эту тему ведется самый настоящий диспут. Я твердо уверен, что большие программные системы содержат тысячи уязвимостей, а для взлома достаточно всего одной. Иногда ее просто найти, иногда – нет.

И хотя уязвимостей много, нельзя сказать, что они равномерно распределены по программе. Есть такие, которые выявить легко, и такие, которые выявить трудно. Инструменты, автоматически обнаруживающие и устраняющие или исправляющие целые классы уязвимостей, существенно повышают безопасность ПО. Очевидно, что, если кто-то выявил уязвимость, велика вероятность, что вскоре ее обнаружит (или уже обнаружил) другой. Heartbleed – большая брешь в безопасности интернета. Эту ошибку упускали из виду целых два года{71}, зато открыли с разницей в несколько дней два исследователя, действующих независимо друг от друга. Уязвимости Spectre и Meltdown в компьютерных чипах существовали по меньшей мере лет десять, пока в 2017 г. их не обнаружили сразу несколько человек{72}. Я не нахожу объяснения этому феномену, поэтому ограничимся констатацией того факта, что параллельное обнаружение уязвимостей – это реальность. К этому вопросу мы вернемся в главе 9, когда будем говорить о правительствах, накапливающих программные уязвимости с целью шпионажа и создания кибероружия.

Взрывное увеличение числа устройств, взаимодействующих с интернетом вещей, означает, что количество программ, строк кодов, а значит, ошибок и уязвимостей станет расти в геометрической прогрессии. Сохранение же дешевизны умных вещей – это привлечение к их созданию малоквалифицированных программистов, плохая отладка процесса разработки ПО и частое повторное использование кодов, то есть в случае широкого распространения уязвимости вред от нее будет огромным{73}.

вернуться

65

Roger A. Grimes (8 Jul 2014), “5 reasons why software bugs still plague us,” CSO, https://www.csoonline.com/article/2608330/security/5-reasons-why-software-bugs-still-plague-us.html. David Heinemeier Hansson (7 Mar 2016), “Software has bugs. This is normal,” Signal v. Noise, https://m.signalvnoise.com/software-has-bugs-this-is-normal-f64761a262ca.

вернуться

66

Abhishek Baxi (10 Mar 2014), “From a Bill Gates memo to an industry practice: The story of Security Development Lifecycle,” Windows Central, https://www.windowscentral.com/bill-gates-memo-industry-practice-story-security-development-cycle.

вернуться

67

Adrian Kingsley-Hughes (19 Dec 2017), “Apple seems to have forgotten about the whole ‘it just works’ thing,” ZDNet, http://www.zdnet.com/article/apple-seems-to-have-forgotten-about-the-whole-it-just-works-thing.

вернуться

70

Eric Rescorla (1 Jan 2005), “Is finding security holes a good idea?” IEEE Security & Privacy 3, no. 1, https://dl.acm.org/citation.cfm?id=1048817. Andy Ozment and Stuart Schechter (1 Jul 2006), “Milk or wine: Does software security improve with age?” in Proceedings of the 15th USENIX Security Symposium, https://www.microsoft.com/en-us/research/publication/milk-or-wine-does-software-security-improve-with-age.

вернуться

71

Heather Kelly (9 Apr 2014), “The ‘Heartbleed’ security flaw that affects most of the Internet,” CNN, https://www.cnn.com/2014/04/08/tech/web/heartbleed-openssl/index.html.

вернуться

72

Andy Greenberg (7 Jan 2018), “Triple Meltdown: How so many researchers found a 20-year-old chip flaw at the same time,” Wired, https://www.wired.com/story/meltdown-spectre-bug-collision-intel-chip-flaw-discovery.