Hồi cuối tuần trước, một hacker tên Orange Tsai đã viết về cách mà anh
hack vào
Facebook
trong khuôn khổ chương trình tìm lỗ hổng do chính hãng này phát động
(bug bounty). Trong chương trình đó, ai tìm được và khai thác được lỗ
hổng
bảo mật
của Facebook sẽ được thưởng, nhờ vậy mà công ty biết được các mối đe
dọa từ bên ngoài chứ không chỉ nhờ vào đội ngũ bảo mật của riêng mình.
Nhưng Tsai không chỉ tìm được lỗi mà anh còn thấy là có ai đó đã
hack Facebook
được 8 tháng trời rồi, đoạn mã độc được nhúng vào có khả năng lấy trộm
username, password và có thể là nhiều hơn thế nữa. Đến nay, danh tính
của tin tặc đã tấn công Facebook vẫn chưa rõ...
Hack vào server và chiếm quyền điều khiển
Mọi chuyện bắt đầu khi Tsai làm vài nghiên cứu nho nhỏ và phát hiện ra một tên miền thú vị:
tfbnw.net.
Tên miền này thuộc sở hữu của Facebook, và nhiều khả năng nó viết tắt
cho chữ "The Facebook Network". Sau đó, Tsai thấy thêm một sub domain
nữa là
vpn.tfbnw.net. Khi vào trang web này thì có một giao diện
đăng nhập của phần mềm VPN do công ty Juniper phát triển. Phiên bản của
phần mềm này khá mới, không có lỗ hổng nào có thể khai thác được.
Quay trở lại với tfbnw.net, Tsai nghĩ rằng tên miền này là để dùng cho
nội bộ Facebook chứ không phải là dùng cho mạng xã hội mà công ty đang
kiếm được hàng tỉ USD từ đó. Quét thử tên miền, anh phát hiện ra một số
server đang chạy:
- Mail server, dùng Outlook Web App
- SSL VPN
- Bộ phần mềm quản lý doanh nghiệp Oracle E-Business
- Hệ thống quản lý thiết bị di động (MDM) của MobileIron
Dựa vào thông tin từ các server này, Tsai biết tên miền này rất quan trọng với Facebook trong việc hoạt động thường ngày.
Anh lại tiếp tục tìm hiểu thêm và phát hiện một subdomain tên là
files.fb.com.
Dựa vào logo và dòng footer trên website, có vẻ như đây là hệ thống
trao đổi file Secure File Transfer (FTA) của hãng Accellion. FTA là sản
phẩm cho phép sẻ file trực tiếp và đồng bộ file cũng như hỗ trợ các cơ
chế sigle sign-on (dùng 1 username và password cho nhiều ứng dụng khác
nhau).
Ngay khi thấy được giao diện này, Tsai bắt đầu thử tìm xem có lỗ hổng
nào của FTA có thể được khai thác mà người ta đã biết tới hay chưa. Có
một lỗ hổng được báo cáo gần đây nhất nhưng nó chỉ chạy với phiên bản
0.18, trong khi Facebook đã cập nhật lên bản 0.20 rồi. Nhưng bằng kinh
nghiệm của mình, Tsai biết kiểu lập trình này sẽ vẫn còn để lại lổ hổng ở
đâu đó, vậy là anh tiếp tục tìm hiểu để xem có thấy được lỗ hổng zero
day nào hay không (zero day là lỗ hổng bảo mật chưa từng được phát
hiện).
Nói thêm về FTA, nó sử dụng:
- Giao diện nền web, chạy chủ yếu bằng ngôn ngữ lập trình PHP và Perl
- Mã nguồn PHP được mã hóa bằng IonCube
- Có khá nhiều tiến tình Perl chạy ngầm ở bên dưới
Đầu tiên Tsai thử giải mã mã nguồn. Lý do mà Accellion và nhiều
hãng phần mềm khác phải mã hóa như thế này là để tránh hacker soi mói mã
nguồn sản phẩm. May mắn là phiên bản IonCube dùng bởi FTA không phải là
bản mới nhất và có thể giải mã dễ dàng bằng những công cụ có sẵn. Cuối
cùng thì anh phát hiện ra danh sách các lỗ hổng sau:
- 3 lỗi Cross-Site Scripting (có thể nhúng mã độc từ web khác vào)
- Lỗi SQL Injection (thêm thắt các câu lệnh để chui vào cơ sở dữ liệu)
- Secret key có thể dẫn đến việc bị điều khiển từ xa
- 2 lỗi Local Privilege Escalation có thể dùng để chiếm quyền cao hơn bình thường
Bằng cách lợi dụng những lỗ hổng nói trên, Tsai đã chiếm được quyền
kiểm soát server. Anh không công bố chi tiết cách làm, anh sẽ chỉ tiết
lộ điều này với Facebook mà thôi.
Có gì đó lạ lạ...
Trong lúc đang nghịch ngợm trên server Facebook, Tsai phát hiện một số
thứ lạ thông qua web log, một nơi ghi lại các hoạt động của PHP. Cụ thể
hơn, trong đường dẫn “
/var/opt/apache/php_error_log” có ghi một
số dòng lỗi dường như xuất phát từ việc chỉnh sửa mã nguồn online. Truy
vết, anh phát hiện được nhiều file được để lại bởi các "visitor" trước
đây với nội dung đáng ngờ. Những file đó chứa các dòng mã nguồn thường
dùng để mở backdoor giúp hacker truy cập vào máy. Anh xác định có ai đó
đã tạo ra một "proxy" đứng giữa người dùng và server để đánh cắp các
thông tin được truyền đi, bao gồm cả username và password.
Một đoạn mã nguồn bị phát hiện
Những thông tin sau khi bị ghi nhận lại sẽ được chứa trên một thư mục để
hacker có thể lên đó lấy xuống. Cụ thể, link của file đó là
https://files.fb.com/courier/B3dKe9sQaa0L.log
(giờ thì đã bị đóng lại rồi). Trong giai đoạn từ ngày 1/1 đến 7/1 có 300
tài khoản đã bị thu thập thông tin, trong đó phần lớn là email đuôi @
fb.com và
@Facebook.com. Khi nhìn thấy file này, Tsai chắc chắn đây là một vấn đề bảo mật.
Trích đoạn của file dùng để ghi nhận thông tin tài khoản
Nhưng hacker cũng hơi bất cẩn một chút. Các hàm backdoor mà hắn ta để
lại có thể phơi bày danh tính của hắn. Và khi hacker đang gửi đi các
lệnh thì nhiều dấu vết của hắn bị ghi nhận lại. File access.log cho thấy
hacker có vẻ như truy cập vào server Facebook vài ngày một lần, trong
ít nhất 8 tháng qua.
Phản hồi của Facebook
Khi bài viết của Tsai bắt đầu thu hút sự chú ý trên một forum bảo mật,
một nhân viên của Facebook tên Reginaldo Silva đã vào comment rằng
backdoor mà Tsai tìm thấy thực chất là một lỗ hổng được một nhà nghiên
cứu khác để lại cũng trong chương trình hack mà Facebook tổ chức. Silva
cũng nói thêm rằng server đó đã bị cô lập khỏi phần còn lại của hệ thống
mà nhân viên Facebook sử dụng. "Đây là một chiến thắc kép: 2 nhà nghiên
cứu đã xâm nhập được vào hệ thống, một trong số họ đã báo cho chúng tôi
và nhận được phần thưởng, nhưng không ai có thể đi sâu hơn".
Có vẻ như việc thu thập 300 tài khoản của nhân viên Facebook chưa phải
là việc "đi sâu hơn". Ai mà biết được với 300 tài khoản đó "nhà nghiên
cứu" kia đã có thể làm gì. Ngay cả khi mọi thứ giống như Silva nói thì
Facebook cũng khó lòng mà biết được khi mà tất cả diễn ra ở một phần mềm
tách rời với cơ sở hạ tầng của Facebook. Dù sao đi nữa thì việc thu
thập thông tin đăng nhập của trái với quy định của chương trình bug
bounty của Facebook. Rõ ràng người đột nhập vào được hệ thống không phải
là một người tham gia trong chương trình này.
Facebook vẫn thưởng cho Tsai số tiền 10.000$. Tuy nhiên, số tiền này có
vẻ như vẫn còn quá ít so với một lỗ hổng có thể giúp hacker chiếm quyền
điều khiển server và đánh cắp hàng đống tài khoản đăng nhập của nhân
viên. Khi Tsai nói về số tiền này, nhiều nhà nghiên cứu trong cùng lĩnh
vực cũng bày tỏ sự bất bình và họ đều cho rằng nó quá ít ỏi so với công
của Tsai.
Đây không phải là lần đầu tiên Facebook bị chê vì trả tiền quá ít cho
những người đã giúp hãng phát hiện nguy cơ bảo mật trong hệ thống. Hồi
tháng 12 năm ngoái, nhà nghiên cứu Wesley Wineberg đã tìm thấy một loạt
lỗ hổng trong Instagram cho phép anh chiếm quyền điều khiển gần như mọi
thứ, kể cả mã nguồn của mạng xã hội hình ảnh lớn nhất thế giới. Cứ mỗi
lỗ hổng tìm thấy, anh đều báo cáo cho Facebook và giữ lại dữ liệu như là
một bằng chứng. Facebook chỉ trả anh ấy 2500$ cho lỗ hổng đầu tiên.
Nhưng chưa dừng lại ở đó, Alex Stamos, giám đốc bảo mật thông tin của
Facebook, còn không thèm liên hệ với Wineberg để nói về những lỗ hổng
vừa được phát hiện và cách thức phát hiện ra chúng. Thay vào đó, Stamos
đã gọi cho nhà tuyển dụng của Wineberg và đe dọa sẽ kéo lực lượng chức
năng vào cuộc. Đây là lý do vì sao Facebook bị giới bảo mật ghét khi đe
dọa những nhà nghiên cứu có công trong việc tìm ra lỗi của chính hãng.
Hiện tại, với Tsai, mọi lỗi mà anh nói cho Facebook đã được khắc phục
xong hết. Mãi một tháng sau Tsai mới đăng bài viết của mình, đó cũng là
cách mà anh thể hiện trách nhiệm của một nhà nghiên cứu bảo mật và đảm
bảo Facebook sẽ không bị hại từ việc công bố. Danh tính của hacker đã
gắn script thu thập password vẫn chưa rõ ràng, Tsai cũng chưa có bằng
chứng để liên hệ nó với bất kì người nào trên thế giới.
https://tinhte.vn/threads/ai-da-hack-vao-server-cua-facebook.2577914/