Công cụ mã hóa JavaScript - Công cụ giải mã JavaScript - Phần mềm độc hại JavaScript

Vì sao các công cụ làm xáo trộn mã JavaScript bị tin tặc lạm dụng (và cách phát hiện chúng)

Trình làm xáo trộn mã JavaScript làm gì?

Công cụ làm rối mã JavaScript được thiết kế để lấy mã sạch, dễ đọc đối với con người và biến đổi nó thành thứ khó đọc hơn, khiến việc hiểu hoặc đảo ngược kỹ thuật trở nên khó khăn hơn. Các công cụ này đổi tên biến và hàm, loại bỏ khoảng trắng, làm phẳng cấu trúc mã và áp dụng các kỹ thuật như tách chuỗi, mã hóa thập lục phân hoặc làm phẳng luồng điều khiển. Mặc dù mục tiêu thường là bảo vệ tài sản trí tuệ hoặc giảm kích thước tệp, nhưng độ phức tạp tạo ra cũng cung cấp vỏ bọc lý tưởng cho phần mềm độc hại JavaScript. Đó là lý do tại sao nhiều nhóm bảo mật chuyển sang sử dụng các công cụ giải mã JavaScript để phân tích mã đã được biến đổi và phát hiện hành vi ẩn.

Ví dụ, một việc đơn giản như sau:

function greet(name) { return `Hello, ${name}`; } Might become: function _0x1a2b(_0x3c4d){return'Hello, '+_0x3c4d;} 

Đối với các nhà phát triển triển khai logic phía máy khách (ví dụ như các ứng dụng SaaS dựa trên trình duyệt), công cụ làm xáo trộn mã JavaScript là một phần không thể thiếu. Nhưng chính quá trình biến đổi này lại tạo ra một lớp vỏ bọc hoàn hảo cho phần mềm độc hại JavaScript.

Cách kẻ tấn công lợi dụng kỹ thuật che giấu mã độc JavaScript để giấu phần mềm độc hại

Kẻ tấn công lợi dụng các công cụ làm xáo trộn mã JavaScript để che giấu danh tính. phần mềm độc hại được tiêm vào các thư viện mã nguồn mở, gói npmhoặc trực tiếp vào các tập lệnh trình duyệt. Một mô hình phổ biến là giấu các payload bên trong các hàm được làm mờ, được kích hoạt trong quá trình chạy dưới các điều kiện cụ thể.

Hãy xem xét một gói npm bị xâm phạm. Thoạt nhìn, mọi thứ có vẻ hợp pháp. Nhưng khi xem xét kỹ hơn, bạn sẽ thấy mã JavaScript bị làm mờ tham chiếu đến các chuỗi được mã hóa, URL từ xa hoặc các tham số động. eval () cuộc gọi:

(function(_0xa1b2c){var _0xd3e4=['/(function(_0xa1b2c){var _0xd3e4=['\x2fapi/(function(_0xa1b2c){var _0xd3e4=['\x2fapi\x2fsteal','...']; ...eval(atob(_0xd3e4[0]));})(this); 

Đây không phải là nén dữ liệu. Đây là ngụy trang. Phần mềm độc hại JavaScript ẩn náu ở đây, chờ đợi để đánh cắp mã thông báo, chèn các biểu mẫu lừa đảo hoặc leo thang quyền hạn bên trong ứng dụng.

Rủi ro thực tế trong bảo mật ứng dụng và chuỗi cung ứng

Phần mềm hiện đại pipelineCác phần mềm độc hại JavaScript được xây dựng trên mã nguồn của bên thứ ba. Phần mềm độc hại JavaScript được nhúng thông qua các tập lệnh bị che giấu không chỉ là một lỗ hổng bảo mật; nó còn là một sự vi phạm chuỗi cung ứng. Một khi phần mềm độc hại bị che giấu xâm nhập vào thư viện dùng chung, nó sẽ lây lan:

  • Vào các bản dựng CI thông qua package.json
  • Đóng gói thành các gói giao diện người dùng thông qua Webpack/Rollup.
  • Đưa vào sản xuất thông qua CDN hoặc chèn mã độc.

Ví dụ, sự cố luồng sự kiện cho thấy cách tin tặc sử dụng kỹ thuật làm mờ mã để cài đặt phần mềm độc hại vào các gói phần mềm được sử dụng rộng rãi. Các nhà phát triển hiếm khi kiểm tra mã được làm mờ quá mức, khiến nó trở thành nơi ẩn náu hoàn hảo.

Rủi ro không chỉ là lý thuyết. Nó đã tồn tại trong mã nguồn của bạn nếu các thư viện phụ thuộc không được quét.

Phát hiện mã bị làm mờ bằng các công cụ giải mã JavaScript

Để phát hiện các mối đe dọa tiềm ẩn, các nhóm sử dụng công cụ giải mã JavaScript. Các công cụ này phân tích các mẫu mã bị mã hóa, giải mã chuỗi và tiết lộ các dấu hiệu đáng ngờ như mã động. eval ()các vòng lặp khó hiểu và sự phức tạp không cần thiết.

Các công cụ giải mã hữu ích không chỉ định dạng lại mã; chúng còn đánh dấu:

  • sử dụng Chức năng, đánh giásetTimeout với các tải trọng được mã hóa
  • Chuỗi dài các chuỗi Base64 hoặc thập lục phân
  • Làm phẳng luồng điều khiển hoặc chèn mã chết

Các công cụ tự động như trình phân tích tĩnh hoặc trình phân tích cú pháp AST giúp phát hiện các mẫu này. Chúng là tuyến phòng thủ đầu tiên khi xem xét các phụ thuộc hoặc xác thực các bản cập nhật gói.

Ví dụ: tích hợp quá trình quét giải mã vào các bước kiểm tra trước khi hợp nhất để tránh hợp nhất các mối đe dọa ẩn.

Tích hợp phát hiện vào CI/CD Pipelines

Việc phát hiện không phải là nhiệm vụ sau khi triển khai. Quét mã làm mờ nên là một phần của quá trình này. CI/CD pipeline. Sử dụng Tác vụ GitHub, CI GitLab, hoặc là Jenkins Để kích hoạt quá trình quét mỗi khi có thao tác đẩy hoặc hợp nhất.

Điển hình pipeline lưu lượng:

jobs: security-check: steps: - uses: actions/checkout@v2 - name: Scan for Obfuscation run: node scripts/deobfuscate-scan.js

Với việc thực thi chính sách, bạn có thể chặn các bản dựng chứa mã bị làm mờ có rủi ro. Kết hợp điều này với SCA công cụ Để đối chiếu các chữ ký phần mềm độc hại đã biết trong các gói npm.

Đừng chờ đến khi gặp sự cố bất ngờ trong quá trình chạy. Hãy biến nó thành lỗi từ chối ngay từ giai đoạn biên dịch.

Chi phí ẩn của việc che giấu mã nguồn: Chống lại phần mềm độc hại JavaScript bằng công cụ giải mã mã nguồn.

Các công cụ làm xáo trộn mã JavaScript có những ứng dụng hợp pháp. Nhưng kẻ tấn công dựa vào chúng để che giấu phần mềm độc hại JavaScript và lợi dụng lòng tin vào hệ sinh thái mã nguồn mở. Rủi ro thực sự trong bảo mật ứng dụng không chỉ nằm ở những gì bạn viết, mà còn ở những gì bạn nhập khẩu. Bằng cách nhúng các công cụ giải mã JavaScript và phân tích tĩnh vào CI/CD pipelineNhờ đó, các nhóm phát triển có thể phát hiện các mối đe dọa từ sớm. Hãy cảnh giác với mã bị làm mờ trong các thư viện phụ thuộc, đặc biệt là khi điều đó không được mong đợi.

Công cụ như Xygeni Các công cụ này được xây dựng để giúp các nhóm DevSecOps có được cái nhìn rõ ràng về các rủi ro mã hóa và chuỗi cung ứng trong toàn bộ hệ sinh thái JavaScript. Hãy sử dụng chúng để nâng cao khả năng của bạn. pipeline và phát hiện những lỗi tiềm ẩn trong mã nguồn trước khi đưa vào sản xuất.

Xygeni Nó vượt xa khả năng quét cơ bản bằng cách phân tích các mẫu mã hóa JavaScript, gắn cờ các phần mềm độc hại JavaScript tiềm ẩn và theo dõi các hành vi rủi ro trong các gói phần mềm trên toàn bộ chuỗi cung ứng phần mềm của bạn. Nó tích hợp liền mạch vào... CI/CD pipelines, cho phép quản trị tự động chất lượng mã và bảo mật.

Hãy luôn cảnh giác. Kiểm tra kỹ mọi thứ. Và hãy nhớ: nếu nó trông giống như những ký tự vô nghĩa, có lẽ bạn nên xem xét lại lần nữa.

sca-tools-software-composition-analysis-tools
Ưu tiên, khắc phục và bảo mật các rủi ro phần mềm của bạn
Đăng ký tài khoản miễn phí ngay.
Không cần thẻ tín dụng.

Bảo mật quá trình phát triển và phân phối phần mềm của bạn.

với bộ sản phẩm Xygeni