Lỗi heartbleed và TNXM

wasabi
10-04-14, 12:38
Như các bác biết có một thứ gọi là heartbleed là lỗi do thư viện phần mềm OpenSSL vốn là thư viện được dùng rộng rãi ở trên toàn thế giới và là thư viện phần mềm de-facto cho các kết nối HTTPS hoạt động.

Như các bác nào để ý, thì từ khoảng năm 2013 đến giờ thì để đảm bảo sự an toàn của những gì các bác post ở trên TNXM (để tránh xảy ra trường hợp của bác gì đánh quần vợt), TNXM sử dụng HTTPS. Điều này nghĩa là, kết nối giữa máy tính của các bác và TNXM là an toàn - ngoài TNXM và máy các bác ra thì trên lý thuyết không ai biết ai đã post cái gì, login vào nickname nào, etc.

Không may mắn là thư viện OpenSSL mà TNXM sử dụng là thư viện có chứa lỗi này, điều này có nghĩa là ai tận dụng lỗi này được trong thời gian em chưa sửa lỗi thì có thể có kiểm soát được dịch vụ web chạy trên TNXM: Có thể họ sẽ lấy được cái "chìa" để mở mã đường truyền tới TNXM. Em đã sửa ngay sau khi biết. Điều này, và theo như hiểu biết tốt nhất của em thì mật khẩu và tất cả các thông tin cá nhân của các bác vẫn an toàn, và các bác không cần phải làm gì cả.

Điều này, tuy nhiên, có một cái cơ hội rất nhỏ là có thể trong một vài ngày tới, nếu trong trường hợp xấu nhất có ai tận dụng được lỗ hổng này để lấy chứng chỉ HTTPS của TNXM và có thể theo dõi được đường truyền, thì họ sẽ có thể theo dõi các thông tin mà các bác post cho đến khi em yêu cầu chứng chỉ HTTPS mới. Cái và là cái tương đối khó xảy ra, nhưng các bác nếu lo lắng về sự an toàn của cá nhân, thì xin hạn chế post các thông tin nhạy cảm cho đến khi em lấy chứng chỉ mới (dạo này hơi bận).
hailua
10-04-14, 23:56
Bạn Bi vẩn chưa hiểu về lỗi openssl của heartbleed tạm dịch là chảy máu tim.


Nếu TNXM được sử dụng openSSL version 0.98 thì hoàn toàn không có lỗi. Nếu version openssl là 1.0.1 (tất cả mọi version cho đến 1.0.1.f ) hặoc 1.0.2 thì là có lỗi, có thể hack và truy được password.

Do đó, nếu Bi update openssl 1.0.1.g với phiên bản mới vào ngày 7 tháng 4 thì sẽ không bị sao cả. Phiên bản 1.0.2 beta đang thử nghiệm và không có vấn đề gì cả.

Trở về vấn đề của tnxm, nếu password với phiên bản cũ đã bị hacked hoặc compromised thì dù là update lên 1.0.1.f (phiên bản mới nhất) sau khi vá lại thì vẩn là bị hack. Do đó các đồng chí phải login vào và đổi password ngay sau khi bạn Bi phò update phiên bản mới của openSSL.




1
hailua
11-04-14, 00:09
Chứng chỉ cũ 8 tháng rùi Bi ơi. Làm chứng chỉ mới với version mới đi thôi.
mariopuzo
11-04-14, 06:41
Cái này nói thật chả sợ gì, cái em sợ là bị admin bán rẻ.
Bi có dám thề là không cung cấp thông tin thành viên cho ai khác cho dù bị cắt trim không?
wasabi
11-04-14, 07:20
Bạn Bi vẩn chưa hiểu về lỗi openssl của heartbleed tạm dịch là chảy máu tim.


Nếu TNXM được sử dụng openSSL version 0.98 thì hoàn toàn không có lỗi. Nếu version openssl là 1.0.1 (tất cả mọi version cho đến 1.0.1.f ) hặoc 1.0.2 thì là có lỗi, có thể hack và truy được password.

Do đó, nếu Bi update openssl 1.0.1.g với phiên bản mới vào ngày 7 tháng 4 thì sẽ không bị sao cả. Phiên bản 1.0.2 beta đang thử nghiệm và không có vấn đề gì cả.

Trở về vấn đề của tnxm, nếu password với phiên bản cũ đã bị hacked hoặc compromised thì dù là update lên 1.0.1.f (phiên bản mới nhất) sau khi vá lại thì vẩn là bị hack. Do đó các đồng chí phải login vào và đổi password ngay sau khi bạn Bi phò update phiên bản mới của openSSL.




1

Cảm ơn bác.

Heartbleed - chảy máu tim - là cách chơi chữ của heartbeat - heartbeat là nhịp tim được dùng để chỉ những thứ thỉnh thoảng được "hâm nóng" một lần để giữ kết nối. Lỗi này em đã đọc và hiểu tương đối cụ thể vấn đề. Heartbeat là một extension để giữ kết nối SSL mà không cần phải tạo một connection mới vì negotiation để tạo một connection qua SSL rất mất thời gian. Để đảm bảo được tính an toàn trong mã hoá (vì nếu không thì nó sẽ để lại dấu vân tay - fingerprint) thì người ta không dùng ping theo cách dân tin học bình thường dùng là chỉ gửi một packet với một dung lượng hay nội dung cố định mà người ta cho phép client gửi một gói tin ngẫu nhiên với độ dài nhất định, và đòi hỏi ông server gửi lại đúng nguyên xi cái package đấy trở lại. Gói tin này có hai phần, một phần là phần chỉ độ dài và một phần là nội dung (payload) ngẫu nhiên. Vấn đề là đoạn mã để gửi lại gói tin ngẫu nhiên đó lại không check xem client có gửi payload như đã hứa không. Rốt cuộc là nếu bác gửi một cái phần chỉ độ dài là 64K nhưng payload = 0 thì cái đoạn mã này sẽ đi copy một phần của heap vào payload trả lời. Đây là lỗi rất đáng tiếc và rất cơ bản.

Trở lại vấn đề TNXM.

Em đã dùng bản có lỗi (Debian Wheezy, nginx). Dĩ nhiên bây giờ nó không còn lỗi nữa. Vì nginx không trực tiếp execute mọi thứ mà chỉ đóng vai trò trung gian cho HHVM (chương trình dịch PHP) đứng đằng sau nên cái người ta có thể nhìn được cùng lắm là những thứ kiểu như session ID hay hashed password, vốn không phải là vấn đề vô cùng đáng ngại.

Việc truy được password là điều hầu như bất khả, vì client của các bác đã "băm" (hashed) trước password trước khi gửi đi. Còn trường hợp xấu nhất là nếu ai đó hijack được session của các bác thì họ chỉ có thể post được trong thời gian ngắn. Em chưa thấy cái gì có thể dẫn đến việc cơ sở dữ liệu bị khai thác vì đơn giản là HHVM, vốn là thứ đứng đằng sau có mọi thông tin, không bị xâm phạm gì cả.
wasabi
11-04-14, 07:25
Cái này nói thật chả sợ gì, cái em sợ là bị admin bán rẻ.
Bi có dám thề là không cung cấp thông tin thành viên cho ai khác cho dù bị cắt trim không?
Dĩ nhiên em không hứa là em sẽ không cung cấp thông tin thành viên cho ai khác cho dù có bị cắt trym (trong trường hợp đó tốt nhất là em nên cung cấp).

Cái mà em có thể hứa là những điều sau:

- Hạn chế lưu trữ thông tin của thành viên để khi phải khai thông tin thì em cũng chỉ có một lượng thông tin vô cùng giới hạn để khai.

- Không tự tay khai thông tin thành viên để làm lợi cho mình hay để sướng cái trym.

- Không tiếp tay cho những người có những ý định trên.
ynm
11-04-14, 23:56
Theo bi giải thích như vậy, anh hiểu là để khai thác lỗi này phải đang kết nối và server sẽ lưu thông tin (hashed password) trong heap. Khi attacker giả danh gửi tới server một gói yêu cầu 64K nhưng không gửi payload, server sẽ copy 64K (chứa thông tin tạm thời trong heap) và trả lại attacker?
wasabi
12-04-14, 00:38
Theo bi giải thích như vậy, anh hiểu là để khai thác lỗi này phải đang kết nối và server sẽ lưu thông tin (hashed password) trong heap. Khi attacker giả danh gửi tới server một gói yêu cầu 64K nhưng không gửi payload, server sẽ copy 64K (chứa thông tin tạm thời trong heap) và trả lại attacker?

Đúng thế.

Về việc hashed password thì em xin được giải thích như sau:

Server nginx không lưu hashed password ở đâu cả. Nhưng nếu bác đã gửi cái gì đó cho server, ví dụ hashed password -- hay một trường hợp khác dễ xảy ra hơn là session ID (http://php.net/manual/en/function.session-id.php) -- để PHP biết ai vào với ai, vốn là thứ được gửi cùng mỗi request của bác, thì nginx nó phải lưu những thứ này tạm ở đâu đó bằng cách malloc(), giải mã và ghi vào chỗ đã malloc đó, gửi đi cho HHVM, rồi sau đó free(). Vấn đề là malloc() cái gì đó rồi free() chỉ đánh dấu phần bộ nhớ đó là free - tức là có thể ghi đè lên thoải mái, chứ bản thân hàm free nó không xoá cái nội dung nó free đi.

Cho nên trường hợp là bác truy xuất hay gửi thông tin tới trang đăng nhập của trang tnxm một phút trước khi thằng cha tin tặc nó tấn công, thì rất có thể cái phần mà nginx nó vừa giải mã có chứa session ID hay hashed password chưa có cái gì ghi đè lên. Vì thế cái heartbeat nó sẽ trả lại cho thằng cha tin tặc một đống garbage trong đó có thể nhỡ may là có cái session ID của bác ở đấy.

http://imgs.xkcd.com/comics/heartbleed_explanation.png
hailua
12-04-14, 07:46
Kaspersky


http://business.kaspersky.com/the-heart-is-bleeding-out-a-new-critical-bug-found-in-openssl/

Các đồng chí nên login vào và thay đổi pass mới.
Laventa
12-04-14, 09:44
thế giờ đã an toàn chưa? :D
Laventa
12-04-14, 09:46
khiếp thật, cái gì ko bị lại bị trái tim rỉ máu, rỉ máu một lần yêu bao nhiêu lần cho lại :D
wasabi
12-04-14, 10:21
thế giờ đã an toàn chưa? :D
Chưa 100%, chỉ 95% thôi.
Bố Chí Phèo
13-04-14, 10:57
họ sẽ có thể theo dõi các thông tin mà các bác post cho đến khi em yêu cầu chứng chỉ HTTPS mới. Cái và là cái tương đối khó xảy ra, nhưng các bác nếu lo lắng về sự an toàn của cá nhân, thì xin hạn chế post các thông tin nhạy cảm cho đến khi em lấy chứng chỉ mới (dạo này hơi bận).
Sợ cái chim gì. Các bố post cái gì thì nó cũng hiện hết cả nội dung vào bài, thế thì bọn trộm cắp có theo dõi bố thì cứ việc vào đây mà đọc, việc gì phải trộm cắp thông tin gì nữa. Sợ cái chim!