Lỗ Hổng Trong Notepad++ Biến Ứng Dụng Vô Hại Thành Công Cụ Hacker
Giới thiệu
Notepad++ được biết đến là một phần mềm soạn thảo mã nguồn (source code editor) và soạn thảo văn bản (text editor) miễn phí, mạnh mẽ, dành cho hệ điều hành Windows. Nó được nhiều lập trình viên và người dùng kỹ thuật ưa chuộng vì tính nhẹ, tốc độ nhanh và hỗ trợ đa ngôn ngữ lập trình.
Cuối tháng 09 năm 2025 vừa qua thì phần mềm này đã dính một lỗ hổng DLL hijacking nguy hiểm được đánh số định danh: CVE‑2025‑56383 trong phiên bản V8.8.3. Mặc dù mức độ nghiêm trọng được đánh giá là CVSS 6.5 tức là mức độ trung bình tuy nhiên cũng không được xem nhẹ ảnh hưởng của nó đối với hệ thống. Lỗ hổng này cho phép kẻ tấn công thay thế một DLL “tin cậy” (ví dụ NppExport.dll) bằng một DLL độc hại mang cùng tên, để thực thi mã bất hợp pháp khi Notepad++ được khởi chạy.
Lỗ hổng này yêu cầu kẻ tấn công phải có quyền ghi (write) vào thư mục cài đặt của Notepad++ (hoặc có cách đặt DLL độc hại vào đường dẫn tìm kiếm).
Ảnh hưởng chính
- Thực thi mã tùy ý (arbitrary code execution) khi Notepad++ được khởi động – tức là nếu người dùng chạy Notepad++, mã độc sẽ chạy kèm đó.
- Tăng quyền (privilege escalation): nếu Notepad++ chạy dưới quyền cao hơn, kẻ tấn công có thể dùng lỗ hổng này để leo quyền.
- Cài persistency (duy trì lâu dài): kẻ tấn công có thể giữ mã độc tồn tại trong hệ thống thông qua cách này, mỗi khi người dùng mở Notepad++.
- Tác động rộng: Notepad++ là phần mềm phổ biến, được sử dụng bởi lập trình viên, quản trị hệ thống và người dùng thường xuyên. Do đó, diện tấn công rộng.
Điều kiện khai thác
Để một tấn công DLL hijacking thành công trong thực tế thường cần:
- Kịch bản 1: Quyền ghi/ghi đè vào thư mục nơi Notepad++ nạp DLL (ví dụ thư mục
plugins\NppExport\) hoặc cách khác để đưa file DLL vào đường dẫn tìm kiếm của tiến trình. - Kịch bản 2: Kẻ tấn công đã có foothold (ví dụ remote backdoor, user đã cài phần mềm độc hại) rồi dùng lỗ hổng này để duy trì persistence/ nâng tầm truy cập.
Phân tích kỹ thuật
Đầu tiên ta cần hiểu một đôi nét về nguyên lý DLL hijacking là gì? Thì “DLL hijacking” là một kỹ thuật tấn công trong đó ứng dụng được thiết kế tìm và nạp các thư viện DLL từ các đường dẫn theo thứ tự xác định. Nếu đường dẫn tìm kiếm bao gồm thư mục mà kẻ tấn công có thể kiểm soát hoặc ghi được, thì họ có thể đặt một DLL độc hại cùng tên trước DLL chính thức, khiến chương trình tải DLL độc thay vì bản chính.
Như đã đề cập bên trên đầu tiên kẻ tấn công sẽ thực hiện thăm dò mục tiêu và xác định phiên bản Notepad++ có lỗ hổng cũng như DLL mục tiêu (ví dụ: NppExport.dll). Khi mà Notepad++ khởi động nó sẽ tìm và nạp NppExport.dll từ thư mục plugin tương ứng. Tại đây kẻ tấn công sẽ thay thế file NppExport.dll bằng bản DLL có chứa mã độc, và đồng thời chuyển tiếp các hàm (forward) tới DLL gốc để chương trình vẫn hoạt động bình thường.
Để có thể tạo một DLL ”thay thế” mang cùng tên export như DLL gốc , những kẻ tấn công đã chuẩn bị một file mã độc.
Sẽ có một phần chính trong quá trình hoạt động của file mã độc này
#pragma comment(linker, "/EXPORT:...")- Những dòng này yêu cầu linker tạo các export trong DLL mới. Ở đây tên export như
beNotified,getFuncsArray,… được forward tớioriginal-NppExport.*Mục đích chính của phần này sẽ là giữ nguyên tên hàm mà ứng dụng (Notepad++ trong chiến dịch) mong đợi, nhưng chuyển lời gọi sang DLL “gốc” (original) để ứng dụng vẫn hoạt động bình thường. Về mặt khái niệm: đây là kỹ thuật proxy/forwarding để che dấu việc thay DLL.
- Những dòng này yêu cầu linker tạo các export trong DLL mới. Ở đây tên export như
Và sau khi đã thay thế thành công thì kẻ tấn công chỉ cần chờ đợi người dùng mở ứng dụng Notepad++ thì khi đó hệ thống sẽ tự động nạp DLL độc hại, DllMain hoặc hàm export độc được thực thi. Khi đó, kẻ tấn công đạt thực thi mã trong ngữ cảnh tiến trình.
Cuối cùng hậu quả như đã biết thì kẻ tấn công sẽ thực thi mã tùy ý, persistence (mỗi lần Notepad++ chạy), khả năng leo quyền nếu tiến trình chạy với quyền cao hơn, hoặc triển khai tải giai đoạn tiếp theo (payload).
Khuyến nghị
-
Cập nhật bản vá phần mềm
- Người dùng cần tải vài nâng cấp bản mới nhất qua đường link: Downloads | Notepad++
-
Quản lý quyền truy cập file và thư mục
- Giới hạn quyền ghi vào thư mục cài đặt ứng dụng (chỉ dành cho tài khoản quản trị, không cho user thường).
- Sử dụng cơ chế kiểm soát truy cập (ACLs) để ngăn chặn việc ghi file DLL từ tài khoản không được phép.
-
Kiểm soát và xác minh phần mềm phụ trợ (DLL, plugin)
- Chỉ cài đặt plugin / DLL từ nguồn tin cậy và kiểm tra chữ ký số nếu có.
- Không cho phép plugin / DLL tự động cập nhật mà không kiểm tra tính hợp pháp.
Kết luận
Lỗ hổng CVE‑2025‑56383 trong Notepad++ là một ví dụ điển hình về cách một kỹ thuật “cũ” như DLL hijacking vẫn có thể mang lại rủi ro khi phần mềm không được bảo vệ đúng cách. Mặc dù điều kiện khai thác đòi hỏi có quyền ghi file cục bộ, việc công bố PoC cho thấy mức độ nguy hiểm thực tế của lỗ hổng, đặc biệt trong môi trường doanh nghiệp hoặc hệ thống máy dùng chung.
Để bảo vệ hệ thống, cần có sự phối hợp giữa nhà phát triển và quản trị viên hệ thống: nhanh chóng vá lỗi, kiểm soát quyền truy cập file, giám sát thay đổi DLL, và tăng cường các lớp phòng thủ (antivirus, EDR, kiểm tra mã).
Tham khảo
| Bài viết độc quyền của chuyên gia FPT IS
Lưu Tuấn Anh – Trung tâm An toàn, bảo mật thông tin FPT |



