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

Explore
MikeDaDev's Blog

#devops

Things I've written about #devops
  • 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.

  • 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.

  • vận hành database cluster & tính Idempotent

    Script bảo trì hay nâng cấp database phân tán đang chạy thì đứt kết nối, giờ chạy lại có sao không? Bài này nói về cách tự động hoá vận hành cluster, cách thiết kế State Machine cho từng node và vì sao Idempotent là nguyên tắc SRE không được bỏ qua.

  • Feature Flags với Unleash & Spring Boot

    Feature Flags với Unleash trong Spring Boot 3: 4 nhóm toggle theo cách chia của Pete Hodgson, cách Unleash đánh giá flag ngay trong bộ nhớ phía client và đồng bộ qua Server-Sent Events, chuyện MurmurHash3 chia user khi gradual rollout, và dùng Strategy Pattern để thoát khỏi đống if-else.

  • in ai / llm

    vLLM & PagedAttention

    Model chỉ nặng vài chục GB mà GPU cứ báo hết VRAM? Thủ phạm là KV Cache. Bài này mổ xẻ chuyện KV Cache phình to, cách PagedAttention mượn ý tưởng bộ nhớ ảo của hệ điều hành để xử lý nó, và vì sao vLLM đẩy throughput suy luận lên cao gấp nhiều lần (tới 24 lần so với HuggingFace Transformers, theo số đo của nhóm tác giả).

  • kiến trúc API Gateway

    Mổ kiến trúc API Gateway trong hệ thống microservices cỡ lớn: đặt Kong, Spring Cloud Gateway và Envoy lên bàn cân, làm distributed rate limiting kiểu token bucket bằng Redis Lua, mô hình BFF và circuit breaker để hệ thống tự hồi phục.

  • kiến trúc observability với grafana

    Kiến trúc Observability với Grafana và LGTM Stack (Loki, Grafana, Tempo, Mimir): 4 Golden Signals, RED/USE, cảnh báo Error Budget Multi-Window Multi-Burn-Rate theo kiểu Google SRE, và cách tránh bẫy bùng nổ Cardinality trong PromQL.

  • jenkins

    Ghi chép về Jenkins: kiến trúc Controller/Agent, Pipeline as Code, Shared Libraries và các best practice khi vận hành CI/CD.

  • 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.

  • 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.