Mọi thứ càng trở nên cấp bách hơn khi một lỗ hổng bảo mật được phát hiện và bằng mọi cách phải tìm ra được một giải pháp để ngăn chặn việc khai thác thành công điểm yếu của hệ thống, loại bỏ hoặc giảm thiểu hậu quả của mối đe dọa.
Tìm và phát hiện vấn đề chỉ là bước đầu tiên. Sau đó, lập trình viên phải quyết định cách khắc phục vấn đề và cách triển khai vấn đề theo cách giảm thiểu tối đa tác động đến người dùng. Cách thức đó có thể được gửi qua: Patch, Hotfix, Coldfix hoặc Bugfix.
Các thuật ngữ này thường được sử dụng thay thế cho nhau, nhưng có sự khác biệt trong mỗi thuật ngữ dựa trên cách một lập trình viên kết hợp giải pháp của họ vào phần mềm.
Patch là gì?
Trong những ngày đầu tiên khi phát minh ra máy tính, Patch được hiểu theo đúng nghĩa đen là một bản vá. Khi đó máy tính sử dụng thẻ đục lỗ và băng giấy để nhập các chương trình và sử dụng chúng để thực hiện các phép tính. Những băng giấy này chứa các hàng lỗ và các khoảng trống vốn là phần mềm của máy tính, cũng giống như ngày nay các nhà cung cấp phần mềm sẽ cần thực hiện các thay đổi đối với lập trình.
Các bản cập nhật này được phân phối trên các mảnh băng giấy hoặc thẻ đục lỗ, người nhận dự kiến sẽ cắt phần mã xấu ra khỏi băng giấy và một phân đoạn thay thế khác được vá vào, do đó chúng có tên như vậy.
Tất nhiên, việc vá lỗi đã trải qua một chặng đường dài phát triển của kỹ thuật số. Các bản vá cho máy tính ngày nay thường cập nhật mã của phiên bản phần mềm hiện có bằng cách sửa đổi hoặc thay thế nó bằng cách sử dụng một chương trình thực thi được phát hành công khai.
Các bản vá thường là các bản sửa lỗi tạm thời giữa các bản phát hành đầy đủ của gói phần mềm. Các bản vá được sử dụng để khắc phục cả các vấn đề lớn và nhỏ có thể cần hoặc không cần chú ý ngay lập tức, chẳng hạn như: sửa lỗi phần mềm; cài đặt trình điều khiển mới; giải quyết các lỗ hổng bảo mật mới; giải quyết các vấn đề về độ ổn định của phần mềm và nâng cấp phần mềm.
Nói chung, các bản vá là các bản cập nhật tự động, các gói tự cài đặt với nhiều kích thước khác nhau, từ vài kilobyte đến các bản vá lớn, như những bản dành cho Windows có thể trên 100 Mb. Trên Windows, việc cài đặt các bản vá nhất định có thể gây ra gián đoạn, thậm chí ngừng hoạt động trong khi cài đặt và có thể yêu cầu khởi động lại hệ thống.
Hầu hết các bản vá được phân phối theo lịch trình đã định. Chúng có thể được đưa vào bản phát hành phiên bản mới của sản phẩm với các bản sửa lỗi và cập nhật bổ sung.
Hotfix là gì?
Các hotfix cũng có thể giải quyết nhiều vấn đề giống như một bản vá, nhưng nó được áp dụng cho một hệ thống “hot” (một hệ thống đang hoạt động) để khắc phục sự cố ngay lập tức mà không làm cho hệ thống ngừng hoạt động.
Các hotfix còn được gọi là các bản cập nhật kỹ thuật sửa chữa nhanh (quick-fix engineering updates - QFE), một cái tên thể hiện tính cấp thiết.
Thông thường, bạn sẽ nhanh chóng tạo ra một hotfix, như một biện pháp khẩn cấp chống lại các vấn đề cần được khắc phục ngay lập tức và nằm ngoài quy trình phát triển bình thường. Không giống như các bản vá, các hotfix giải quyết các vấn đề rất cụ thể như:
- Thêm một tính năng mới, sửa lỗi sai sót hoặc bảo mật;
- Thay đổi lược đồ của cơ sở dữ liệu.
Quan trọng là các hotfix không phải lúc nào cũng được phát hành công khai, ngược lại với các bản vá.
Ví dụ, giả sử một ngân hàng biết rằng ứng dụng ngân hàng của họ có thể bị tấn công, khai thác và tiết lộ dữ liệu người dùng như mật khẩu, tên người dùng và thông tin tài khoản. Ngay cả khi vụ tấn công chưa xảy ra, đó là một rủi ro tiềm ẩn đến mức ngay cả khi phát hiện được nguy cơ của nó cũng cần phải hành động khẩn cấp. Đội ngũ bảo mật có thể sẽ loại bỏ tất cả các ràng buộc, cố gắng cung cấp một hotfix giải quyết lỗ hổng bảo mật càng sớm càng tốt, với sự gián đoạn tối thiểu.
Coldfix là gì?
Trong trường hợp hotfix được thực thi nhanh chóng mà không cần khởi động lại bất kỳ hệ thống hoặc phần cứng nào thì coldfix lại ngược lại. Việc triển khai một coldfix yêu cầu người dùng đăng xuất khỏi phần mềm trong khi toàn bộ hệ thống cần được khởi động lại để các bản sửa lỗi có hiệu lực.
Những cập nhật loại này phổ biến trong các trò chơi nhiều người chơi trực tuyến, vì vậy chúng thường được thông báo trước vài ngày để cho người dùng biết rằng dịch vụ sẽ không khả dụng cho đến khi quá trình khắc phục hoàn tất. Thông báo thường bao gồm thời gian ước tính dịch vụ sẽ trực tuyến trở lại, vì thời gian ngừng hoạt động có thể kéo dài từ vài phút đến vài giờ tùy thuộc vào bản cập nhật.
Bugfix là gì?
Tất cả chúng ta đều quen thuộc với thuật ngữ “bug”: một lỗi lập trình hay một trục trặc mà tạo ra lỗi trong hệ thống hoặc phần mềm. Việc loại bỏ những lỗi này là một hành động được gọi là gỡ lỗi (debugging).
Mặc dù cái tên dễ nghe khiến những lỗi này trông có vẻ nhỏ và chỉ gây khó chịu nhẹ, các nhà phát triển và lập trình viên có thể dành nhiều thời gian để tìm kiếm một số loại lỗi phổ biến khác nhau, chẳng hạn như:
- Lỗi cú pháp hoặc lỗi kiểu;
- Lỗi chính tả và các lỗi đơn giản khác;
- Lỗi thực hiện;
- Lỗi logic.
Việc triển khai một bản sửa lỗi, còn được biết đến như là bản sửa lỗi tạm thời của chương trình, có thể đơn giản như việc thêm dấu ngoặc đơn bị thiếu trong một đoạn mã. Nhưng việc khắc phục có thể trở nên khá khó khăn nếu các triệu chứng không chỉ ra nguyên nhân rõ ràng.
Ví dụ, nguyên nhân và triệu chứng có thể là tách biệt, với một trong hai nằm trong mã chương trình và cái còn lại nằm trong quá trình thực thi của chương trình hoặc cả hai.
Các triệu chứng cũng có thể khó tái tạo để hiểu rõ hơn về vấn đề. Tuy nhiên, khi bạn đã phát hiện ra nguyên nhân gốc rễ và đưa ra bản sửa lỗi, các lập trình viên của bạn sẽ không thấy rằng việc bugfix thực sự có thể tạo ra một lỗi mới.
Nghe qua, bugfix có vẻ giống như hotffix, nhưng sự khác biệt nằm ở thời gian và việc thực hiện sửa lỗi. Bugfix thường mô tả các vấn đề được tìm thấy và giải quyết trong giai đoạn sản xuất hoặc thử nghiệm hay thậm chí sau khi triển khai như một phần của chu kỳ phát hành thông thường của sản phẩm. Những hotfix thì chỉ được áp dụng sau khi sản phẩm đã được phát hành và đang hoạt động.
BẢNG 1: CÁC KIỂU SỬA LỖI
Patch |
|
Hotfix |
|
Coldfix |
|
Bugfix |
|
Tiền thưởng lỗi là gì?
Khi phần mềm ngày càng phức tạp, việc sửa lỗi trước và sau khi sản phẩm ra mắt là rất quan trọng để bảo vệ uy tín thương hiệu của các nhà sản xuất.
Các ứng dụng ngày càng phức tạp, đa luồng và lớn, với số lượng lớn các nhà phát triển đang làm việc trên chúng. Tất cả sự phức tạp này khiến việc theo dõi lỗi trở nên khó khăn hơn và không thể đoán trước được. Các chương trình đa luồng thường kéo dài thời gian thời gian xử lý lỗi (từ khi phát hiện ra nguyên nhân gốc rễ của lỗi và phát hiện ra lỗi); làm cho các lỗi khó theo dõi...
Các lỗi là một rủi ro quá lớn để lập trình viên có thể bỏ qua. Họ sẽ dành hàng tuần để săn tìm hoặc thậm chí cung cấp tiền thưởng để được trợ giúp tìm ra các vấn đề trong mã nguồn của họ trước khi họ có thể áp dụng bản sửa lỗi phù hợp.