Facebook에서 제공하는 Python 용 정적 분석기 Pysa

Facebook은 "Pysa"라는 오픈 소스 정적 분석기를 도입했습니다.»(Python 정적 분석기) Python 코드의 잠재적 인 취약성을 식별하도록 설계되었습니다.

피사 데이터 흐름 분석 제공 코드 실행의 결과로 많은 잠재적 인 취약점과 문제를 식별 할 수 있습니다. 표시되어서는 안되는 장소에서의 데이터 사용과 관련된 개인 정보 보호.

예 : Pysa 호출에서 원시 외부 데이터의 사용을 추적 할 수 있습니다. 파일 작업 및 SQL 구문에서 외부 프로그램을 실행합니다.

오늘 우리는 Python 코드에서 보안 및 개인 정보 문제를 감지하고 방지하기 위해 구축 한 오픈 소스 정적 분석 도구 인 Pysa에 대한 세부 정보를 공유합니다. 작년에 우리는 100 억 줄 이상의 해킹 코드를 분석하고 엔지니어가 수천 개의 잠재적 인 보안 문제를 예방하는 데 도움이되는 정적 분석 도구 인 Zoncolan을 만든 방법을 공유했습니다. 이러한 성공으로 인해 Python Static Analyzer의 약어 인 Pysa를 개발하게되었습니다.

Pysa는 동일한 알고리즘을 사용합니다. 정적 분석을 수행하고 코드를 존 콜란. Zoncolan처럼, Pysa 프로그램을 통한 데이터 흐름을 추적합니다.

사용자는 소스 (중요한 데이터가 생성 된 장소)와 싱크 (소스 데이터가 끝나서는 안되는 장소)를 정의합니다.

보안 애플리케이션의 경우 가장 일반적인 유형의 소스는 Django 사전과 같이 사용자 제어 데이터가 애플리케이션에 입력되는 장소입니다.

수신자는 훨씬 더 다양하지만 다음과 같이 코드를 실행하는 API를 포함 할 수 있습니다. eval또는 파일 시스템에 액세스하는 API (예 :os.open

Pysa는 초록을 만들기 위해 반복적 인 분석을 수행합니다. 소스에서 데이터를 반환하는 함수와 결국 싱크에 도달하는 매개 변수가있는 함수를 확인합니다. Pysa는 소스가 결국 싱크에 연결되는 것을 발견하면 문제를보고합니다. 

분석기 작업 들어오는 데이터 소스를 식별하는 것으로 귀결됩니다. 원본 데이터를 사용해서는 안되는 위험한 호출입니다.

Pysa는 함수 호출 체인을 통한 데이터 전달을 모니터링하고 원본 데이터를 코드에서 잠재적으로 위험한 위치와 연결합니다.

자체 제품에 Django 및 Tornado와 같은 오픈 소스 Python 서버 프레임 워크를 사용하기 때문에 Pysa는 이러한 프레임 워크를 사용하는 프로젝트에서 보안 문제가 처음 실행될 때부터 발생할 수 있습니다. 아직 다루지 않은 프레임 워크에 Pysa를 사용하는 것은 일반적으로 데이터가 서버로 들어오는 위치를 Pysa에 알리기 위해 몇 가지 구성 줄을 추가하는 것만 큼 간단합니다.

Pysa에서 확인한 일반적인 취약점은 축소판을 표시 할 때 부정확 한 외부 매개 변수를 전달하여 발생하는 Zulip 메시징 플랫폼의 개방형 리디렉션 문제 (CVE-2019-19775)입니다.

Pysa의 데이터 흐름 추적 기능은 추가 프레임 사용을 확인하고 사용자 데이터 사용 정책의 준수 여부를 결정하는 데 사용할 수 있습니다.

추가 구성없이 Pysa를 사용하여 프레임 워크를 사용하여 프로젝트를 확인할 수 있습니다. 장고와 토네이도. Pysa는 또한 SQL 대체 및 크로스 사이트 스크립팅 (XSS)과 같은 웹 애플리케이션의 일반적인 취약성을 식별 할 수 있습니다.

Facebook에서 분석기는 Instagram 서비스의 코드를 확인하는 데 사용됩니다.. 2020 년 44 분기 동안 Pysa는 Instagram의 서버 측 코드 기반에서 Facebook 엔지니어가 발견 한 모든 문제의 XNUMX %를 식별하는 데 도움을주었습니다.

이 과정에서 총 330 개의 문제가 확인되었습니다. Pysa를 사용한 자동 변경 검증의 비율은 49 개 (15 %)가 중요하다고 평가되었고 131 개 (40 %)는 위험하지 않았습니다. 150 건 (45 %)에서 문제는 오탐으로 인한 것입니다.

새로운 파서는 Pyre 유형 검증 툴킷의 보완으로 설계되었으며 저장소에 배치됩니다. 코드는 MIT 라이센스에 따라 릴리스됩니다.

최종적으로 그것에 대해 더 알고 싶다면 원본 게시물에서 세부 사항을 확인할 수 있습니다. 링크는 이쪽입니다.


기사의 내용은 우리의 원칙을 준수합니다. 편집 윤리. 오류를보고하려면 여기에.

코멘트를 첫번째로 올려

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.