Bảo mật 02/09/2026 10 phút

Chức năng 'tải ảnh từ URL' vô hại của tôi đọc trộm khoá cloud của chính máy chủ — đây là cơ chế đằng sau vụ Capital One 100 triệu hồ sơ

SSRF biến máy chủ của bạn thành cầu nối vào mạng nội bộ mà internet không chạm tới. Tôi dựng một tính năng tải ảnh từ URL và dùng nó đọc endpoint metadata cloud, rò ra khoá bí mật. Bài học: danh sách chặn thua danh sách cho phép — và lý do sâu hơn 'liệt kê cái xấu là vô tận'.

Bảo mật 02/09/2026 8 phút

Một tham số next=//evil bắt đầu bằng dấu gạch chéo vẫn ném nạn nhân ra host của kẻ tấn công — vì sao 'chỉ cho URL bắt đầu bằng /' là cái bẫy

Tôi đo open redirect bằng Chromium thật: phép kiểm 'phải bắt đầu bằng /' chặn được https://evil.com và javascript: nhưng thủng với //evil và /\evil, vì trình duyệt đọc // là một tên miền mới. Chỉ danh sách trắng đích mới chặn sạch. Kèm cái bẫy Referer — token trong URL rò sang trang ngoài — và đo xem trình duyệt hiện đại đã vá được một nửa ra sao.

Bảo mật 02/09/2026 9 phút

Một dòng pickle.loads() và lệnh của kẻ tấn công chạy với quyền root — mà không có bước 'thực thi' nào cả; JSON cùng dữ liệu thì trơ như đá

Với pickle, 'đọc dữ liệu' và 'chạy mã' là cùng một hành động: tôi dựng payload thật, và chỉ tải nó lên đã cho ra uid=0(root). JSON cùng chuỗi ấy chỉ trả về một dict. Khác biệt không nằm ở cách dùng mà ở bản chất định dạng — cái này lưu dữ liệu, cái kia lưu cả cách gọi hàm.

Bảo mật 02/09/2026 10 phút

Một tài liệu XML đọc trộm /etc/passwd của máy chủ — nhưng bốn trong sáu parser Python đã lặng lẽ chặn nó

Tôi gửi một tài liệu XML có 'thực thể ngoài' trỏ vào /etc/passwd, và một parser cấu hình sai trả về nguyên danh sách người dùng hệ thống. Nhưng điều bất ngờ là bốn trong sáu cấu hình tôi thử đã mặc định an toàn. XXE ngày nay phần lớn là lỗi bật nhầm một cái cờ.

Bảo mật 02/09/2026 9 phút

Một ký tự xuống dòng lọt vào giá trị cookie chèn thêm header Set-Cookie giả và chia đôi cả phản hồi — nhưng thư viện hiện đại đã chặn nó ở tầng

HTTP dựng cấu trúc trên một ký tự vô hình: cặp CRLF. Tôi dựng lại lỗ header injection — một \r\n trong giá trị người dùng tạo header giả và cả một thân phản hồi giả — rồi đo cách http.client và Werkzeug từ chối nó ngay. Lỗ chỉ còn sống khi bạn tự nối chuỗi response thô, và nó là cùng một con quái vật với SQL injection, XSS, command injection.

Bảo mật 02/09/2026 9 phút

Một trang lỗi debug quên tắt rò 14.276 ký tự: đường dẫn, số dòng, biến cục bộ — và tên bảng SQL biến kẻ dò mù thành nhắm trúng

Thông báo lỗi sinh ra để giúp lập trình viên — và khi hiện cho người dùng, nó giúp luôn kẻ tấn công. Tôi đo lượng thông tin rò ở chế độ debug so với production: gấp ~700 lần, và một lỗi SQL nguyên văn phơi cả tên bảng lẫn câu truy vấn. Bài học: thông báo chung ra ngoài, log chi tiết vào trong.