Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Пластырь представляет собой набор изменений в компьютерной программе или поддерживающих ее данных , предназначенных для обновления, исправления или улучшения. [1] Это включает исправление уязвимостей безопасности [1] и других ошибок , при этом такие исправления обычно называют исправлениями ошибок или исправлениями ошибок . [2] [ необходим лучший исходный код ] Патчи часто пишутся для улучшения функциональности, удобства использования или производительности программы.

Патчи могут быть установлены либо под программным управлением, либо человеком-программистом с использованием инструмента редактирования или отладчика . Они могут применяться к программным файлам на запоминающем устройстве или в памяти компьютера. Патчи могут быть постоянными (до повторной установки) или временными.

Установка исправлений позволяет изменять скомпилированные объектные программы и объектные программы на машинном языке, когда исходный код недоступен. Это требует от человека, создающего патч, глубокого понимания внутренней работы объектного кода, что сложно без тщательного изучения исходного кода. Кто-то, не знакомый с программой, к которой применяется исправление, может установить исправление с помощью служебной программы исправлений, созданной другим человеком, который является администратором. Даже если исходный код доступен, установка исправлений позволяет вносить небольшие изменения в объектную программу без необходимости перекомпиляции или повторной сборки. Для незначительных изменений программного обеспечения часто проще и экономичнее распространять исправления среди пользователей, чем распространять заново перекомпилированную или перекомпилированную программу.

Несмотря на то, что они предназначены для устранения проблем, плохо разработанные исправления могут иногда создавать новые проблемы (см. Регрессию программного обеспечения ). В некоторых особых случаях обновления могут сознательно нарушить функциональность или отключить устройство, например, путем удаления компонентов, для которых поставщик обновлений больше не имеет лицензии.

Управление исправлениями является частью управления жизненным циклом и представляет собой процесс использования стратегии и плана того, какие исправления следует применять к каким системам в определенное время.

Типы [ править ]

Бинарные патчи [ править ]

Патчи для проприетарного программного обеспечения обычно распространяются в виде исполняемых файлов, а не исходного кода . При запуске эти файлы загружают в память программу, которая управляет установкой кода исправления в целевую программу (ы) на диске.

Исправления для другого программного обеспечения обычно распространяются в виде файлов данных, содержащих код исправления. Эти файлы данных считываются служебной программой исправлений, которая выполняет установку. Эта утилита изменяет исполняемый файл целевой программы - машинный код программы.- путем модификации его новым кодом исправления. Если новый код умещается в пространстве (количестве байтов), занимаемом старым кодом, его можно заменить путем перезаписи непосредственно поверх старого кода. Это называется встроенным патчем. Если новый код больше старого, утилита исправления добавит загрузочную запись (и), содержащую новый код, в объектный файл целевой программы, для которой выполняется исправление. Когда исправленная программа запускается, выполнение направляется к новому коду с инструкциями ветвления (переходами или вызовами), исправленными в том месте в старом коде, где требуется новый код. На ранних 8-битных микрокомпьютерах, например Radio Shack TRS-80 , операционная система включает утилиту PATCH / CMD, которая принимает данные исправлений из текстового файла и применяет исправления к исполняемым двоичным файлам целевой программы.

Небольшие исправления машинного кода в памяти можно вручную применить с помощью служебной программы отладки системы, такой как отладчики DDT от CP / M или отладчики DEBUG MS-DOS . Программисты, работающие на интерпретируемом BASIC, часто использовали команду POKE для изменения функциональности процедуры системного обслуживания или самого интерпретатора.

Патчи исходного кода [ править ]

Патчи также могут распространяться в виде модификаций исходного кода. В этом случае исправления обычно состоят из текстовых различий между двумя файлами исходного кода, называемых « различиями ». Эти типы исправлений обычно появляются в проектах программного обеспечения с открытым исходным кодом . В этих случаях разработчики ожидают, что пользователи сами скомпилируют новые или измененные файлы.

Большие патчи [ править ]

Поскольку слово «патч» имеет оттенок небольшого исправления, для крупных исправлений может использоваться другая номенклатура. Объемные исправления или исправления, которые существенно изменяют программу, могут распространяться как « пакеты обновления » или как «обновления программного обеспечения». Microsoft Windows NT и ее преемники (включая Windows 2000 , Windows XP , Windows Vista и Windows 7 ) используют терминологию «пакет обновления». [3] Исторически для обозначения этих обновлений IBM использовала термины «пакеты исправлений» и «корректирующая служебная дискета». [4]

История [ править ]

Программная лента для Harvard Mark I 1944 года , одного из первых цифровых компьютеров. Обратите внимание на физические заплатки, используемые для исправления пробитых отверстий путем их закрытия.

Исторически сложилось так, что поставщики программного обеспечения распространяли исправления на бумажной ленте или перфокартах , ожидая, что получатель вырезает указанную часть исходной ленты (или колоды) и вставит (отсюда и название) заменяющий сегмент. Более поздние версии патчей использовали магнитную ленту. Затем, после изобретения съемных дисководов, патчи приходили от разработчика программного обеспечения через диск или, позже, CD-ROM по почте . Благодаря широкому доступу в Интернет , загрузка исправлений с веб-сайта разработчика или через автоматические обновления программного обеспечения часто становилась доступной для конечных пользователей. Начиная с Apple Mac OS 9и Microsoft Windows ME , операционные системы ПК получили возможность получать автоматические обновления программного обеспечения через Интернет.

Компьютерные программы часто могут координировать исправления для обновления целевой программы. Автоматизация упрощает задачу конечного пользователя - ему нужно только выполнить программу обновления, после чего эта программа гарантирует, что обновление цели происходит полностью и правильно. Пакеты обновления для Microsoft Windows NT и ее преемников, а также для многих коммерческих программных продуктов используют такие автоматизированные стратегии.

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

Заявление [ править ]

Размер патчей может варьироваться от нескольких байтов до сотен мегабайт ; таким образом, более значительные изменения подразумевают больший размер, хотя это также зависит от того, включает ли исправление файлы целиком или только измененные части файлов. В частности, патчи могут стать довольно большими, когда изменения добавляют или заменяют непрограммные данные, такие как графические и звуковые файлы. Такие ситуации обычно возникают при установке исправлений в компьютерные игры . По сравнению с первоначальной установкой программного обеспечения, установка исправлений обычно не занимает много времени.

В случае операционных систем и программного обеспечения компьютерных серверов патчи играют особенно важную роль в исправлении дыр в безопасности. Некоторые критические исправления связаны с проблемами с драйверами. [5] Для исправлений может потребоваться предварительное применение других исправлений или может потребоваться предварительное или одновременное обновление нескольких независимых программных компонентов. Чтобы облегчить обновление, операционные системы часто предоставляют средства автоматического или полуавтоматического обновления. Полностью автоматическим обновлениям не удалось получить широкую популярность в корпоративных вычислительных средах, отчасти из-за вышеупомянутых сбоев, но также и потому, что администраторы опасаются, что компании-разработчики программного обеспечения могут получить неограниченный контроль над своими компьютерами. [ необходима цитата ] Системы управления пакетами могут предлагать различные степени автоматизации исправлений.

Использование полностью автоматического обновление стало гораздо более широким распространением на потребительском рынке, в основном вследствие [ править ] о том , что Microsoft Windows добавлена поддержка для них [ когда? ] и Пакет обновления 2 для Windows XP (доступный в 2004 г.) включал их по умолчанию. Осторожные пользователи, особенно системные администраторы, обычно откладывают установку исправлений до тех пор, пока не смогут проверить стабильность исправлений. Microsoft (W) SUS поддерживает это. В случае больших исправлений или значительных изменений дистрибьюторы часто ограничивают доступность исправлений для квалифицированных разработчиков в качестве бета-теста .

Применение исправлений к микропрограммному обеспечению создает особые проблемы, поскольку часто требует предоставления совершенно новых образов микропрограмм, а не применения только отличий от предыдущей версии. Патч обычно состоит из образа прошивки в виде двоичных данных вместе со специальной программой, предоставленной поставщиком, которая заменяет предыдущую версию новой версией; материнская плата BIOSupdate - это пример обычного патча прошивки. Любая непредвиденная ошибка или прерывание во время обновления, например отключение электроэнергии, может сделать материнскую плату непригодной для использования. Производители материнских плат могут принять меры для предотвращения серьезных повреждений; например, процедура обновления может создать и сохранить резервную копию микропрограммы на случай, если она определит, что основная копия повреждена (обычно с помощью контрольной суммы , такой как CRC ).

Видеоигры [ править ]

Видеоигры получают исправления для устранения проблем совместимости после их первоначального выпуска, как и любое другое программное обеспечение, но их также можно применять для изменения правил или алгоритмов игры . Эти исправления могут быть вызваны обнаружением эксплойтов в многопользовательской игре, которые могут быть использованы для получения несправедливых преимуществ перед другими игроками. Часто можно добавить дополнительные функции и настройки игрового процесса. Подобные патчи распространены в шутерах от первого лица с возможностью многопользовательской игры , а также в MMORPG., которые, как правило, очень сложны с большим объемом контента, почти всегда в значительной степени зависят от исправлений после первоначального выпуска, где исправления иногда добавляют новый контент и возможности, доступные игрокам. Поскольку баланс и справедливость для всех игроков MMORPG могут быть серьезно нарушены в течение короткого промежутка времени из-за эксплойта, серверы MMORPG иногда отключаются с коротким уведомлением, чтобы применить критический патч с исправлением.

Иногда компании выпускают игры, зная, что в них есть ошибки. Компьютер Gaming World « s Scorpia в 1994 году осудил«компания-слишком много , чтобы упомянуть-кто выпустить некачественный продукт , зная , что они могут получить с исправлениями и обновлениями, и которые делает » платное -testers своих клиентов". [6]

В разработке программного обеспечения [ править ]

Исправления иногда становятся обязательными для исправления проблем с библиотеками или частями исходного кода для программ, которые часто используются или обслуживаются. Обычно это происходит в очень крупномасштабных проектах программного обеспечения, но редко в мелкомасштабных разработках.

В проектах с открытым исходным кодом авторы обычно получают исправления, или многие люди публикуют исправления, которые исправляют определенные проблемы или добавляют определенные функции, например поддержку местных языков за пределами локали проекта. В примере из ранней разработки ядра Linux (известного тем, что он опубликовал полный исходный код), Линус Торвальдс , первоначальный автор, получил сотни тысяч исправлений от многих программистов для применения к его исходной версии. Для повторяющихся исправлений существуют инструменты, такие как Coccinelle, для поддержки написания общих исправлений и их применения в нескольких местах одновременно (обычно в сотнях мест в случае ядра Linux). [7]

Apache HTTP Server изначально развивался как ряд исправлений , которые Белендорф сверенному улучшить NCSA HTTPD , отсюда название , которое подразумевает , что она представляет собой набор патчей ( «пятнистый сервер» ). В FAQ на официальном сайте проекта указано, что название «Apache» было выбрано из уважения к индейскому племени апачей . Однако объяснение «неоднородный сервер» изначально было дано на сайте проекта. [8]

Варианты [ править ]

Исправление [ править ]

Исправление или инженерное обновление Quick Fix (обновление QFE) - это единый накопительный пакет, который включает информацию (часто в форме одного или нескольких файлов), которая используется для решения проблемы в программном продукте (т. Е. Ошибки программного обеспечения). Обычно исправления делаются для решения конкретной ситуации с клиентом. Когда-то Microsoft использовала этот термин, но остановилась в пользу новой терминологии: General Distribution Release (GDR) и Limited Distribution Release (LDR). Blizzard Entertainment , однако, определяет исправление как «изменение, внесенное в игру, которое считается достаточно важным, чтобы его нельзя было отложить до обычного обновления контента».

Точка выпуска [ править ]

Точечный выпуск - это второстепенный выпуск программного проекта, особенно тот, который предназначен для исправления ошибок или небольших чисток, а не для добавления важных функций . Часто бывает слишком много ошибок, чтобы их можно было исправить в одном основном или второстепенном выпуске, что создает необходимость в выпуске точки.

Временное исправление программы [ править ]

Временное исправление программы или Временное исправление продукта (PTF), в зависимости от даты, - это стандартная терминология IBM для отдельного исправления ошибки или группы исправлений, распространяемых в форме, готовой к установке для клиентов. PTF иногда называли «ZAP». [9] Заказчики иногда иронично объясняют аббревиатуру как постоянное временное исправление или, что более вероятно, это исправление , потому что у них есть возможность сделать PTF постоянной частью операционной системы, если исправление устраняет проблему.

Патчи безопасности [ править ]

Исправление безопасности является изменение применяется к активу , чтобы исправить слабость , описанную уязвимостью. Это корректирующее действие предотвратит успешную эксплуатацию и устранит или снизит способность угрозы использовать определенную уязвимость в активе. Управление исправлениями является частью управления уязвимостями  - циклической практики выявления, классификации, исправления и уменьшения уязвимостей.

Патчи безопасности - это основной метод устранения уязвимостей в программном обеспечении. В настоящее время Microsoft выпускает свои исправления безопасности один раз в месяц, а в других операционных системах и проектах программного обеспечения есть группы безопасности, предназначенные для выпуска наиболее надежных исправлений программного обеспечения как можно скорее после объявления об уязвимости. Исправления безопасности тесно связаны с ответственным раскрытием информации .

Эти исправления безопасности критически важны для защиты бизнес-процессов. В 2017 году компании были поражены программой-вымогателем под названием WannaCry, которая шифрует файлы в определенных версиях Microsoft Windows и требует выкупа через BitCoin. В ответ на это Microsoft выпустила патч, который останавливает запуск программы-вымогателя.

Пакет обновления [ править ]

Пакет обновления, SP или пакет функций (FP) включает в себя набор обновлений, исправлений или улучшений программного обеспечения, поставляемых в виде одного устанавливаемого пакета. Компании часто выпускают пакет обновления, когда количество отдельных исправлений для данной программы достигает определенного (произвольного) предела или когда выпуск программного обеспечения стабилизируется с ограниченным количеством оставшихся проблем на основе отзывов пользователей и отслеживания ошибок, таких как Bugzilla. В больших программных приложениях, таких как офисные пакеты, операционные системы, программное обеспечение баз данных или управление сетью, нередко выпускают пакет обновления в течение первого или двух лет после выпуска продукта. Установка пакета обновления проще и менее подвержена ошибкам, чем установка множества отдельных исправлений, тем более при обновлении нескольких компьютеров по сети, где пакеты обновления распространены.

Неофициальные патчи [ править ]

Неофициальный патч - это некоммерческий патч для коммерческого программного обеспечения, созданный третьей стороной вместо исходного разработчика . Подобно обычному патчу, он устраняет ошибки или недостатки. Примерами являются исправления безопасности специалистами по безопасности, когда официальный патч самими производителями программного обеспечения занимает слишком много времени. [10] [11] Другими примерами являются неофициальные патчи, созданные игровым сообществом для видеоигры, которая стала неподдерживаемой брошенной программой . [12] [13]

Нашивки с обезьянами [ править ]

Патч обезьяны означает расширение или изменение программы локально (затрагивая только работающий экземпляр программы).

Горячие исправления [ править ]

Горячая установка исправлений , также известная как оперативное исправление или динамическое обновление программного обеспечения , представляет собой применение исправлений без завершения работы и перезапуска системы или соответствующей программы. Это решает проблемы, связанные с недоступностью услуги, предоставляемой системой или программой. [14] Метод может использоваться для обновления ядра Linux без остановки системы. [15] [16] Патч, который можно применить таким образом, называется горячим патчем или живым патчем . Это становится обычной практикой в ​​сфере мобильных приложений. [17] Такие компании, как Rollout.io, используют метод swizzling.для доставки горячих исправлений в экосистему iOS. [18] Другой метод установки «горячих» исправлений для приложений iOS - это JSPatch. [19]

Облачные провайдеры часто используют горячие исправления, чтобы избежать простоев клиентов при обновлении базовой инфраструктуры. [20]

Slipstreaming [ править ]

В вычислительной технике скользящий поток - это процесс интеграции исправлений (включая пакеты обновлений ) в установочные файлы их исходного приложения, чтобы в результате можно было выполнить прямую установку обновленного приложения. [21] [22]

Природа слипстриминга означает, что он требует начальных затрат времени и работы, но может сэкономить много времени (и, соответственно, денег) в долгосрочной перспективе. Это особенно важно для администраторов, которым поручено управлять большим количеством компьютеров, где типичной практикой установки операционной системы на каждый компьютер является использование исходного носителя и последующее обновление каждого компьютера после завершения установки. Это займет гораздо больше времени, чем запуск с более свежим (с возможностью потоковой передачи) источника и необходимость загрузки и установки нескольких обновлений, не включенных в исходный код с промежуточной загрузкой.

Однако не все исправления могут быть применены таким образом, и одним из недостатков является то, что, если обнаруживается, что определенное исправление является ответственным за последующие проблемы, указанное исправление не может быть удалено без использования исходного, не скользящего источника установки.

Системы обновления программного обеспечения [ править ]

Системы обновления программного обеспечения позволяют пользователям и разработчикам программного обеспечения управлять обновлениями. В 2017 году Пети cyberpandemic , финансового программного обеспечения "Медок" По обновление системы , как говорят, был взломан для распространения вредоносных программ с помощью своих обновлений. [23] [24] В блоге Tor эксперт по кибербезопасности Майк Перри заявляет, что детерминированные распределенные сборки, вероятно, являются единственным способом защиты от вредоносных программ, которые атакуют процессы разработки и сборки программного обеспечения, чтобы заразить миллионы машин за один, официально подписанный, мгновенный Обновить. [25] Диспетчеры обновлений также позволяют быстро и широко применять обновления безопасности. Менеджеры обновлений Linux, такие какSynaptic позволяет пользователям обновлять все программное обеспечение, установленное на их машинах. Такие приложения, как Synaptic, используют криптографические контрольные суммы для проверки исходных / локальных файлов перед их применением, чтобы гарантировать устойчивость к вредоносным программам. [26] [27]

См. Также [ править ]

  • Жизненный цикл выпуска программного обеспечения
  • Сопровождение программного обеспечения
  • Backporting
  • Dribbleware
  • Патч (Unix)
  • Портирование
  • База данных уязвимостей
  • Дельта-кодирование
  • SMP / E
  • Автоматическое исправление ошибок
  • Белая шляпа (компьютерная безопасность)

Ссылки [ править ]

  1. ^ a b «Microsoft выпускает самое большое исправление программного обеспечения за всю историю» . Рейтер . 2009-10-14. Архивировано из оригинального 16 октября 2009 года . Проверено 14 октября 2009 года .
  2. ^ «Что такое исправление ошибки? - Определение из Техопедии» . techopedia.com . Проверено 29 июля 2015 .
  3. ^ «Пакет обновления и Центр обновлений» . windows.microsoft.com . Проверено 1 июня 2015 .
  4. ^ «Словарь терминов» . www.tavi.co.uk .
  5. ^ Лю, Ашок (2012). Рабочая тетрадь Computercare по ремонту ноутбуков: 300 случаев устранения неисправностей и ремонта классических ноутбуков . АвторДом. п. 591. ISBN. 9781477205402. Проверено 8 января 2015 . Удалите исправление драйвера High Definition Audio KB835221 & KB888111 [...]
  6. ^ Scorpia (апрель 1994). "Так ты хочешь быть героем?" . Взгляд Скорпиона. Компьютерный игровой мир . С. 54–58.
  7. ^ Koyuncu, Анил; Bissyandé, Tegawendé F .; Ким, Донгсун; Кляйн, Жак; Монперрус, Мартин; Ле Траон, Ив (10 июля 2017 г.). «Влияние опоры инструмента в заплаточном строительстве» : 237–248. arXiv : 1812.07416 . DOI : 10.1145 / 3092703.3092713 . Цитировать журнал требует |journal=( помощь )
  8. ^ "Проект HTTP-сервера Apache" . 15 июня 1997 года. Архивировано 15 июня 1997 года.CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
  9. ^ «SPZAP (также известный как Superzap): динамически обновлять программы или данные» . Центр знаний IBM . Проверено 23 февраля 2020 .
  10. ^ Барвайз, Майк (2007-10-16). «Неофициальный патч для решения проблемы URI Windows» . H Security . Проверено 29 января 2012 .
  11. ^ «Еще один неофициальный патч для IE, призванный устранить критическую ошибку» . Computer Weekly . 2006-03-30 . Проверено 9 июля 2013 . Еще один неофициальный патч был выпущен для устранения критической ошибки в браузере Microsoft Internet Explorer.
  12. ^ Вен, Ховард (2004-06-10). «Сохраняя мифы живыми» . linuxdevcenter.com . Проверено 22 декабря 2012 . [...] поклонники трилогии Myth пошли еще дальше: у них есть официальный доступ к исходному коду игр Myth. Организованная под названием MythDevelopers, эта группа добровольцев, состоящая из программистов, художников и других талантливых людей, посвящает свое время совершенствованию и поддержке дальнейшего развития серии игр Myth.
  13. ^ Белл, Джон (2009-10-01). «Открывая исток искусства» . Обзор управления инновационными технологиями. Архивировано из оригинала на 2014-03-30 . Проверено 30 декабря 2012 . [...] что никаких дополнительных исправлений к названию не ожидается. Сообщество было предсказуемо расстроено. Вместо того, чтобы отказаться от игры, пользователи решили, что если Activision не собирается исправлять ошибки, они это сделают. Они хотели спасти игру, заставив Activision открыть исходный код, чтобы ее можно было сохранить до того момента, когда Activision потеряла интерес. С некоторой помощью членов команды разработчиков, которые активно участвовали в форумах фанатов, они в конечном итоге смогли убедить Activision выпустить исходный код Call to Power II в октябре 2003 года.
  14. ^ "Oracle Magazine" . Oracle.com. Архивировано из оригинала на 2008-05-14 . Проверено 4 января 2013 .
  15. ^ https://developer.ibm.com/technologies/linux/tutorials/live-patching-the-linux-kernel/
  16. ^ https://www.infosecurity-magazine.com/blogs/linux-kernel-live-patching/
  17. ^ «Горячо или нет? Преимущества и риски удаленного горячего исправления iOS« Блог исследования угроз » . FireEye . Проверено 26 октября 2016 .
  18. ^ Перес, Сара. «Rollout.io возвращает разработчикам мобильных устройств контроль над своими приложениями» . TechCrunch . Проверено 26 октября 2016 .
  19. ^ "bang590 / JSPatch" . GitHub . Проверено 26 октября 2016 .
  20. ^ «Горячие исправления SQL Server Engine в базе данных SQL Azure» . TECHCOMMUNITY.MICROSOFT.COM . 2019-09-11 . Проверено 15 сентября 2019 .
  21. Карп, Дэвид (14 июля 2008 г.). «Создайте диск восстановления XP SP3» . Журнал ПК . Зифф Дэвис .
  22. ^ Терротт, Пол (7 мая 2008). «Скольжение Windows XP с пакетом обновления 3 (SP3)» . Суперсайт для Windows . Пентон .
  23. ^ Томсон, Иэн. «Вирус (кашель, кашель, Петя) идет по почте в FedEx, акции остановились» . Проверено 29 июня 2017 года .
  24. ^ "Новые векторы распределения Пети, всплывающие на поверхность" . Threatpost. 28 июня 2017 . Проверено 29 июня 2017 года .
  25. ^ «Детерминистические построения, часть первая: кибервойна и глобальный компромисс | Блог Tor» . blog.torproject.org . Проверено 11 июля 2017 года .
  26. ^ Проффитт, Брайан (2008). Представляем Ubuntu: Desktop Linux . Cengage Learning. ISBN 1598637657. Проверено 11 июля 2017 года .
  27. ^ Журналы, SPH (2007). HWM . Журналы SPH . Проверено 11 июля 2017 года .

Внешние ссылки [ править ]

  • Запись в файле Jargon версии 4.4.7 для патча
  • Подробная магистерская диссертация по патчам безопасности.
  • Официальный формат патча ядра Linux
  • 0-Day Patch - демонстрация производительности безопасности поставщиков (не). Архивировано 31 января 2014 г. на Wayback Machine  - показатель, сравнивающий производительность исправлений Microsoft и Apple.