Nguy hiểm Mã độc ẩn SVG: Đánh cắp dữ liệu nhà phát triển

Nguy hiểm Mã độc ẩn SVG: Đánh cắp dữ liệu nhà phát triển

Các tác nhân đe dọa mạng đã phát hiện ra một phương pháp mới để che giấu phần mềm độc hại, tận dụng các tệp hình ảnh SVG thông thường để làm kênh phân phối bí mật. Hoạt động này liên quan đến một biến thể của mã độc ẩn SVG OTTERCOOKIE, được phát tán thông qua các dự án kiểm thử mã hóa giả mạo nhắm vào các nhà phát triển phần mềm.

Cuộc tấn công lợi dụng sự tin tưởng của các nhà phát triển, những người tin rằng họ đang hoàn thành một bài kiểm tra viết mã cho một cơ hội việc làm. Điều này cho phép kẻ tấn công thiết lập một kênh xâm nhập mà không cần khai thác lỗ hổng phần mềm trực tiếp, đặt ra một mối đe dọa mạng đáng kể cho hệ thống thông tin.

Mối đe dọa mạng nhắm vào nhà phát triển

Chiến dịch tấn công này, được theo dõi với mã định danh REF9403 và liên kết với hoạt động Contagious Interview, đặc biệt nhắm vào cộng đồng nhà phát triển. Các nạn nhân nhận được một dự án thương mại điện tử hoạt động được thông qua các tin nhắn kỹ thuật xã hội.

Họ được yêu cầu chạy dự án này trên máy cục bộ của mình. Mặc dù ứng dụng có vẻ hợp pháp và chức năng, các tài nguyên của nó lại chứa đựng các đoạn mã độc hại được xây dựng lại một cách lặng lẽ khi máy chủ khởi động.

Phương thức lừa đảo tinh vi

Chiến dịch này thường bắt đầu bằng các tin nhắn tuyển dụng được đăng trên các kênh cộng đồng, sau đó là liên hệ trực tiếp và yêu cầu hoàn thành một bài đánh giá mã hóa. Tương tác theo kiểu tuyển dụng thông thường này rất quan trọng vì nó tạo ra lý do đáng tin cậy để dự án được tải xuống và thực thi.

Các nhà phân tích từ Elastic Security LabsStepSecurity đã cảnh báo về mối nguy hiểm ngày càng tăng của các cuộc tấn công nhắm vào nhà phát triển, trong đó hành vi độc hại được che giấu cho đến khi mã được thực thi. Mặc dù mã nguồn có thể trông hoàn chỉnh và ứng dụng hoạt động như đã hứa, nhưng rủi ro bảo mật vẫn rất cao.

Kỹ thuật che giấu payload với mã độc ẩn SVG

Điểm độc đáo của cuộc tấn công này là việc sử dụng các tệp SVG (Scalable Vector Graphics) để che giấu payload độc hại. Trong dự án giả mạo, các tác nhân đe dọa đã sử dụng các tệp SVG mô tả cờ của các quốc gia, ví dụ như AE.svgAF.svg, nằm trong thư mục tài nguyên của dự án.

Mỗi hình ảnh trông có vẻ vô hại, nhưng các khối bình luận HTML bên trong chúng lại chứa các đoạn payload được mã hóa Base64. Kỹ thuật này cho phép mã độc ẩn SVG tránh được việc kiểm tra rõ ràng và quét bảo mật thông thường, làm tăng nguy cơ bị xâm nhập mạng.

Cơ chế kích hoạt và khai thác

Một tệp JavaScript có tên serverValidation.js đóng vai trò quan trọng trong việc kích hoạt mã độc. Tệp này đọc các tệp SVG đã bị thay đổi, nối các đoạn mã lại với nhau và sau đó thực thi mã đã khôi phục.

Dự án vẫn hoạt động bình thường, khiến cho bẫy trở nên khó phát hiện hơn. Đồng thời, quy trình ẩn được thực thi tự động mỗi khi máy chủ khởi động, đảm bảo tính bền bỉ của việc xâm nhập trái phép. Đây là một ví dụ điển hình về việc khai thác chuỗi cung ứng phần mềm.

Đoạn mã mẫu thể hiện cách một tệp JavaScript có thể đọc và thực thi nội dung từ tệp SVG:

// Example of serverValidation.js logic
const fs = require('fs');
const path = require('path');

function decodeAndExecute(svgPath) {
    const svgContent = fs.readFileSync(svgPath, 'utf8');
    const regex = /<!--PAYLOAD_START-->(.+?)<!--PAYLOAD_END-->/s;
    const match = svgContent.match(regex);

    if (match && match[1]) {
        const encodedPayload = match[1].replace(/\s/g, ''); // Remove whitespace
        try {
            const decodedPayload = Buffer.from(encodedPayload, 'base64').toString('utf8');
            console.log('Executing recovered payload...');
            eval(decodedPayload); // DANGEROUS: Executes arbitrary code
        } catch (error) {
            console.error('Error decoding or executing payload:', error);
        }
    }
}

// Assuming SVG files are in an 'assets' directory
const assetsDir = path.join(__dirname, 'assets');
fs.readdirSync(assetsDir).forEach(file => {
    if (file.endsWith('.svg')) {
        decodeAndExecute(path.join(assetsDir, file));
    }
});

Chức năng và tác động của mã độc OTTERCOOKIE

Bộ công cụ độc hại được khôi phục từ các tệp SVG bao gồm bốn thành phần chính. Chúng bao gồm một công cụ đánh cắp dữ liệu thông tin đăng nhập trình duyệt và ví tiền điện tử, một công cụ đánh cắp tệp, một công cụ thu thập dữ liệu bảng tạm (clipboard collector), và một thành phần truy cập từ xa sử dụng Socket.IO.

Tổng hợp lại, các thành phần này cho phép kẻ tấn công thu thập thông tin nhạy cảm và cung cấp cho chúng khả năng thực thi lệnh trên hệ thống bị nhiễm. Đây là một mối đe dọa nghiêm trọng đến an ninh mạng cho nhà phát triển, vì các máy tính của họ thường chứa dữ liệu đặc quyền.

Phạm vi đánh cắp dữ liệu

Tác động của cuộc tấn công có thể rất nghiêm trọng vì máy của nhà phát triển thường chứa các phiên trình duyệt đang hoạt động, quyền truy cập mã nguồn, khóa đám mây và ví tiền điện tử. Một dự án kiểm thử đơn lẻ có thể cung cấp cho kẻ tấn công một lộ trình đến dữ liệu cá nhân và doanh nghiệp có giá trị.

Đặc biệt, các tính năng đánh cắp dữ liệu của OTTERCOOKIE bao gồm khả năng thu thập thông tin đa nền tảng, làm tăng mức độ rủi ro. Thông tin rò rỉ có thể dẫn đến hậu quả nghiêm trọng như xâm nhập mạng sâu hơn vào cơ sở hạ tầng của tổ chức.

Tham khảo báo cáo chi tiết về chiến dịch tấn công này tại StepSecurity blog.

Chỉ số IOC và khuyến nghị bảo mật

Để đối phó với mối đe dọa từ mã độc ẩn SVG và các chiến dịch tấn công tương tự, các tổ chức cần áp dụng các biện pháp bảo mật chặt chẽ. Việc hiểu rõ các chỉ số thỏa hiệp (IOC) và triển khai các khuyến nghị bảo mật là rất quan trọng.

Chỉ số thỏa hiệp (IOCs)

Mặc dù chi tiết các IOC cụ thể có thể thay đổi, một phần của hạ tầng đã được xác định liên quan đến chiến dịch này là:

  • Tên miền: rightwidth[.]dev

Người bảo vệ mạng nên giám sát hoặc hạn chế kết nối đến hạ tầng rightwidth[.]dev đã xác định thay vì chỉ dựa vào các kiểm soát kịch bản cài đặt. Các địa chỉ IP và tên miền được cố ý làm mất răng (defanged) để ngăn chặn việc truy cập hoặc liên kết ngẫu nhiên. Chỉ nên khôi phục định dạng trong các nền tảng threat intelligence được kiểm soát như MISP, VirusTotal hoặc SIEM của bạn.

Các bước ứng phó tức thì

Các nhóm đã chạy một dự án đáng ngờ nên thực hiện các bước sau ngay lập tức:

  • Cô lập thiết bị: Ngắt kết nối thiết bị khỏi mạng để ngăn chặn lây lan.
  • Kiểm tra thông tin đăng nhập: Xem xét các thông tin đăng nhập được lưu trữ trong trình duyệt và các tiện ích mở rộng ví.
  • Xoay vòng khóa: Thay đổi tất cả các khóa API, khóa SSH, thông tin đăng nhập đám mây, GitHub và mã thông báo npm đã bị lộ.

Biện pháp phòng ngừa và giám sát

Để tăng cường an ninh mạng cho nhà phát triển và giảm thiểu nguy cơ đánh cắp dữ liệu, các tổ chức nên thực hiện các biện pháp phòng ngừa sau:

  • Coi trọng các nhiệm vụ mã hóa không mong muốn: Xử lý chúng như phần mềm không đáng tin cậy, ngay cả khi mã của chúng trông hoàn chỉnh và ứng dụng hoạt động như đã hứa.
  • Kiểm tra tệp khởi động máy chủ và thư mục tài nguyên: Tìm kiếm các tệp thực thi mã động như eval() hoặc mã đọc tệp hình ảnh.
  • Thêm kiểm tra bảo mật: Thiết lập các kiểm tra để gắn cờ eval() trong JavaScript phía máy chủ và kiểm tra các bình luận SVG để tìm nội dung được mã hóa bất thường.
  • Tìm kiếm tệp độc hại: Tìm kiếm trong các thư mục dự án và lịch sử tải xuống các tên lưu trữ đã biết và tệp serverValidation.js.
  • Bảo toàn bằng chứng: Trước khi xây dựng lại hệ thống nơi phạm vi phơi nhiễm không rõ ràng, hãy bảo toàn bằng chứng.
  • Xác minh người gửi: Nhà phát triển nên xác minh người gửi, kiểm tra mọi phần của kho lưu trữ đánh giá và tránh thực thi mã từ một lời mời làm việc cho đến khi nó đã được xem xét độc lập.

Sự việc này là một lời nhắc nhở rằng các tệp hình ảnh và các tài nguyên tĩnh khác không tự động an toàn. Các nhóm bảo mật cần duy trì cảnh giác cao độ và áp dụng các chính sách bảo mật thông tin toàn diện để đối phó với những mối đe dọa mạng ngày càng tinh vi này.