Mariana Trench, công cụ phân tích mã tĩnh nguồn mở của Facebook

Facebook tiết lộ vài ngày trước anh ấy đã phát hành trình phân tích tĩnh mã nguồn mở, Mariana Trench, nhằm mục đích xác định các lỗ hổng trong các ứng dụng Android và chương trình Java.

Tại khả năng phân tích các dự án mà không cần mã nguồn được cung cấp, chỉ có mã bytecode cho máy ảo Dalvik. Một ưu điểm khác là tốc độ thực thi rất cao (quá trình phân tích vài triệu dòng mã mất khoảng 10 giây), cho phép bạn sử dụng Mariana Trench để kiểm tra tất cả các thay đổi được đề xuất khi chúng được giới thiệu.

Máy phân tích được phát triển như một phần của dự án để tự động hóa quy trình xem xét mã nguồn ứng dụng di động của Facebook, Instagram và Whatsapp.

Chúng tôi chia sẻ thông tin chi tiết về Mariana Trench (MT), một công cụ mà chúng tôi sử dụng để phát hiện và ngăn chặn các lỗi bảo mật và quyền riêng tư trong các ứng dụng Android và Java. Là một phần trong nỗ lực của chúng tôi nhằm giúp mở rộng quy mô bảo mật thông qua tự động hóa tòa nhà, gần đây chúng tôi đã mở MT để hỗ trợ các kỹ sư bảo mật trên Facebook và trong toàn ngành.

Bài đăng này là bài thứ ba trong loạt bài đi sâu vào các công cụ phân tích động và tĩnh mà chúng tôi tin tưởng. MT là hệ thống mới nhất, sau Zoncolan và Pysa, được xây dựng cho mã Hack và Python.

Trong nửa đầu năm 2021, một nửa số lỗ hổng trong các ứng dụng di động của Facebook đã được xác định bằng các công cụ phân tích tự động. Mã của Mariana Trench gắn bó chặt chẽ với các dự án khác của Facebook, ví dụ, hoạt động của trình tối ưu hóa bytecode Redex được sử dụng để phân tích bytecode và thư viện SPARTA được sử dụng để giải thích trực quan và nghiên cứu kết quả phân tích tĩnh.

Các lỗ hổng tiềm ẩn và các vấn đề bảo mật được xác định bằng cách phân tích luồng dữ liệu trong quá trình thực thi ứng dụng, cho phép xác định các tình huống trong đó dữ liệu thô bên ngoài được xử lý trong các cấu trúc nguy hiểm, chẳng hạn như truy vấn SQL, hoạt động tệp và lệnh gọi dẫn đến khởi chạy các chương trình bên ngoài.

MT được thiết kế để có thể quét các cơ sở mã di động lớn và gắn cờ các vấn đề tiềm ẩn trong các yêu cầu kéo trước khi chúng đi vào sản xuất. Nó được tạo ra là kết quả của sự hợp tác chặt chẽ giữa các kỹ sư bảo mật và phần mềm của Facebook, những người đào tạo MT để xem mã và phân tích cách dữ liệu chảy qua nó. Phân tích luồng dữ liệu rất hữu ích vì nhiều vấn đề về bảo mật và quyền riêng tư có thể được mô hình hóa thành dữ liệu chảy đến nơi không nên làm.

Công việc của bộ phân tích được giảm xuống để xác định nguồn dữ liệu và các cuộc gọi nguy hiểm, nơi dữ liệu gốc không được sử dụng: Bộ phân tích cú pháp giám sát việc truyền dữ liệu qua chuỗi lệnh gọi hàm và kết nối dữ liệu ban đầu với những vị trí nguy hiểm tiềm ẩn trong mã.

Vì trong MT, một luồng dữ liệu có thể được mô tả bằng:

  • Nguồn: một điểm xuất xứ. Đây có thể là một chuỗi được kiểm soát bởi người dùng nhập ứng dụng thông qua `Intent.getData`.
  • Sink: một điểm đến. Trên Android, đây có thể là một lệnh gọi tới `Log.w` hoặc` Runtime.exec`. Ví dụ: dữ liệu từ cuộc gọi đến Intent.getData được coi là nguồn để giám sát, và các lệnh gọi đến Log.w và Runtime.exec được coi là sử dụng nguy hiểm.

Một cơ sở mã lớn có thể chứa nhiều loại nguồn khác nhau và máy thu tương ứng. Chúng ta có thể yêu cầu MT chỉ cho chúng ta các luồng cụ thể bằng cách xác định các quy tắc.

Ví dụ: một quy tắc có thể chỉ định rằng chúng tôi muốn tìm các chuyển hướng có ý định (vấn đề cho phép kẻ tấn công chặn dữ liệu nhạy cảm) bằng cách xác định quy tắc hiển thị cho chúng ta tất cả các dấu vết từ các nguồn "do người dùng kiểm soát" đến một phần chìm của "các chuyển hướng có ý định.

Cuối cùng nếu bạn muốn biết thêm về nó, bạn có thể kiểm tra chi tiết trong liên kết sau.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.