Trong thế giới phát triển phần mềm và an ninh mạng, ngay cả những chi tiết nhỏ nhất trong mã nguồn cũng có thể dẫn đến những lỗ hổng bảo mật nghiêm trọng. Một trường hợp điển hình là lỗ hổng CVE-2025-49144, một lỗ hổng leo thang đặc quyền (Privilege Escalation) được phát hiện trong trình cài đặt Notepad++ phiên bản 8.8.1, xuất phát từ một vấn đề về tải bên lề tệp thực thi (EXE side-loading vulnerability).
Tổng quan về Lỗ hổng Tải bên lề Tệp thực thi
Lỗ hổng tải bên lề tệp thực thi, hay còn gọi là tấn công Binary Planting hoặc Search Order Hijacking, là một loại lỗ hổng trong đó một ứng dụng tìm kiếm và tải một tệp thực thi hoặc thư viện động (DLL) từ một vị trí không mong muốn hoặc không an toàn. Điều này thường xảy ra khi một chương trình gọi một tệp thực thi mà không chỉ định đường dẫn tuyệt đối của nó. Hệ điều hành Windows, trong quá trình tìm kiếm tệp, sẽ duyệt qua một chuỗi các thư mục theo thứ tự đã định sẵn (ví dụ: thư mục hiện hành, các thư mục hệ thống, các thư mục trong biến môi trường PATH). Nếu một kẻ tấn công có thể đặt một tệp thực thi độc hại có cùng tên trong một thư mục được tìm kiếm sớm hơn thư mục chứa tệp hợp lệ, hệ thống sẽ tải và thực thi tệp độc hại đó thay vì tệp gốc.
Trong bối cảnh của một trình cài đặt phần mềm, lỗ hổng này đặc biệt nguy hiểm vì các trình cài đặt thường chạy với quyền hạn cao (ví dụ: Administrator hoặc SYSTEM). Nếu kẻ tấn công có thể chèn một tệp thực thi độc hại và khiến trình cài đặt thực thi nó, kẻ tấn công có thể leo thang đặc quyền từ một người dùng thông thường lên quyền quản trị hệ thống, cho phép họ thực hiện các hành động tùy ý như cài đặt phần mềm độc hại, sửa đổi cấu hình hệ thống, đánh cắp dữ liệu, hoặc tạo tài khoản người dùng mới với đặc quyền cao.
Phân tích CVE-2025-49144
CVE-2025-49144 ảnh hưởng đến trình cài đặt của Notepad++ phiên bản 8.8.1. Lỗ hổng này cụ thể liên quan đến việc trình cài đặt thực hiện một lệnh mà không chỉ định đường dẫn tuyệt đối cho tệp thực thi regsvr32.exe. Lệnh này được sử dụng để hủy đăng ký một thành phần DLL của Notepad++ có tên là NppShell_01.dll.
Mã nguồn dễ bị tổn thương:
Dưới đây là đoạn mã được tìm thấy trong trình cài đặt dễ bị tổn thương:
ExecWait 'regsvr32 /u /s "$INSTDIR\NppShell_01.dll"'Trong đoạn mã trên, lệnh ExecWait được sử dụng để thực thi một chương trình và chờ cho đến khi nó hoàn thành. Chương trình được gọi là regsvr32. Vấn đề nằm ở chỗ không có đường dẫn đầy đủ được cung cấp cho regsvr32. Khi một chương trình được gọi mà không có đường dẫn tuyệt đối, Windows sẽ sử dụng biến môi trường PATH để tìm kiếm tệp thực thi. Thứ tự tìm kiếm thường ưu tiên thư mục hiện hành hoặc các thư mục được liệt kê sớm trong PATH trước các thư mục hệ thống như C:\Windows\System32 (nơi regsvr32.exe hợp lệ thường trú). Nếu một kẻ tấn công có thể kiểm soát một thư mục nằm trong chuỗi tìm kiếm của hệ điều hành, hoặc có khả năng đặt tệp regsvr32.exe giả mạo vào một trong các thư mục đó, tệp độc hại của họ có thể được thực thi thay thế.
Mã nguồn an toàn:
Để khắc phục lỗ hổng này, giải pháp là chỉ định rõ ràng đường dẫn tuyệt đối đến tệp regsvr32.exe, đảm bảo rằng trình cài đặt luôn gọi phiên bản hợp lệ của tiện ích hệ thống này:
ExecWait '$SYSDIR\regsvr32.exe /u /s "$INSTDIR\NppShell_01.dll"'Trong đoạn mã đã sửa đổi, biến $SYSDIR đại diện cho thư mục hệ thống của Windows (ví dụ: C:\Windows\System32). Bằng cách sử dụng $SYSDIR\regsvr32.exe, trình cài đặt buộc hệ thống phải tìm và thực thi regsvr32.exe từ vị trí được xác định rõ ràng, loại bỏ khả năng một phiên bản độc hại có thể bị tải bên lề.
Phân tích Tác động và Mức độ Nghiêm trọng (CVSS v3)
Hệ thống tính điểm lỗ hổng chung (CVSS – Common Vulnerability Scoring System) cung cấp một phương pháp tiêu chuẩn để đánh giá mức độ nghiêm trọng của lỗ hổng bảo mật. Đối với CVE-2025-49144, các chỉ số CVSS v3 cơ bản và chuỗi vector như sau:
- Attack Vector (AV): Local (L): Kẻ tấn công cần có quyền truy cập cục bộ vào hệ thống mục tiêu để khai thác lỗ hổng này.
- Attack Complexity (AC): Low (L): Việc khai thác lỗ hổng này tương đối dễ dàng, không yêu cầu các điều kiện phức tạp hoặc kỹ thuật cao.
- Privileges Required (PR): Low (L): Kẻ tấn công chỉ cần có quyền hạn người dùng thông thường để khởi động cuộc tấn công.
- User Interaction (UI): Required (R): Cần có sự tương tác của người dùng để cuộc tấn công thành công, cụ thể là người dùng phải chạy trình cài đặt Notepad++.
- Scope (S): Unchanged (U): Lỗ hổng này không vượt ra khỏi phạm vi bảo mật của thành phần bị ảnh hưởng (trình cài đặt Notepad++).
- Confidentiality Impact (C): High (H): Khai thác thành công có thể dẫn đến việc tiết lộ toàn bộ thông tin nhạy cảm trên hệ thống.
- Integrity Impact (I): High (H): Khai thác thành công có thể dẫn đến việc sửa đổi hoặc phá hủy toàn bộ dữ liệu hoặc cấu hình hệ thống.
- Availability Impact (A): High (H): Khai thác thành công có thể dẫn đến việc gây ra tình trạng từ chối dịch vụ hoàn toàn hoặc làm cho hệ thống không khả dụng.
Chuỗi Vector CVSS: CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
Với điểm số tác động cao về tính bảo mật, toàn vẹn và khả dụng, cùng với độ phức tạp tấn công thấp và yêu cầu đặc quyền thấp, lỗ hổng này được xếp vào mức độ nghiêm trọng đáng kể. Mặc dù yêu cầu tương tác người dùng, bản chất của việc cài đặt phần mềm là một hành động phổ biến, làm tăng đáng kể nguy cơ khai thác. Một kẻ tấn công có thể dụ người dùng chạy một trình cài đặt đã bị can thiệp, hoặc đặt một tệp thực thi độc hại trong một thư mục mà người dùng có quyền ghi và sau đó thuyết phục người dùng chạy trình cài đặt hợp lệ, dẫn đến việc kích hoạt tệp độc hại với quyền cao.
Phân tích Điểm yếu Phần mềm (CWEs)
Lỗ hổng này liên quan đến một số điểm yếu phần mềm phổ biến được phân loại bởi CWE (Common Weakness Enumeration):
- CWE-272: Least Privilege Violation (Vi phạm Nguyên tắc Đặc quyền Tối thiểu): Trình cài đặt chạy với quyền cao nhưng lại thực thi một lệnh mà không đảm bảo rằng lệnh đó cũng tuân thủ nguyên tắc đặc quyền tối thiểu hoặc không bị lạm dụng. Điều này cho phép một kẻ tấn công có đặc quyền thấp leo thang quyền hạn.
- CWE-276: Incorrect Default Permissions (Quyền mặc định Không chính xác): Mặc dù không trực tiếp về quyền file, lỗ hổng này có thể xảy ra nếu hệ thống cho phép người dùng thông thường ghi vào các thư mục mà Windows tìm kiếm trước các thư mục hệ thống khi gọi một tệp thực thi không có đường dẫn tuyệt đối. Điều này tạo điều kiện cho kẻ tấn công chèn tệp độc hại.
- CWE-427: Uncontrolled Search Path Element (Phần tử Đường dẫn Tìm kiếm Không Kiểm soát được): Đây là nguyên nhân trực tiếp nhất của lỗ hổng. Ứng dụng dựa vào đường dẫn tìm kiếm của hệ điều hành để định vị tệp thực thi, nhưng không kiểm soát được các yếu tố trong đường dẫn đó, cho phép kẻ tấn công thao túng thứ tự tìm kiếm và chèn tệp độc hại.
Biện pháp Khắc phục và Thực tiễn Tốt nhất
Để bảo vệ hệ thống khỏi các lỗ hổng tương tự như CVE-2025-49144, cần áp dụng các biện pháp khắc phục và thực tiễn tốt nhất sau:
- Luôn cập nhật phần mềm: Người dùng cuối nên đảm bảo rằng họ luôn cập nhật Notepad++ và tất cả các phần mềm khác lên phiên bản mới nhất từ các nguồn chính thức. Các bản cập nhật thường bao gồm các bản vá lỗi bảo mật quan trọng.
- Sử dụng đường dẫn tuyệt đối: Các nhà phát triển nên luôn sử dụng đường dẫn tuyệt đối khi gọi các tệp thực thi, đặc biệt là các tiện ích hệ thống quan trọng. Điều này loại bỏ sự phụ thuộc vào biến môi trường PATH và ngăn chặn các cuộc tấn công tải bên lề.
- Nguyên tắc Đặc quyền Tối thiểu: Các ứng dụng và trình cài đặt nên chạy với đặc quyền tối thiểu cần thiết để thực hiện công việc của chúng. Tránh chạy các tiến trình phụ với đặc quyền cao hơn mức cần thiết.
- Kiểm soát quyền truy cập thư mục: Đảm bảo rằng các thư mục trong đường dẫn tìm kiếm mặc định của hệ điều hành được bảo vệ đúng cách và không cho phép người dùng không có đặc quyền ghi vào chúng.
- Kiểm tra mã nguồn định kỳ: Thực hiện các cuộc kiểm tra bảo mật mã nguồn định kỳ (SAST – Static Application Security Testing) và kiểm thử động (DAST – Dynamic Application Security Testing) để phát hiện và khắc phục sớm các lỗ hổng.
- Tải xuống từ nguồn tin cậy: Người dùng chỉ nên tải xuống các tệp cài đặt và phần mềm từ các trang web chính thức hoặc các kho lưu trữ đáng tin cậy để tránh các phiên bản đã bị giả mạo.
Lỗ hổng CVE-2025-49144 là một lời nhắc nhở quan trọng về tầm quan trọng của việc kiểm tra kỹ lưỡng các chi tiết triển khai, đặc biệt là trong các ứng dụng có đặc quyền cao như trình cài đặt. Một lỗi nhỏ trong việc chỉ định đường dẫn có thể mở ra một cánh cửa cho kẻ tấn công kiểm soát toàn bộ hệ thống. Bằng cách tuân thủ các thực tiễn mã hóa an toàn và thường xuyên cập nhật phần mềm, chúng ta có thể giảm thiểu đáng kể rủi ro từ các lỗ hổng như vậy.










