وصله (رایانش)
یک پچ (به انگلیسی: Patch) مجموعهای از تغییرات در یک برنامه کامپیوتری یا دادههای پشتیبان آن است که برای به روز رسانی، رفع یا بهبود آن طراحی شدهاست.[1] این شامل رفع آسیبپذیریهای امنیتی[1] و دیگر اشکالات، با چنین تکه معمولاً بودن رفع اشکالات نام یا رفع اشکال،[2] و بهبود قابلیت استفاده یا عملکرد. اگر چه به معنای رفع مشکلات است، تکههای طراحی شده به ندرت گاهی میتوانند مشکلات جدیدی را به وجود آورند (رجوع به نرمافزار را ببینید). در برخی موارد، به روزرسانیها میتوانند بهطور آگاهانه عملکردها را قطع کنند یا دستگاه را غیرفعال کنند، به عنوان مثال، با حذف اجزاءی که ارائهکننده به روزرسانی دیگر مجوز ندارند.
مدیریت پچ بخشی از مدیریت چرخه حیات است و فرایند استفاده از یک استراتژی و برنامهای است که چه پچهایی باید در یک زمان مشخص به سیستمها اعمال شود.
انواع
پچهای دودویی
پچها برای نرمافزارهای اختصاصی معمولاً به صورت پروندههای اجرایی به جای کد منبع توریع میشوند. این نوع پچها برنامههای در حال اجرا را تغییر میدهند-برنامهای استفادهکننده واقعاً ان را اجرا میکند-یا با تغییر دادن بخشی از پرونده دودویی برنامه تا خطایی گرفته شود یا به صورت جایگزینی کامل ان پرونده. روی میگروکامپیوترهای ۸ بیتی اولیه مانند Radio Shack TRS-80 سیستم عامل یک ابزار پچ داشت که اطلاعات پچ را از یک پرونده نوشتاری میگرفت و تغییرات را روی پرونده قابل اجرا دودویی برنامه هدف اعمال میکرد. پچهای کوچک داخل حافظهای میتوانند به وسیله امکانات اشکال زدایی سیستمی اعمال بشوند، به وسیله دیباگرهایی مانند CP/M's DDT یا MS-DOS's DEBUG. برنامه نویسانی که در تفسیر BASIC کار میکنند، اغلب از دستور POKE استفاده میکنند تا بهطور موقت عملکرد یک سیستم سرویس را تغییر دهند.
پچهای کد منبع
پچها همچنین میتوانند در قالب تغییرات کد منبع حضور یابند. در این مورد، پچها معمولاً شامل تفاوتهای متنی بین دو پرونده کد منبع هستند که diffs نامیده میشوند. این نوع پچها معمولاً برای پروژههای نرمافزاری متن باز می ایند. در این مورد، توسعه دهندگان انتظار دارند که کاربران خود پروندههای جدید یا تغییر یافته را کامپایل کنند.
پچهای بزرگ
از آنجا که کلمه پچ برای تغییرات کوچک به کار میروند، پچهای بزرگ ممکن است از طبقهبندی اسمی متفاوتی استفاده کند. پچهای بزرگ یا پچهایی که برنامه را به صورت قابل توجهی تغییر میدهند "service packs" یا "software updates" گفته میشوند. خانواده ویندوزهای ماکروسافت از ورژنهای مختلف با عنوان service pack یاد میکنند. از لحاظ تاریخی، IBM از اصطلاحات "FixPaks" و "Disket Service Service" برای اشاره به این به روز رسانی استفاده کرد.
از لحاظ تاریخی، تأمین کنندگان نرمافزار پچها را بر روی نوار کاغذ یا کارتهای پانچ ارائه میدادند، انتظار میرفت گیرنده بخش مشخص شده را قطع کند و بخش پچ شده را جایگزین ان کند. توزیعهای بعدی پچها از نوارهای مغناطیسی استفاده میکردند. بعد از اختراع دیسکها پچها از طریق دیسک سپس cd-rom و ایمیل منتقل میشدند. با دسترسی به اینترنت بهطور گسترده، دانلود پچها از وب سایت توسعه دهندگان یا از طریق به روز رسانی نرمافزار خودکار اغلب در دسترس کاربران نهایی قرار میگرفت. با سیستم عامل Mac OS 9 و Windows ME مایکروسافت به عنوان پیشرو، سیستم عاملهای PC توانایی به دست آوردن به روز رسانی خودکار نرمافزار از طریق اینترنت را به دست آوردند.
برنامههای کامپیوتری اغلب میتوانند پچها را برای به روز رسانی یک برنامه خاص هماهنگ کنند. اتوماسیون کار وظیفه کاربر را ساده میکند - آنها فقط نیاز به اجرای یک برنامه به روز رسانی دارند، درحالی که این برنامه اطمینان میدهد که به روز رسانی هدف کاملاً و درست انجام میشود. بستههای سرویس برای مایکروسافت ویندوز NT و جانشینان آن و بسیاری از محصولات نرمافزاری تجاری، چنین استراتژیهای خودکاری را اتخاذ میکنند.
برخی از برنامهها میتوانند خود را از طریق اینترنت به صورت دستی یا بدون مداخله از طرف کاربران به روز کنند. نگهداری از نرمافزار سرور و سیستم عامل اغلب به این صورت انجام میشود. در شرایطی که مدیران سیستم تعدادی از رایانهها را کنترل میکنند، این نوع از اتوماسیون به حفظ ثبات کمک میکند. استفاده از پچهای امنیتی معمولاً به این صورت اتفاق میافتد.
کاربرد
ندازه پچها ممکن است از چند بایت به صدها مگابایت متفاوت باشد. بدین ترتیب، تغییرات قابل توجهی به معنای اندازه بزرگتر است، هرچند که این بستگی به این دارد که آیا پچ شامل تمام پروندههای یا تنها بخشی از پروندهها را تغییر میدهد. بهطور خاص، پچها زمانی که تغییرات دادههای غیر برنامهای مانند دادههای گرافیکی و صوتی را اضافه یا جایگزین میکند، میتوانند بسیار بزرگ شوند. چنین شرایطی معمولاً در پچ بازیهای کامپیوتری رخ میدهد. در مقایسه با نصب اولیه نرمافزار، پچها معمولاً زیاد طول نمیکشند تا اعمال شوند.
در مورد سیستمهای عامل و نرمافزار سرور سرور، پچها نقش مهمی را برای حل کردن حفرههای امنیتی ایفا میکنند. برخی پچهای مهم مشکلات مربوط به درایورها سیستم را حل میکنند. پچها ممکن است نیاز به استفاده قبلی از پچهای دیگر داشته باشند، یا ممکن است به نیازهای پیشین یا همزمان چندین مؤلفه مستقل نرمافزار نیاز داشته باشند. به منظور تسهیل به روز رسانی، سیستم عامل اغلب امکانات به روز رسانی خودکار یا نیمه اتوماتیک را فراهم میکند. به روز رسانی کاملاً اتوماتیک موفق به کسب محبوبیت گسترده در شرکتهای بزرگ نشدهاند، بخشی به دلیل مشکلات فوق، اما همچنین به دلیل اینکه مدیران میترسند که شرکتهای نرمافزاری ممکن است کنترل نامحدود بر روی کامپیوترهاشان بدست بیاورند. سیستمهای مدیریت بستهبندی میتوانند درجههای مختلف اتوماسیون پچ را ارائه دهند.
استفاده از به روز رسانی کاملاً اتوماتیک در بازار مصرفکنندگان بسیار گسترده شدهاست، بهطور عمده به این نکته اشاره شدهاست که مایکروسافت ویندوز برای آنها پشتیبانی قرار داد و سرویس پک ۲ ویندوز XP (در دسترس در سال ۲۰۰۴) آنها را فعال کرد به صورت پیش فرض اجرا شوند. کاربران محتاط، به ویژه مدیران سیستم، تمایل دارند تا پچهای استفاده شده را کنار بگذارند تا بتوانند ثبات تغییرات را تأیید کنند. در مورد پهای بزرگ و تغییرات زیاد توسعه دهندگان بخشی از پچها را به عنوان نسخه بتا در اختیار توسعه دهنده دارای صلاحیت قرار میدهند.
اعمال پچها به سیستم عامل چالشهای خاصی را ایجاد میکند، زیرا اغلب شامل تهیه نسخه کاملاً جدید سیستم عامل، به جای ایجاد تفاوتهایی نسبت به نسخههای قبلی است. این پچ معمولاً شامل یک نسخه سیستم عامل در قالب دادههای باینری است، همراه با یک برنامه ویژه ارائه شده توسط عرضهکننده که جایگزین نسخه قبلی با نسخه جدید میشود. به روز رسانی BIOS مادربرد نمونهای از یک پچ رایانهای معمولی است. هر خطای غیرمنتظره یا وقفه در هنگام بروز رسانی، مانند قطع برق، ممکن است مادربرد را غیرقابل استفاده کند. تولیدکنندگان مادربورد یکسری کارها برای حفاظت از ان میکنند تا از آسیب شدید جلوگیری شود. در مورد بروز رسانی فریم ورک یک نسخه از فریم ورک قبلی را به صورت کپی نگهداری میکند تا در صورت خراب شدن کپی در حال اجرا از این نسخه استفاده بکند .(معمولاً با استفاده از checksumهایی مانند CRC)
بازیهای ویدئویی
بازیهای ویدئویی پچهایی برای حل مشکلات سازگاری پس از انتشار اولیه خود دریافت میکنند درست مانند هر نرمافزار دیگری، اما از پچها میتوانند برای تغییر قوانین بازی یا الگوریتمها نیز استفاده شود. این پچها میتوانند به خاطر یکسری مشکلات در بخش چند نفره بازی که باعث سود غیر منصفانه بعضی از افراد میشود انتشار پیدا کنند. ویژگیهای جدید و ترفندهای گیم پلی جدیدی میتوانند در پچها باشد. این نوع پچها معمولاً در بازیهای تیراندازی نخست شخص با قابلیت بازی چند نفره و MMORPGها دیده میشود که معمولاً پیچیدگی زیادی دارند و حجم اطلاعات زیادی را در خود جای دادهاند، این نوع بازیها به حد زیادی به این پچها که بعد از انتسار اولیه بازی می ایند تکیه کردهاند، جایی که این پچها یکسری محتوا و تواناییهای جدید در اختیار بازیکنان قرار میدهد. از آنجا که تعادل و انصاف برای تمام بازیکنان MMORPG میتواند به شدت در مدت زمان کوتاهی توسط سوء استفاده خراب شود، سرورهای MMORPG بعضی اوقات با اخطار کوتاه به منظور اعمال یک پچ مهم برای حل مشکل قطع میشوند.
شرکتهای بازی سازی در مواقعی بازی را با یکسری مشکل انتشار میدهند. scorpia از مجله computer gaming world در سال ۱۹۹۴ نوشت: شرکتها - تعداد زیادی برای اشاره موجود است - بازیها را به صورت خراب منتشر میکنند زیرا بعداً با پچ مشکلات را برطرف خواهند کرد از مشتریانشان را تبدیل به تست کنندگانی میکنند که پول نیز پرداخت میکنند.
در توسعه نرمافزار
بعضی اوقات پچهای اجباری میآید که برای رفع مشکلات کتابخانهها یا به همراه بخشی از کد برای برنامههایی که به صورت مکرر استفاده میشوند یا صرفا برای نگهداری ان برنامه می ایند. این اتفاق معمولاً در پروژههای نرمافزاری بزرگ رخ میدهد ولی در پروژههای نرمافزاری کوچک به ندرت مشاهده میشود.
در پروژههای متن باز، نویسندگان معمولاً پچهایی را دریافت میکنند یا بسیاری از افراد پچهایی را منتشر میکنند که مشکلات خاصی را مرتفع میکنند یا برخی از قابلیتهای خاص مانند پشتیبانی از زبانهای محلی که خارج از محدوده محلی پروژه بودهاست را اضافه میکند. به عنوان نمونه، لینوس توروالدز، نویسنده اصلی، از توسعه دهندگان اولیه لینوکس (که برای انتشار کد کاملش منتشر شد)، صدها هزار پچ از بسیاری از برنامه نویسان مختلف دریافت کرد تا بر روی نسخه اصلی خود اعمال کند. برای پچهایی که تکراری هستند، ابزارهایی مانند Coccinelle برای پشتیبانی از نوشتن پچهای عمومی وجود دارد و آنها را در مکانهای مختلف به همان زمان (معمولاً صدها مکان در مورد هسته لینوکس) پیاده میکند.
سرور آپاچی HTTP در ابتدا به عنوان تعدادی از پچهایی که برایان بلیلندورف برای بهبود NCSA HTTPd به کار گرفته شد، تکامل یافته بود، از این رو نامی که به معنی مجموعهای از پچها ("a patchy server") است را به خود گرفت. پرسش و پاسخ مربوط به سایت رسمی این پروژه بیان میکند که نام "آپاچی" از احترام به قبیله بومیان آمریکایی آپاچی انتخاب شدهاست. با این حال، توضیح "سرور تکه تکه"("a patchy server") در ابتدا در وب سایت پروژه قرار گرفت.
گزینهها
hotfix
به روز رسانی سریع (Quick Fix Engineering) (به روز رسانی QFE) یک بسته تجمعی است که حاوی اطلاعات (اغلب به صورت یک یا چند پرونده) است که برای رفع یک مشکل در یک محصول نرمافزاری (یعنی یک اشکال نرمافزاری) استفاده میشود. بهطور معمول، اصلاحیهها برای پاسخ دادن به یک وضعیت خاص مشتری ساخته میشوند. مایکروسافت یک بار از این اصطلاح استفاده کرد، اما به نفع اصطلاحات جدید متوقف شدهاست: انتشار منتشر عمومی (GDR) و انتشار توزیع محدود (LDR) این اصطلاحات جدید هستند. Blizzard Entertainment، با این حال، یک اصلاحیه را تعریف میکند: "تغییری که در بازی به اندازه کافی حیاتی هستند که تا زمان معمول پچها نمیتوان منتظر شد.
point release
اpoint release یک نسخه جزئی از یک پروژه نرمافزاری، به ویژه برای رفع اشکالات یا تمیز کردن کوچک به جای اضافه کردن ویژگیهای قابل توجه به برنامه اصلی است. معمولاً در یک انتشار یک نسخه اصلی یا انتشارهای کوچک تعداد زیادی مشکل وجود دارد که نیاز به یک point release را بیشتر میکند.
program temporary fix
برنامه موقت برنامه یا تعمیر موقت محصول (PTF)، بسته به تاریخ، اصطلاح استاندارد IBM برای یک رفع اشکال یا گروهی از اصلاحات است که در قالبی آماده برای نصب برای مشتریان توزیع شدهاست. بعضی اوقات از ptf به نام ZAP یاد میشود که مشتریان ان را به صورت شوخی-جدی هممعنی با یک تعمیر موقت ماندگار میشناسند زیرا این امکان فراهم است که ptf به عنوان یک بخش ماندگار در پچ باشد.
security patches
تغییری است که در یک برنامه ارزشمند به وجود میآید تا به اصلاح ضعفها که از آنها به عنوان آسیبپذیری نیز یاد میشود بینجامد. این اقدام اصلاحی از جلوگیری از بهرهبرداری موفق و از بین بردن یا کاهش توانایی تهدید برای بهرهبرداری از یک آسیبپذیری خاص در یک دارایی است. مدیریت پچ بخشی از مدیریت آسیبپذیری است - تمرین چرخه شناسایی، طبقهبندی، اصلاح و کاهش آسیبپذیری بخشی از این کار است.
پچهای امنیتی روش اصلی برای رفع آسیبپذیریهای امنیتی در نرمافزار هستند. در حال حاضر مایکروسافت تکههای امنیتی خود را یک بار در ماه منتشر میکند و سیستم عاملها و نرمافزارهای دیگر تیمهای امنیتی دارند تا در صورت پیدا شدن آسیب پذیزی در سریعترین زمان ممکن یک پچ نرمافزاری قابل اطمینان درست و منتشر کنند. پچهای امنیتی ارتباط نزیکی با responsible disclosure دارند.
این پچهای امنیتی برای اطمینان از این که فرایند کسب و کار آلوده نمیشوند، بسیار مهم هستند. در سال ۲۰۱۷ یکسری از شرکتها توسط ransomware به نام wannacry آلوده شدند که یکسری از پروندهها را در ورژنهای خاصی از ویندوز رمزگداری میکرد و در ازای بازکردن ان bitcoin میخواست. در جواب به اینکار ماکروسافت یک پچ امنیتی داد که از اجرا شدن این ransome جلوگیری میکرد.
service pack
یک بسته سرویس یا SP یا بسته ویژگی (FP) شامل مجموعهای از به روز رسانیها، اصلاحات یا پیشرفتهایی است که به یک برنامه نرمافزاری تحویل داده شده و در قالب یک بسته قابل نصب به دست مشتری میرسد. شرکتها اغلب یک بسته سرویس را هنگامی که تعدادی از پچهای انفرادی در یک برنامه مشخص به حد معینی (دلخواه) میرسند، منتشر میکنند، یا دیده شدهاست که انتشار نرمافزار با تعداد محدودی از خطاهای باقی مانده بر اساس بازخورد کاربران و ردیابهای اشکال مانند bugzilla تثبیت شدهاست. در برنامههای نرمافزاری بزرگ مانند افیس، سیستم عاملها، برنامههای پایگاه دادهای و مدیریت شبکه معمولاً آماده کردن یک SP در یک یا دو سال نخست مرسوم نیست. نصب یک بسته سرویس آسانتر و کمتر خطا از نصب بسیاری از پچهای فردی است، حتی هنگامی که چندین کامپیوتر را که در یک شبکه هستند با یک SP به روز رسانی میکنید راحتتر است.
unofficial patches
یک پچ غیررسمی یک پچ غیر تجاری است که برای یک نرمافزار تجاری توسط یک شخص ثالث به جای توسعه دهنده اصلی است ایجاد شدهاست. همانند یک پچ معمولی، اشکالات و کاستیها را کاهش میدهد. نمونه ان اصلاحیههای امنیتی است که توسط متخصصان امنیت منتشر میشود درحالی که پچ رسمی توسط شرکت نرمافزاری مدت زمان زیادی طول میکشد تا برسد. مثالهای دیگر ان پچهایی است که از طرف انجمنهای بازی برای بازیهایی که دیگر از طرف سازنده همایت نمیشوند، منتشر میشود.
hot patching
هات پچینگ یا پچینگ زنده یا به روز رسانی داینامیک نرمافزار به پچهایی گفته میشود که بدون خاموش کردن یا راه اندازی دوباره نرمافزار روی ان نرمافزار نصب میشوند. این باعث ایجاد مشکل در دسترس نبودن یک سرویس در یک سیستم یا برنامه میشود. یک پچ که میتواند به این شیوه اعمال شود، یک هات پچ نامیده میشود. این در حال تبدیل شدن به یک عمل معمول در فضای برنامه تلفن همراه است. شرکتهایی مانند Rollout.io از روشهای هات پچینگ برای اکوسیستم ios استفاده میکنند. یک شیوه دیگر برای هات پچینگ در ios، برای برنامهها jspachting است.
slipstreaming
در برنامههای کامپیوتری ،slipstreaming عمل جمعآوری پچها (SPها را نیز در بر میگیرد) در پرونده نصبی اصلی برنامه است که نتیجه ان امکان نصب مستقیم یک برنامه به روز شده است.
طبیعت اینکار با زمان و کار همراه است اما در طولانی مدت صرفه جویی زیادی در زمان و هزینه میشود. این به ویژه برای مدیران مهم است که مسئولیت مدیریت تعداد زیادی از رایانهها را دارند، که مخصوصاً برای نصب یک سیستم عامل بر روی هر رایانه، از نسخه اصلی استفاده میکنند و پس از اتمام نصب، هر کامپیوتر را بروزرسانی میکنند. این زمان بسیار بیشتری را نسبت به شروع با یک منبع به روز (slipstreamed) میگیرد و نیاز به دانلود و نصب چند آپدیت که در سیستمها به صورت مجزا وجود ندارد.
با این حال، تمام پچها را نمیتوان در این روش اعمال کرد و یک ناکارآمدی این است که اگر کشف شود که یک پچ خاصی مسئول مشکلات بعدی است، پچ مورد نظر نمیتواند بدون استفاده از یک منبع نصب اصلی که پچی ندارد حذف شود.
software update systems
سیستمهای اپدیت نرمافزار به کاربران و توسعه دهندگان نرمافزار اجازه میدهند تا به روز رسانیهاشان را مدیریت کنند. در سال ۲۰۱۷ پدیده سایبری Petya، گفته شد مشخص شدهاست که نرمافزار مالی "MeDoc" در به روز رسانیهایش یک بدافزار را انتشار میدهد. در بلاگ تور یک متخصص امنیت سایبری به نام mike perry اعلام کرد که بیلدهای قطعی و جدا از هم احتمالاً تنها راه مقابله با این بدافزار که به مراحل ساخت و تولید نرمافزار حمله میکند تا میلیونها ماشین را در یک اپدیت رسمی آلوده کند، است. سیستمهای مدیریت به روزرسانی همچنین اجازه میدهند تا به روز رسانیهای امنیتی سریع و گسترده اعمال شوند. به روز رسانی مدیران لینوکس مانند Synaptic اجازه میدهد تا کاربران تمام نرمافزار نصب شده بر روی دستگاه خود را به روز رسانی کند. برنامههایی مانند synaptic از چکسامهای رمزگذاری شدهاستفاده میکنند تا از پاک بودن برنامه از هر نوع بدافزاری قبل نصب اطمینان حاصل کنند.
جستارهای وابسته
- چرخه زندگی آزاد سازی نرمافزار
- تعمیر و نگهداری نرمافزار
- backporting
- Dribbleware
- پچ (یونیکس)
- پورت کردن
- پایگاه داده آسیبپذیری[3]
- کدگذاری دلتا
- SMP / E
- رفع اشکال خودکار
- کلاه سفید (امنیت رایانه)
پانویس
- "Microsoft issues biggest software patch on record". Reuters. 2009-10-14. Archived from the original on 16 October 2009. Retrieved 14 October 2009.
- "What is a Bug Fix? – Definition from Techopedia". techopedia.com. Retrieved 2015-07-29.
- "Vulnerability database", Wikipedia, 2018-12-05, retrieved 2018-12-05
منابع
- مشارکتکنندگان ویکیپدیا. «Patch (computing)». در دانشنامهٔ ویکیپدیای انگلیسی، بازبینیشده در ۲۵ ژانویه ۲۰۱۹.