Welcome to MikeDaDev's Blog – notes on Java, backend & system design.

Explore
MikeDaDev's Blog

#security

Things I've written about #security
/
  • ChainDrop: con worm npm đi qua cổng chính, mang theo cả provenance

    Sáng 4/8/2026, tài khoản GitHub của maintainer Keyv bị chiếm, và chỉ vài giờ sau hàng trăm package npm khác cũng chứa mã độc chạy ngay lúc npm install. Bài này mổ xẻ ChainDrop, một biến thể họ Shai-Hulud: cách nó đánh cắp token rồi tự publish lại, vì sao bản độc vẫn có provenance hợp lệ, cách rà máy dev và CI, và những thứ nên đổi trong quy trình cài dependency.

  • Cisco ISE zero-day CVE-2026-76460: CVSS 10 và cánh cổng của cả mạng

    CVE-2026-76460 là lỗi bypass xác thực CVSS 10.0 trên Cisco Identity Services Engine, bị khai thác thật và vào CISA KEV ngay ngày công bố 16/09/2026. Bài này đối chiếu advisory của Cisco với NVD, giải thích vì sao ISE là mục tiêu béo bở, phân biệt cái đã xác nhận với cái mới là suy đoán, rồi đi qua cách kiểm tra, vá và rà dấu hiệu bị xâm nhập.

  • Zero-day Citrix NetScaler CVE-2026-88771: log bị đầu độc thành root shell

    Cuối tháng 9/2026, Citrix vá hai zero-day trên NetScaler ADC và Gateway đang bị khai thác thật: CVE-2026-88771 là command injection không cần đăng nhập, nằm trong một script Perl xử lý log của packet engine; CVE-2026-88772 là tràn bộ nhớ khi bật DTLS. Bài này mổ xẻ cơ chế của lỗi, dòng thời gian, cách kiểm tra thiết bị của mình, dấu hiệu đã bị xâm nhập, và vì sao thiết bị biên kiểu này cứ dính lỗi hoài kể từ thời CitrixBleed.

  • Node2Shell (CVE-2026-111497): lỗi Brotli trong Node.js và bài học về runtime

    Node2Shell (CVE-2026-111497) là lỗi ghi tràn bộ nhớ trong bộ giải nén Brotli mà Node.js đóng gói sẵn bên trong. Bài này mổ xẻ vì sao một giá trị trả về bị hiểu nhầm lại thành lỗ hổng thực thi mã từ xa, ứng dụng Express và Next.js nào dính, cách kiểm tra, vá, giảm thiểu tạm thời, và vì sao `npm audit` không cứu được bạn trong vụ này.

  • PHP2Shell: hai lỗ hổng RCE CVE-2026-109618 và CVE-2026-109619

    Ngày 21/10/2026 PHP phát hành 8.5.12, 8.4.27, 8.3.36 và 8.2.35 để vá hai lỗ hổng RCE không cần xác thực, CVSS v4 9.2, được gọi chung là PHP2Shell. Bài này mổ xẻ cơ chế (out-of-memory làm hỏng dữ liệu khởi tạo dở, và state cũ sống sót sang request sau), cách kiểm tra máy chủ, container, PHP-FPM sau CDN/WAF có dính không, cách vá, biện pháp tạm thời và những điều nguồn gốc chưa nói rõ.

  • CVE-2026-119977: bấm Update Now cũng có thể là lúc WordPress bị chiếm

    CVE-2026-119977 là lỗi race condition (TOCTOU) trong chính quy trình nâng cấp core của WordPress: trong vài giây bản mới được giải nén vào một thư mục đoán được và truy cập được từ web, kẻ tấn công không cần đăng nhập có thể chen vào. Lỗi đã bị khai thác thật, CISA đưa vào KEV ngày 3/11/2026. Bài này mổ xẻ cơ chế, phiên bản bị ảnh hưởng, cách kiểm tra bằng wp-cli, biện pháp tạm thời và dấu hiệu bị xâm nhập.

  • Thiết kế hệ thống lưu trữ tài liệu trong thời đại số hoá

    Ảnh CCCD lúc mở tài khoản, hợp đồng vay ký điện tử, sao kê tháng: mỗi ngày một ngân hàng vài chục triệu khách sinh ra hàng triệu file, và file nào cũng phải giữ đúng người xem, đúng thời hạn, không được mất. Bài này dựng một kiến trúc tham chiếu cho nền tảng lưu trữ tài liệu cỡ đó: ước lượng tải, upload chia chunk, lưu theo tầng nóng ấm lạnh, phân quyền RBAC kết hợp ABAC, mã hoá envelope, và những kiểu hỏng hay gặp khi chạy thật.

  • in ai / llm

    Red teaming LLM: tự tấn công ứng dụng AI của mình trước khi người khác làm

    Phòng thủ chưa từng bị đánh thử thì chỉ là phòng thủ trên giấy. Red teaming ứng dụng LLM của chính mình: các họ kỹ thuật tấn công từ GCG, PAIR, Crescendo tới many-shot và Best-of-N, vì sao phải đo bằng tỉ lệ chứ không phải "lọt hay không", cần chạy bao nhiêu lần, dùng canary để chấm tự động, cạm bẫy khi dùng LLM làm giám khảo, và cách đưa tất cả vào CI.

  • in ai / llm

    Bảo mật LLM cơ bản: vẽ bản đồ mối đe doạ trước khi viết code

    Prompt injection chưa có thuốc chữa, nên câu hỏi đúng không phải "làm sao để model không bị lừa" mà là "bị lừa rồi thì mất gì". Cách làm threat model cho chatbot, RAG và agent: tài sản, kẻ tấn công, ranh giới tin cậy, lethal trifecta, mổ xẻ vụ EchoLeak trong Microsoft 365 Copilot, và những kiến trúc như CaMeL hay Rule of Two giúp giới hạn thiệt hại ngay từ thiết kế.

  • bảo mật LLM & OWASP Top 10

    Bảo mật cho hệ thống Generative AI và Agentic Workflows: vì sao Code Plane và Data Plane lẫn vào nhau trong LLM, các kiểu tấn công theo OWASP Top 10 for LLM, mô hình Dual-LLM Sandbox, Zero-Trust Tool Broker và Guardrails nhiều lớp (Defense-in-Depth) cho production.

  • in aws / cloud

    amazon S3

    Ghi chú dùng Amazon S3 cho hệ thống lớn: Strong Read-After-Write Consistency là gì, dùng Presigned Multipart Upload để backend khỏi gánh băng thông, bảo mật với SSE-KMS và IRSA trên Kubernetes, và cái bẫy tốn tiền mang tên AbortIncompleteMultipartUpload.

  • docker & container

    Mổ xẻ container và Docker từ bên trong: Linux Namespaces, Cgroups v2, OverlayFS; viết Dockerfile multi-stage, layered, chạy distroless non-root; xử lý dứt điểm chuyện PID 1 và graceful shutdown; cấu hình JVM nhận biết container để khỏi dính OOMKilled.

  • CORS & CSRF

    Hiểu cho đúng mấy cơ chế bảo mật của trình duyệt: Same-Origin Policy thật ra là gì, preflight OPTIONS tốn thêm bao nhiêu, cái bẫy Access-Control-Allow-Origin dùng wildcard, và vì sao nên gom cấu hình CORS về API Gateway.

  • Spring Security annotations

    Kiến trúc bảo mật của Spring Security: hai lớp phòng thủ FilterChain và AOP Method Security, SpEL trong @PreAuthorize, bẫy Side-Effect của @PostAuthorize, vấn đề hiệu năng của @PostFilter và cách thiết lập Role Hierarchy cho production.

  • spring profiles và externalized config

    Quản lý cấu hình trong Spring Boot cho bài bản: nguyên tắc 12-Factor Config, thứ tự ưu tiên giữa các PropertySource, spring.config.import (Spring Boot 2.4+), kết hợp HashiCorp Vault & Kubernetes ConfigMaps, và reload nóng với @RefreshScope.