Патч (вычисления) - Patch (computing)

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

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

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

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

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

Типы

Бинарные патчи

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

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

Небольшие исправления машинного кода в памяти можно вручную применить с помощью служебной программы отладки системы, например CP / M ДДТ или MS-DOS отладчики DEBUG. Программисты, работающие в интерпретируемом БАЗОВЫЙ часто использовали команду POKE для изменения функциональности подпрограммы системного обслуживания или самого интерпретатора.

Патчи исходного кода

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

Большие пятна

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

История

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

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

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

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

Заявление

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

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

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

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

Видеоигры

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

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

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

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

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

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

Варианты

Исправление

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

Выпуск точки

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

Временное исправление программы

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

Патчи безопасности

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

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

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

Service Pack

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

Неофициальные патчи

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

Нашивки с обезьянами

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

Горячие исправления

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

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

Скольжение

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

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

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

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

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

Смотрите также

Рекомендации

  1. ^ а б «Microsoft выпускает крупнейшее исправление программного обеспечения в истории». Рейтер. 2009-10-14. Архивировано из оригинал 16 октября 2009 г.. Получено 14 октября 2009.
  2. ^ «Что такое исправление ошибки? - Определение из Техопедии». techopedia.com. Получено 2015-07-29.
  3. ^ «Пакет обновления и центр обновлений». windows.microsoft.com. Получено 2015-06-01.
  4. ^ "Словарь терминов". www.tavi.co.uk.
  5. ^ Лю, Ашок (2012). Рабочая тетрадь Computercare по ремонту ноутбуков: 300 случаев устранения неисправностей и ремонта классических ноутбуков. АвторДом. п. 591. ISBN  9781477205402. Получено 2015-01-08. Удалите исправление драйвера High Definition Audio KB835221 & KB888111 [...]
  6. ^ Скорпион (апрель 1994 г.). "Так ты хочешь быть героем?". Взгляд Скорпиона. Компьютерный игровой мир. С. 54–58.
  7. ^ Коюнджу, Анил; Bissyandé, Tegawendé F .; Ким, Донгсун; Кляйн, Жак; Монперрус, Мартин; Ле Траон, Ив (10 июля 2017 г.). «Влияние опоры инструмента на патч-строительство»: 237–248. arXiv:1812.07416. Дои:10.1145/3092703.3092713. Цитировать журнал требует | журнал = (Помогите)
  8. ^ «Проект HTTP-сервера Apache». 15 июня 1997 года. Архивировано 15 июня 1997 года.CS1 maint: BOT: статус исходного URL-адреса неизвестен (ссылка на сайт)
  9. ^ «SPZAP (также известный как Superzap): динамически обновлять программы или данные». Центр знаний IBM. Получено 2020-02-23.
  10. ^ Барвайз, Майк (2007-10-16). «Неофициальный патч для устранения проблемы URI Windows». Безопасность H. Получено 2012-01-29.
  11. ^ «Еще один неофициальный патч для IE, призванный устранить критическую ошибку». Computer Weekly. 2006-03-30. Получено 2013-07-09. Еще один неофициальный патч был выпущен для устранения критической ошибки в браузере Microsoft Internet Explorer.
  12. ^ Вен, Ховард (2004-06-10). «Сохраняя мифы живыми». linuxdevcenter.com. Получено 2012-12-22. [...] фанаты трилогии Myth пошли еще дальше: у них есть официальный доступ к исходному коду игр Myth. Эта группа добровольцев, состоящая из программистов, художников и других талантливых людей, организованная под названием MythDevelopers, посвящает свое время совершенствованию и поддержке дальнейшего развития серии игр Myth.
  13. ^ Белл, Джон (01.10.2009). «Открывая источник искусства». Обзор управления инновационными технологиями. Архивировано из оригинал на 2014-03-30. Получено 2012-12-30. [...] что никаких дополнительных исправлений к названию не ожидается. Сообщество было предсказуемо расстроено. Вместо того, чтобы отказаться от игры, пользователи решили, что если Activision не собирается исправлять ошибки, они это сделают. Они хотели спасти игру, заставив Activision открыть исходный код, чтобы ее можно было сохранить до того момента, когда Activision потеряла интерес. С некоторой помощью членов команды разработчиков, которые активно участвовали в форумах фанатов, они в конечном итоге смогли убедить Activision выпустить исходный код Call to Power II в октябре 2003 года.
  14. ^ "Oracle Magazine". Oracle.com. Архивировано из оригинал на 2008-05-14. Получено 2013-01-04.
  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. Получено 2016-10-26.
  18. ^ Перез, Сара. «Rollout.io возвращает мобильным разработчикам контроль над своими приложениями». TechCrunch. Получено 2016-10-26.
  19. ^ "bang590 / JSPatch". GitHub. Получено 2016-10-26.
  20. ^ «Горячее исправление ядра SQL Server в базе данных SQL Azure». TECHCOMMUNITY.MICROSOFT.COM. 2019-09-11. Получено 2019-09-15.
  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: настольный Linux. Cengage Learning. ISBN  1598637657. Получено 11 июля 2017.
  27. ^ Журналы, С. П. Х. (2007). HWM. Журналы SPH. Получено 11 июля 2017.

внешняя ссылка