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

Explore
MikeDaDev's Blog

Pinned Post

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.

Latest Posts

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.

Kinh nghiệm phỏng vấn tại công ty A*

Bài test viết gồm 5 câu của một công ty fintech mình tạm gọi là A*: đa luồng cho n chiếc xe xuất phát cùng lúc, chuỗi con dài nhất không lặp ký tự, thiết kế API 3 tầng có mã hoá bất đối xứng, SDLC và mô hình OSI. Mình đi qua từng câu, chỗ dễ mất điểm, code đã chạy thử, rồi tổng hợp các vòng phỏng vấn thường gặp phía sau và cách chuẩn bị.

Claude Code template cho Spring Boot: mổ xẻ repo của Piotr Mińkowski

Repo claude-ai-spring-boot gói sẵn CLAUDE.md, 6 agent và 7 skill để Claude Code viết Spring Boot 4 theo đúng chuẩn. Bài này mở từng phần ra xem nó vận hành thế nào, rồi chạy thử code mẫu trong skill trên Spring Boot 4.1.1: chỗ nào compile không qua, chỗ nào Kubernetes sẽ âm thầm bỏ qua preStop hook, file quyền nào đi theo khi clone, và cách sửa trước khi đem về dùng cho team.

12 tính năng Claude Code mà kỹ sư nào cũng nên biết

Nhiều người dùng Claude Code mỗi ngày mà chỉ xài mỗi ô chat. 12 tính năng dưới đây được giải thích theo đúng cách chúng vận hành bên dưới: CLAUDE.md được nạp ra sao, vì sao context là tài nguyên quý nhất, plan mode, các chế độ quyền, checkpoint, skills chỉ nạp khi cần, subagent cô lập context, hooks và ý nghĩa của exit code 2, MCP, chạy headless trong CI, chạy song song và lên lịch tự động.

in ai / llm

Netflix dạy LLM gợi ý phim để bạn xem mãi không dừng

Từ cuộc thi Netflix Prize một triệu đô năm 2006 tới việc coi lịch sử xem phim như một câu văn và huấn luyện model kiểu LLM để đoán bộ phim tiếp theo. Những gì Netflix đã chia sẻ công khai: hệ thống gợi ý cổ điển và giới hạn của nó, foundation model cho gợi ý, cách đưa vào sản phẩm, GenRec, bài toán đo "hài lòng lâu dài", và những gì một team nhỏ học được từ đó.

in ai / llm

Agentic RAG hoạt động thế nào?

RAG cổ điển tra cứu một lần rồi trả lời, nên hay trật với câu hỏi cần nhiều bước, nhiều nguồn. Agentic RAG giao việc tra cứu cho một agent biết tự lên kế hoạch, chọn công cụ, chấm kết quả và tìm lại. Mổ xẻ những chỗ RAG cổ điển hỏng, hybrid search với rerank, các bước tiến hoá HyDE, Self-RAG, CRAG, rồi dựng thử một vòng lặp agent, tính chi phí, điểm mặt các kiểu hỏng trong production và cách đánh giá.

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.