Thứ Ba, 11 tháng 3, 2014

GotoFail (đi tới thất bại), Nguồn mở và Edward Snowden


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

1 nhận xét:

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.