GotoFail,
Open Source and Edward Snowden
Posted on February 26,
2014 by Rowan
Wilson
Bài được đưa lên
Internet ngày: 26/02/2014
Lời
người dịch: Câu chuyện một lỗi ngớ ngẩn được phát
hiện trong mã nguồn của các hệ điều hành của Apple
như iOS cho điện thoại di động và OSX cho các máy tính
để bàn, vào thời điểm mà những tiết lộ của Edward
Snowden đang diễn ra, làm người ta đặt ra một câu hỏi
rằng liệu Apple có cố tình để lại lỗi đó cho các
nhà chức trách an ninh của Mỹ hay không? “Cuối cùng,
thú vị để lưu ý rằng một số lượng lớn các nhà
bình luận đã hỏi liệu lỗi này có thể là cố tình
hay không. Trong môi trường thận trọng về an ninh mà
những tiết lộ do Edward Snowden mang tới, thì những câu
hỏi này nảy sinh một cách tự nhiên. Liệu
Apple có cố tình phá an ninh của riêng mình theo yêu cầu
của các nhà chức trách hay không?
Rõ ràng chúng ta không thể biết. Tuy
nhiên thú vị để lưu ý mối quan hệ giữa khả năng đó
và ý tưởng rằng nguồn mở là một vũ khí chống lại
sự cài cắm cố tình các lỗi trong phần mềm. Bruce
Schneier, nhà phân tích an ninh đã được tờ Guardian mang
tới để bình luận về các tài liệu gốc của Snowden,
đã lưu ý trong bình luận của ông rằng sử dụng phần
mềm tự do nguồn mở từng là một phương tiện đấu
tranh với các cơ quan an ninh quốc gia và thói quen hư đốn
của họ trong việc cài cắm và khai thác các lỗi phần
mềm”. Xem
thêm: 'Chương
trình gián điệp PRISM trên không gian mạng'.
Hôm thứ sáu Apple đã
tung ra một bản vá cho một lỗi trong một trong những thư
viện an ninh cốt lõi của họ. Thư viện này được sử
dụng cả trong hệ điều hành di động iOS của Apple, và
hệ điều hành máy tính để bàn của họ OSX. Cho tới
ngày hôm nay, phiên bản cho máy để bàn đã có bản vá.
Lỗi này, và hậu quả của nó, là thú vị vì một số
lý do.
Trước hết, nó rất
nghiêm trọng. Lỗi này có nghĩa là các kết nối mạng
không an ninh sẽ được hệ điều hành nhận diện sai
thành có an ninh. Điều này có nghĩa là lỗi có một tác
động xuyên khắp nhiều chương trình; bất kỳ điều gì
dựa vào hệ điều hành để giao tiếp với một kết nối
an ninh có thể tiềm tàng bị ảnh hưởng. Điều này làm
cho toàn bộ dải các dịch vụ như web và thư điện tử
bị tổn thương đối với cái gọi là các cuộc tấn
công 'người giữa đường' (man-in-the-middle), nơi mà một
máy chủ mạng giả mạo can thiệp vào giao thông mạng của
bạn, và vì thế tiềm tàng giành được truy cập tới
thông tin cá nhân của bạn.
Thứ 2, lỗi này là
rất khờ. Mã
theo yêu cầu bao gồm một sự đúp bản không cần
thiết 'goto' (đi tới), được nhấn mạnh ở đây:
Nó trông giống như
một lỗi cắt - dán, vì 'goto' giả mạo có ý định dường
như nó là điều kiện khi - không giống như một thứ ở
trên nó - không phải thế. Có nhiều lý do một lỗi như
thế này sẽ không thể qua được kiểm tra chất lượng.
Nó gây ra mã không thể kết nối, mà trình biên dịch có
thể thường cảnh báo. Có lẽ là đã rõ nếu mã đó
từng được chạy qua một công cụ kiểm tra dạng lập
trình, một biện pháp phòng ngừa thực tế nhất rất phổ
biến. Apple đã nhận được lượng chỉ trích khổng lồ
vì cả sự nghiêm trọng và 'đơn giản' của lỗi này.
Thứ 3, và đây là
nơi mà tới lượt chúng ta đưa vào thế gới phần mềm
tự do nguồn mở, mã theo yêu cầu là một phần của
chương trình phát hành mã nguồn của Apple. Điều đó
giải thích vì sao tôi có thể đưa lên một hình ảnh mã
nguồn lên đó, và vì sao các chỉ trích của Apple từng
có khả năng để chính xác thấy lỗi này ngớ ngẩn tới
mức nào. Nên một hiệu ứng Apple làm mã nguồn mở từng
là - còn tranh cãi - nó đã làm gia tăng sự giận dữ và
buồn cười theo đó họ đã bị phơi ra. Không có nguồn
nào là sẵn sàng, chúng ta có thể có ý tưởng ít rõ
ràng hơn nhiều về một lỗi thế này ngớ ngẩn làm sao.
Đúng, người ta có thể viện lý, phát hành nguồn mở
làm cho các lỗi của bạn rõ ràng, nhưng nó cũng cho phép
bất kỳ ai sửa chúng. Đó là sự cân nhắc tốt, bạn có
thể nói. Không may, trong trường hợp này, điều đó
không đơn giản. Bất chấp đang là nguồn mở, khung an
ninh theo yêu cầu không được Apple cung cấp trong tình
trạng làm cho nó dễ dàng để sửa đổi và xây dựng
lại. Các tin tặc bên thứ 3 đã thấy nó dễ dàng hơn để
sửa lỗi OSX bằng việc và nhị phân bị lỗi - thường
là con đường khó hơn nhiều - thay vì sử dụng mã nguồn
mở của Apple để biên dịch một nhị phân cố định.
Thường gây tranh cãi
rằng một lợi ích chủ chốt của nguồn mở là nó cho
phép bất kỳ ai rà soát lại mã. Trong trường hợp này,
dù, bất chấp đang là một triển khai an ninh chủ chốt
và đang là sẵn sàng để rà soát lại trong vòng 1 năm,
lỗi này dường như không được nhận diện ra thông qua
rà soát lại nguồn. Đối với tôi, điều này một lần
nữa nhấn mạnh rằng - trong khi sự rà soát lại mã phổ
quát là một lợi ích theo lý thuyết của phát hành nguồn
mở - thì trong thực tế nó là khả năng phổ quát để
sửa lỗi một khi họ thấy đó là lý do mạnh mẽ
nhất cho tính sẵn sàng nguồn tăng cường cho an ninh.
Trong trường hợp này Apple đã tạo thuận lợi cho mục
tiêu trước đó nhưng đã làm thành vấn đề cái sau, vì
thế theo ý kiến của tôi đã làm giảm nghiêm trọng lợi
ích an ninh mà nguồn mở có thể mang lại.
Cuối
cùng, thú vị để lưu ý rằng một số lượng lớn các
nhà bình luận đã hỏi liệu lỗi này có thể là cố
tình hay không. Trong môi trường thận trọng về an ninh mà
những tiết lộ do Edward Snowden mang tới, thì những câu
hỏi này nảy sinh một cách tự nhiên. Liệu Apple có cố
tình phá an ninh của riêng mình theo yêu cầu của các nhà
chức trách hay không? Rõ ràng chúng ta không thể biết.
Tuy nhiên thú vị để lưu ý mối quan hệ giữa khả năng
đó và ý tưởng rằng nguồn mở là một vũ khí chống
lại sự cài cắm cố tình các lỗi trong phần mềm.
Bruce
Schneier, nhà phân tích an ninh đã được tờ Guardian mang
tới để bình luận về các tài liệu gốc của Snowden,
đã lưu ý trong bình luận của ông rằng sử dụng phần
mềm tự do nguồn mở từng là một phương tiện đấu
tranh với các cơ quan an ninh quốc gia và thói quen hư đốn
của họ trong việc cài cắm và khai thác các lỗi phần
mềm. Sau tất cả nếu bạn có thể nghiên cứu nguồn thì
bạn có thể thấy các cửa hậu, đúng không? Để qua một
bên vấn đề các nhị phân biên dịch bị tổn thương,
điều có thể đầu độc các nhị phân của bạn thậm
chí khi nguồn là 'sạch', sự việc GotoFail làm nảy sinh
câu hỏi khác về hiệu quả của nguồn mở như một vũ
khí chống lại việc rình mò của chính phủ. Liệu có cố
tình hay không, lỗi này từng sẵn sàng cho rà soát lại
tới hơn 1 năm kia mà.
Internet đang phấp
phỏng với những khoái cảm của các lập trình viên và
với những người khác đang tấn công Apple về sự ngớ
ngẩn của họ. Vâng không phải là bài học khác về
tranh luận này mà chúng ta không thể dựa vào phát hành
nguồn mở trong tự bản thân nó để hành động như một
sự đảm bảo rằng mã sống còn an ninh của chúng ta hoặc
không bị tổn thương hoặc không là tồi chứ?
On
Friday Apple released a patch for a flaw in one of their core
security libraries. The library is used both in Apple’s mobile
operating system iOS, and their desktop operating system OSX. As of
today, the desktop version has yet to be patched. This flaw, and its
aftermath, are interesting for a number of reasons.
Firstly,
it’s very serious. The bug means that insecure network connections
are falsely identified as secure by the operating system. This means
that the flaw has an impact across numerous programs; anything that
relies on the operating system to negotiate a secure connection could
potentially be affected. This makes a whole range of services like
web and mail vulnerable to so-called ‘man-in-the-middle’ attacks
where a disreputable network host intercepts your network traffic,
and potentially thereby gains access to your personal information.
Secondly,
the flaw was dumb. The code
in question includes an unnecessarily duplicated ‘goto’,
highlighted here:
It
looks like a cut-and-paste error, as the rogue ‘goto’ is indented
as though it is conditional when – unlike the one above it – it
is not. There are many reasons a bug like this ought not to get
through quality assurance. It results in unreachable code, which the
compiler would normally warn about. It would have been obvious if the
code had been run through a tool that checks coding style, another
common best practice precaution. Apple have received a huge amount of
criticism for both the severity and the ‘simplicity’ of this bug.
Thirdly,
and this is where we take a turn into the world of free and open
source software, the code in question is part of Apple’s open
source release programme. That is why I can post an image of the
source code up there, and why critics of Apple have been able to see
exactly how dumb this bug is. So one effect of Apple making the code
open source has been that – arguably – it has increased the anger
and ridicule to which they have been exposed. Without the source
being available, we would have a far less clear idea of how dumb a
mistake this was. Alright, one might argue, open source release makes
your mistakes clear, but it also lets anyone fix them. That is a good
trade-off, you might say. Unfortunately, in this case, it is not that
simple. Despite being open source, the security framework in question
is not provided by Apple in a state which makes it easy to modify and
rebuild. Third party hackers have found it easier to fix the OSX bug
by patching the faulty binary – normally a much more difficult
route – rather than using Apple’s open source code to compile a
fixed binary.
It
is often argued that one key benefit of open source is that it
permits code review by anyone. In this case, though, despite being a
key security implementation and being available to review for over a
year, this bug was not seemingly identified via source review. For
me, this once again underlines that – while universal code review
is a notional benefit of open source release – in practice it is
universal ability to fix
bugs once they’re found
that is the strongest argument for source availability strengthening
security. In this case Apple facilitated the former goal but made the
latter problematic, and thereby in my opinion seriously reduced the
security benefit open source might have brought.
Finally,
it is interesting to note that a large number of commentators have
asked whether this bug might have been deliberate. In the atmosphere
of caution over security brought about by Edward Snowden’s
revelations, these questions naturally arise. Did Apple deliberately
break their own security at the request of the authorities? Obviously
we cannot know. However it is interesting to note the relation
between that possibility and the idea that open source is a weapon
against deliberate implantation of flaws in software.
Bruce
Schneier, the security analyst brought in by The Guardian to comment
on Snowden’s original documents, noted in his commentary that the
use of free and open source software was a means of combating
national security agencies and their nasty habit of implanting and
exploiting software flaws. After all if you can study the source you
can see the backdoors, right? Leaving aside the issue of compromised
compiler binaries, which might poison your binaries even when the
source is ‘clean’, the GotoFail incident raises another question
about the efficacy of open source as a weapon against government
snooping. Whether deliberate or not, this flaw has been available for
review for over a year.
The
internet is throbbing with the schadenfreude of programmers and
others attacking Apple over their dumbness. Yet isn’t another
lesson of this debacle that we cannot rely on open source release on
it’s own to act as a guarantee that our security critical code is
neither compromised nor just plain bad?
Dịch: Lê Trung Nghĩa
ủng hộ mã nguồn mở, internet miễn phí
Trả lờiXóa