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

SAST bắt eval trong hàm chết mà DAST không bao giờ chạm tới; DAST thấy traceback rò ra mà SAST không nằm ở dòng nào — chọn một là tự tin sai chỗ

SAST đọc mã mà không chạy, DAST tấn công app đang chạy mà không đọc mã. Tôi gài lỗ hổng vào một app rồi chạy bandit và một DAST tự viết: mỗi công cụ bắt đúng cái công cụ kia mù, gần như bù trừ hoàn toàn — SAST cho danh sách *khả năng*, DAST cho danh sách *thực tế*, và một câu SQLi lệch khuôn thì cả hai đều hụt.

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

yaml.load từng chạy lệnh shell của kẻ tấn công chỉ với một dòng — bản vá đổi mặc định sang an toàn, nhưng tôi tự mở lại lỗ hổng bằng đúng cách 'sửa lỗi' ai cũng làm

'Vá thì cứ nâng phiên bản là xong' bỏ qua ba câu hỏi thật: vá sửa cái gì, lỗ hổng có biến mất hẳn không, và bạn phơi nhiễm bao lâu giữa lúc vá ra và lúc thật sự dùng nó. Tôi tái dựng RCE của PyYAML: bản cũ dính, bản mới chặn — rồi vô tình dán lại đúng lỗ hổng bằng cách thêm Loader=yaml.Loader để hết TypeError, đúng cái bẫy khiến lỗ này sống sót qua bản vá.

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

Chạy danh sách kiểm bảo mật lên chính cái blog này: tám mục đạt, khoá xanh, header đầy đủ — và một dòng curl vẫn moi ra cookie phiên thiếu cờ Secure

Làm sao BIẾT một ứng dụng đã cấu hình đúng, không phải bằng cảm giác 'chắc ổn'? Tôi chạy một danh sách kiểm chỉ-đọc lên chính blog Spring Boot đang chạy: header đủ, actuator đóng kín, trang lỗi sạch — nhưng cookie JSESSIONID thiếu cờ Secure, đúng cái mục mà sự tự tin chung che mất. Danh sách kiểm biến 'có an toàn không' mơ hồ thành một bảng từng dòng đạt/không đạt.

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

Bốn lớp lỗ hổng, một bảng: cách an toàn chặn 0/4, cách 'tự tắt bảo vệ' lọt 4/4 — bảo mật không phải thêm gì, mà là đừng gỡ

Bài chốt sê-ri bảo mật web: tôi gom bốn lớp lỗ hổng khác hẳn nhau (chạy mã từ chuỗi, SQL injection, shell injection, YAML RCE) vào một phép đo — cách khuyến nghị chặn sạch cả bốn, cách opt-out lọt cả bốn. Công cụ hiện đại đã mặc định an toàn; lỗ hổng gần như luôn đến từ hành động chủ động gỡ lớp bảo vệ có sẵn, không phải từ việc thiếu một lớp mới.

DevOps 01/09/2026 8 phút

Sidecar của service mesh chỉ thêm 0,19 ms và 5 MB RAM — nhưng một pod ngoài mesh vẫn gọi thẳng vào được không mã hoá; cài mesh không tự nó chặn gì

Service mesh hứa mTLS, quan sát và điều khiển lưu lượng mà không sửa mã. Cài Linkerd lên cụm thật rồi đo: sidecar thêm ~0,19 ms (2,4 lần tương đối nhưng dưới 5% với dịch vụ thật) và chỉ 3–5 MB RAM. mTLS bật sẵn không cần khai gì. Nhưng điểm quan trọng nhất: mTLS là CƠ HỘI, không phải bắt buộc — pod ngoài mesh gọi vào vẫn chạy bình thường bằng văn bản rõ, cho tới khi bạn thêm chính sách cưỡng chế.

DevOps 01/09/2026 9 phút

python:3.12 có 2.889 lỗ hổng, bản alpine cùng Python đó có 25 — ít hơn 115 lần mà không sửa một dòng mã; và đổi ảnh trên cùng một thẻ làm chữ ký biến mất sạch

Pod Security Standards kiểm soát pod LÀM GÌ; bài này lùi một bước, kiểm soát cái NẰM TRONG pod. Quét sáu ảnh: python:3.12 Debian 2.889 lỗ hổng so với python:3.12-alpine chạy cùng Python chỉ 25 — chênh 115 lần chỉ vì mọi thứ đi kèm. Và phép đo quan trọng nhất: chữ ký gắn với digest chứ không với thẻ, nên đổi ruột ảnh dưới cùng một thẻ v1 làm chữ ký mất hoàn toàn. Dùng digest, không dùng thẻ.