Facebook giới thiệu Pysa, công cụ phân tích tĩnh cho ngôn ngữ Python

Facebook giới thiệu máy phân tích tĩnh mở pysa (Trình phân tích tĩnh Python), được thiết kế để xác định các lỗ hổng tiềm ẩn trong mã Python. Máy phân tích mới được thiết kế như một tiện ích bổ sung cho bộ công cụ kiểm tra loại Pyre và đăng trong kho lưu trữ của mình. Mã số xuất bản theo giấy phép MIT.

Pysa cung cấp phân tích các luồng dữ liệu do thực thi mã, cho phép bạn xác định nhiều lỗ hổng tiềm ẩn và các vấn đề về quyền riêng tư liên quan đến việc sử dụng dữ liệu ở những nơi không nên xuất hiện.
Ví dụ: Pysa có thể theo dõi việc sử dụng dữ liệu ngoài thô trong các lệnh gọi khởi chạy chương trình bên ngoài, trong các thao tác tệp và trong cấu trúc SQL.

Công việc của máy phân tích là xác định các nguồn dữ liệu và các lời kêu gọi nguy hiểm trong đó không nên sử dụng dữ liệu gốc. Dữ liệu từ các yêu cầu web (ví dụ: từ điển HttpRequest.GET ở Django) được coi là nguồn và các lệnh gọi như eval và os.open được coi là cách sử dụng nguy hiểm. Pysa theo dõi luồng dữ liệu thông qua chuỗi lệnh gọi hàm và liên kết dữ liệu nguồn với các vị trí nguy hiểm tiềm tàng trong mã. Một lỗ hổng điển hình được xác định bằng Pysa là sự cố chuyển hướng mở (CVE-2019-19775) trong nền tảng nhắn tin Zulip, nguyên nhân là do truyền các tham số bên ngoài không sạch khi hiển thị hình thu nhỏ.

Khả năng theo dõi luồng dữ liệu của Pysa có thể ứng dụng để xác minh việc sử dụng đúng các khung bổ sung và xác định việc tuân thủ chính sách sử dụng dữ liệu người dùng. Ví dụ: Pysa không có cài đặt bổ sung có thể được sử dụng để kiểm tra các dự án sử dụng khung Django và Tornado. Pysa cũng có thể phát hiện các lỗ hổng phổ biến trong các ứng dụng web, chẳng hạn như SQL SQL và cross-site scripting (XSS).

Trên Facebook, máy phân tích được sử dụng để kiểm tra mã của dịch vụ Instagram. Trong quý đầu tiên của năm 2020, Pysa đã giúp xác định 44% tổng số vấn đề mà các kỹ sư của Facebook tìm thấy trong cơ sở mã phía máy chủ của Instagram.
Tổng cộng, quy trình xem xét thay đổi tự động của Pysa đã xác định được 330 vấn đề, trong đó 49 (15%) được đánh giá là nghiêm trọng và 131 (40%) là không nghiêm trọng. Trong 150 trường hợp (45%) vấn đề được phân loại là dương tính giả.

Nguồn: opennet.ru

Thêm một lời nhận xét