Pysa, một công cụ phân tích tĩnh cho Python do Facebook cung cấp

Facebook đã giới thiệu một trình phân tích tĩnh mã nguồn mở có tên "Pysa»(Trình phân tích tĩnh Python) là được thiết kế để xác định các lỗ hổng tiềm ẩn trong mã Python.

pysa cung cấp phân tích luồng dữ liệu là kết quả của việc thực thi mã, cho phép bạn xác định nhiều lỗ hổng và vấn đề tiềm ẩ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 bên ngoài thô trong các cuộc gọi thực thi các chương trình bên ngoài, trong các hoạt động tệp và trong các cấu trúc SQL.

Hôm nay, chúng tôi chia sẻ thông tin chi tiết về Pysa, một công cụ phân tích tĩnh mã nguồn mở mà chúng tôi đã xây dựng để phát hiện và ngăn chặn các vấn đề về bảo mật và quyền riêng tư trong mã Python. Năm ngoái, chúng tôi đã chia sẻ cách chúng tôi tạo ra Zoncolan, một công cụ phân tích tĩnh giúp chúng tôi phân tích hơn 100 triệu dòng mã hack và đã giúp các kỹ sư ngăn chặn hàng nghìn vấn đề bảo mật tiềm ẩn. Thành công đó đã truyền cảm hứng cho chúng tôi phát triển Pysa, là từ viết tắt của Python Static Analyzer.

Pysa sử dụng các thuật toán tương tự để thực hiện phân tích tĩnh và thậm chí chia sẻ mã với zoncolan. Giống như Zoncolan, Pysa theo dõi luồng dữ liệu qua một chương trình.

Người dùng xác định nguồn (nơi bắt nguồn dữ liệu quan trọng) cũng như phần chìm (nơi dữ liệu nguồn không nên kết thúc).

Đối với các ứng dụng bảo mật, các loại nguồn phổ biến nhất là nơi dữ liệu do người dùng kiểm soát đi vào ứng dụng, chẳng hạn như từ điển Django.

Người nhận có xu hướng đa dạng hơn nhiều, nhưng có thể bao gồm các API chạy mã, chẳng hạn như evalhoặc các API truy cập vào hệ thống tệp, chẳng hạn nhưos.open

Pysa thực hiện các vòng phân tích lặp đi lặp lại để xây dựng các bản tóm tắt để xác định những hàm nào trả về dữ liệu từ một nguồn và những hàm nào có các tham số cuối cùng gặp sự cố. Nếu Pysa nhận thấy rằng một nguồn cuối cùng kết nối với một bồn rửa, nó sẽ báo cáo sự cố. 

Công việc phân tích nó tập trung vào việc xác định các nguồn dữ liệu đến và các cuộc gọi nguy hiểm, trong đó dữ liệu gốc không được sử dụng.

Pysa giám sát quá trình truyền dữ liệu thông qua chuỗi lệnh gọi hàm và liên kết dữ liệu gốc với những vị trí nguy hiểm tiềm ẩn trong mã.

Vì chúng tôi sử dụng các khung máy chủ Python nguồn mở như Django và Tornado cho các sản phẩm của riêng mình, Pysa có thể bắt đầu gặp phải các vấn đề bảo mật trong các dự án sử dụng các khung này ngay từ lần chạy đầu tiên. Việc sử dụng Pysa cho các khung công tác mà chúng tôi chưa có thông tin nói chung là đơn giản như việc thêm một vài dòng cấu hình để cho Pysa biết nơi dữ liệu sẽ vào máy chủ.

Một lỗ hổng phổ biến được Pysa xác định là sự cố chuyển hướng mở (CVE-2019-19775) trong nền tảng nhắn tin Zulip, gây ra do chuyển các thông 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ể được sử dụng để xác thực việc sử dụng các khung bổ sung và xác định việc tuân thủ các chính sách sử dụng dữ liệu của người dùng.

Ví dụ: Pysa không có cấu hình bổ sung có thể được sử dụng để xác minh các dự án bằng cách sử dụng các khuôn khổ Django và Tornado. Pysa cũng có thể xác định các lỗ hổng phổ biến trong các ứng dụng web, chẳng hạn như thay thế SQL và tập lệnh trang web chéo (XSS).

Trên Facebook, trình phân tích được sử dụng để xác minh 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ất cả các 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 số 330 vấn đề đã được xác định trong quá trình này xác minh thay đổi tự động sử dụng Pysa, 49 (15%) trong số đó được đánh giá là đáng kể và 131 (40%) không nguy hiểm. Trong 150 trường hợp (45%) các vấn đề được cho là do dương tính giả.

Trình phân tích cú pháp mới được thiết kế như một phần bổ sung cho bộ công cụ xác minh loại Pyre và được đặt trong kho lưu trữ của bạn. Mã được phát hành theo giấy phép MIT.

Cuối cùng nếu bạn muốn biết thêm về nó, bạn có thể kiểm tra các chi tiết trong bài viết gốc. Liên kết là cái này.


Để 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.