If
all bugs are shallow, why was Heartbleed only just fixed?
Posted on by Mark
Johnson, Posted on April 10, 2014 by Mark Johnson
Bài được đưa lên
Internet ngày: 10/04/2014
Lời
người dịch: Đây là bài viết của Mark
Johnson, Giám đốc Phát triển ở OSS
Watch, cơ quan tư vấn về phần mềm tự do nguồn mở cho
chính phủ Anh, giải thích về lỗi “Heartbleed” trong
OpenSSL. Để
biết nhiều hơn về an ninh trong phần mềm nguồn mở, hãy
kiểm tra tóm tắt của OSS Watch về chủ đề này. Xem
thêm hệ
thống tư vấn của OSS Watch về nguồn mở cho chính phủ
Anh.
Tuần này Internet nóng
với tin tức về một lỗi an ninh khác trong một dự án
nguồn mở được sử dụng rộng rãi. lần này lỗi đó
trong OpenSSL có tên là “Heartbleed”.
Đây là vấn đề an
ninh cao cấp thứ 3 trong nhiều tháng qua. Trong từng trường
hợp mã từng không chỉ mở mà còn đang được hàng ngàn
người sử dụng, bao gồm một số công ty công nghệ lớn
nhất thế giới, và từng diễn ra ở chỗ cho một khoảng
thời gian dài đáng kể.
Trong tiểu luận năm
1999 của mình Nhà
thờ lớn và cái chợ, Eric Raymond đã nêu rằng
“Đủ con mắt soi vào, tất cả các lỗi sẽ cạn”. Nếu
qui tắc này (được gọi là Luật Linus của Raymond,
đối với Linus Torvalds) vẫn còn đúng, thì làm thế nào
các lỗi đó có thể tồn tại một thời gian dài như vậy
trước khi được sửa?
Hãy bắt đầu bằng
việc nhìn vào những gì chúng ta ngụ ý một “lỗi”.
Nói chung khái niệm “lỗi” tham chiếu tới bất kỳ
khiếm khuyết nào trong mã của một chương trình, khi mà
nó không hoạt động theo yêu cầu. Định nghĩa đó chắc
chắn áp dụng trong tất cả mọi trường hợp, nhưng đối
với một lỗi sẽ được báo cáo, thì nó phải ảnh
hưởng tới mọi người theo một cách có khả năng lưu ý
được. Nhiều lỗi đặc biệt mà chúng ta đang nói tới
ở đây, các lỗi an ninh trong các thư viện mã hóa, không
ảnh hưởng tới đa số nói chung những người sử dụng,
thậm chí ở những nơi chúng ta đang nói về những người
sử dụng ở phạm vi mà chúng ta thấy ở đây. Chỉ khi
mọi người cố gắng và sử dụng phần mềm theo một
cách thức khác điều nó dự định, hoặc kiểm toán mã
một cách đặc biệt khi tìm kiếm các vấn đề như vậy,
thì các lỗi đó mới trở nên rõ ràng.
Khi Raymond
nói về các lỗi đang cạn, ông thực sự đang nói về
cách mà nhiều người xem xét một vấn đề được đưa
ra sẽ thấy lý do và giải pháp nhanh hơn so với một
người xem xét vấn đề đó. Trong tiểu luận đó, Raymond
trích lời Torvalds nói “Tôi sẽ tiếp tục ghi lại khi
nói rằng việc tìm kiếm [lổi] là thách thức lớn hơn”.
Nên vấn đề mà
chúng ta đã và đang thấy ở đây không là các lỗi mất
thời gian dài để chuẩn đoán và sửa, thay vào đó là
sự thiếu tác động của chúng lên sử dụng có ý định
của phần mềm nghĩa là chúng đã mất thời gian dài để
được lưu ý thấy. Luật Linus vẫn là đúng, nhưng nó
không là thuốc chữa bách bệnh cho an ninh. Các sự kiện
gần đây khẳng định rằng mã nguồn mở hoặc đóng vốn
dĩ không an ninh hơn nhau.
This
week the Internet’s been ablaze with news of another security flaw
in a widely used open source project, this time a bug in OpenSSL
dubbed “Heartbleed”.
This
is the third high-profile security issue in as many months. In each
case the code was not only open but being used by thousands of people
including some of the world’s largest technology companies, and had
been in place for a significant length of time.
In
his 1999 essay The
Cathedral and The Bazaar,
Eric Raymond stated that “Given enough eyeballs, all bugs are
shallow.” If this rule (dubbed Linus’s
Law by Raymond, for
Linus Torvalds) still holds true, then how can these flaws exist for
such a long time before being fixed?
Let’s
start by looking at what we mean by a “bug”. Generally
speaking the term “bug” refers to any defect in the code of a
program, whereby it doesn’t function as required. That
definition certainly applies in all these cases, but for a bug to be
reported, it has to affect people in a noticeable way. The particular
variety of bugs we’re talking about here, security flaws in
encryption libraries, don’t affect the general population of users,
even where we’re talking about users on the scale we see here.
It’s only when people try and use the software in a way other than
it’s intended, or specifically audit code looking for such issues,
that these bugs become apparent.
When
Raymond
talks about bugs being shallow, he’s really talking about how
many people looking at a given problem will find the cause and
solution more quickly than one person looking at that problem.
In the essay, Raymond quotes Torvalds saying “I’ll go on record
as saying that finding [the bug] is the bigger challenge.”
So
the problem we’ve been seeing here isn’t the the bugs took a long
time to diagnose and fix, instead it’s that their lack of impact on
the intended use of the software means they’ve taken a long time to
be noticed. Linus’s Law still holds true, but it’s not a
panacea for security. The recent events affirm that neither open or
closed code is inherently more secure.
Dịch: Lê Trung Nghĩa
Không có nhận xét nào:
Đăng nhận xét
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.