Không có tiền, đừng mơ phần mềm không lỗi

Không có tiền, đừng mơ phần mềm không lỗi

“Horenso” có thể bạn chưa biết?
Đặt tên thư mục quản lý phim người lớn theo phong cách Nhật Bản
Quy tắc Peak – End và những gì bạn nên làm khi nghỉ việc

bài trước mình đã giới thiệu sơ qua về Động lực 3.0: người ta làm việc vì tự thân người ta muốn thế, không phải do phần thưởng hay hình phạt nào cả. Phần mềm nguồn mở hiện nay cũng hoạt động trên nguyên tắc tương tự như vậy: các lập trình viên đưa mã nguồn lên 1 kho công khai, và bất kỳ ai cũng có thể xem, nếu thấy thích thì có thể đóng góp để cải thiện phần mềm.

Tuy nhiên, có thật Động lực 3.0 giải quyết được hết các vấn đề 1 cách miễn phí như vậy không? Jeff Atwood không cho rằng như vậy. Mình dịch lại 1 phần bài này từ https://blog.codinghorror.com/given-enough-money-all-bugs-are-shallow/

Given enough eyeballs, all bugs are shallow

Nhiều người nhìn vào thì lỗi sẽ mất đi

 

Chắc bạn cũng từng nghe câu nói trên của Eric Raymond. Nó đề cập về chuyện phần mềm nguồn mở sẽ ít lỗi hơn phần mềm nguồn đóng do có tất cả mọi người đều có thể xem mã nguồn bên trong. Eric Raymond gọi đây là “Linus’s Law”.

Trong chừng mực nào đó tôi vẫn tin điều này là đúng. Bạn thử hình dung nếu chỉ có 10 lập trình viên làm việc trong dự án được phép xem và sửa mã nguồn, so với việc được tất cả mọi người review trên Github. Nhiều người nhìn vào thì có lẽ là lỗi sẽ ít hơn.

Tuy nhiên rõ ràng lỗi Heartbleed SSL là 1 góc tối của Linus’s Law. Nếu bạn chưa biết thì lỗi này ảnh hưởng tới 18% tất cả các website sử dụng HTTPS trên thế giới, cho phép hacker có thể theo dõi traffic của các website trong 2 năm trước khi bị phát hiện.

Những 2 năm!

OpenSSL, thư viện gặp lỗi này, là 1 trong những phần quan trọng nhất của nền tảng Internet thế giới, được tin dùng bởi các công ty lớn để mã hoá các thông tin nhạy cảm của khách hàng. OpenSSL được sử dụng trên hàng triệu máy chủ cũng như các thiết bị khác để bảo vệ những thông tin như mật khẩu, tài khoản ngân hàng, thẻ tín dụng.

Heartbleed SSL

Vậy đáng lẽ ra nó phải là 1 trong những mã nguồn được review nhiều nhất trên thế giới chứ? Điều gì xảy ra với việc “nhiều người nhìn vào” vậy?

Trong thực tế, rất – rất khó để sửa những lỗi thật ở những phần mềm nguồn mở. Tôi biết là hiếm khi tôi làm điều đó, cho dù tôi là 1 lập trình viên có kinh nghiệm. Ở hầu hết các trường hợp, điều thực sự xảy ra là bạn nói với người phụ trách về vấn đề và chờ xem anh ta sửa nó – Neil Gunton

Sự thật là, nhiều người nhìn vào phần mềm không hề làm nó an toàn hơn chút nào. Nó chỉ đơn giản là làm người ta có cảm giác an toàn hơn thôi. Kết quả là 1 cộng đồng mã nguồn mở còn lâu lắm mới đạt tới độ tin tưởng trong lĩnh vực bảo mật – John Viega

Tôi nghĩ có 1 vài vấn đề với Linus’s Law

  1. Có 1 sự khác biệt lớn giữa những người sử dụng và những người phát triển. Chỉ bởi vì bạn tải về vài package RPM, biên dịch vài thứ trên Linux, hay thậm chí là report lỗi tới nhà phát triển thông qua bug tracker, điều đó không có nghĩa là bạn đã làm bất cứ điều gì gọi là review mã nguồn phía dưới cả. Hầu hết mọi người chỉ nhìn vào phía ngoài của code mà không phải là phía trong. Và khi bạn có thể tìm ra lỗi, thậm chí là những lỗi bảo mật quan trọng trong quá trình sử dụng, thì những lỗi khó nhằn nhất lại yêu cầu kiến thức của 1 người hiểu rõ mã nguồn làm việc ra sao.
  2. Việc viết (copy-paste) mã nguồn của chính bạn thì dễ hơn nhiều so với việc hiểu và review chéo 1 mã nguồn của ai đó. Và, số dòng code quan trọng cần được review 1 cách nghiêm túc vượt xa số lập trình viên cần thiết để hiểu và sửa chúng
  3. Không có đủ người có trình độ để nhìn vào mã nguồn. Hẳn rồi, con số lập trình viên đang tăng lên, nhưng bao nhiêu phần trăm trong số đó đủ trình độ, đủ kiến thức bảo mật để review code của ai đó 1 cách hiệu quả? Chắc chắn không nhiều.

Trong trường hợp của OpenSSL: nó cho thấy ngay cả khi mã nguồn được mở 100%, đóng vai trò cực kỳ quan trọng, và được sử dụng bởi những công ty lớn trên những máy chủ nhằm mục đích bảo mật thông tin khách hàng, vẫn có thể gặp 1 lỗi nghiêm trọng làm ảnh hưởng tới tất cả mọi người. Thậm chí trong 2 năm!

Vậy, nếu chúng ta không thể xem xét OpenSSL 1 cách cẩn thận, thì những phần mềm khác có 1 cơ hội nào chăng? Chúng ta nên làm thế nào?

Câu trả lời ngắn gọn là

Nhưng giải pháp lâu dài cho vấn đề này là gì?

Tiền, càng nhiều càng tốt

Đó là tiền, càng nhiều càng tốt.

Các công ty đang trả tiền để hacker tìm lỗi cho mình. Đó có thể là thông qua các sự kiện của chính họ, hoặc qua các sự kiện của bên thứ 3 như Bugcrowd, Synack, HackerOne, và Crowdcurity. Nghĩa là bạn trả tiền cho mỗi lỗi, lỗi càng tệ thì thưởng càng nhiều.

Tóm lại, bạn muốn tìm lỗi trong mã nguồn, trong website hay app của bạn ư: cứ xì tiền ra!

Nói cách khác, “Given Enough Money, All Bugs Are Shallow” – “Nhiều tiền vào thì lỗi sẽ mất đi”

 

 

COMMENTS