OSS 퍼즈 ?? OSS-Fuzz에서 클러스터 API 설정

4075 단어
오픈 소스 소프트웨어는 누구나 검사, 수정 및 개선할 수 있는 소스 코드가 포함된 소프트웨어입니다. 고품질 소프트웨어, 공급업체 종속 없음, 낮은 소프트웨어 비용 및 가장 중요한 풍부한 지원과 같은 여러 가지 이점이 있습니다.

그러나 더 많은 유연성에는 더 많은 책임이 따르기 때문에 우리 소프트웨어에 프로그래밍 오류가 없고 심각한 보안 위협이 없음을 보장할 수 있는 무언가가 필요합니다.

따라서 오픈 소스 소프트웨어를 보다 안전하고 안정적으로 만들기 위해 Google은 2016년 세 가지 주요 목표를 가지고 OSS fuzz를 도입했습니다.

1. Finding security vulnerabilities, stability issues, and functional bugs at scale.
2. Making the platform easy to use for open-source developers and encouraging them to take security testing into their own hands.
3. Getting the bugs fixed quickly (OSS-Fuzz has a 90% fix-rate!)


OSS-Fuzz는 소프트웨어의 프로그래밍 오류를 발견하는 잘 알려진 기술인 Fuzz 테스트를 수행합니다. 버퍼 오버플로와 같이 감지할 수 있는 이러한 오류의 대부분은 보안에 심각한 영향을 미칠 수 있지만 OSS-Fuzz를 통해 최신 퍼징 기술을 확장 가능한 분산 실행과 결합하여 일반적인 오픈 소스 소프트웨어를 보다 안전하고 안정적으로 만드는 것을 목표로 합니다.

현재 OSS-Fuzz는 C/C++, Rust, Go, Python 및 Java/JVM 코드를 지원합니다. LLVM에서 지원하는 다른 언어도 작동할 수 있습니다. OSS-Fuzz는 퍼징 x86_64 및 i386 빌드를 지원합니다.

개요





자세한 내용은 OSS-Fuzz 사용 방법에 대한 자세한 설명서this를 참조하십시오.

클러스터 API



Cluster API는 여러 Kubernetes 클러스터의 프로비저닝, 업그레이드 및 운영을 단순화하기 위한 선언적 API 및 도구를 제공하는 데 중점을 둔 Kubernetes 하위 프로젝트입니다.

Kubernetes SIG(Special Interest Group) 클러스터 수명 주기에서 시작된 Cluster API 프로젝트는 Kubernetes 스타일 API 및 패턴을 사용하여 플랫폼 운영자를 위한 클러스터 수명 주기 관리를 자동화합니다. 가상 머신, 네트워크, 로드 밸런서, VPC와 같은 지원 인프라와 Kubernetes 클러스터 구성은 모두 애플리케이션 개발자가 워크로드를 배포하고 관리하는 것과 동일한 방식으로 정의됩니다. 이를 통해 다양한 인프라 환경에서 일관되고 반복 가능한 클러스터 배포가 가능합니다.

자세한 내용은 this github 페이지를 방문하십시오.

OSS-Fuzz에서 클러스터 API 설정



Cluster API는 널리 사용되는 오픈 소스 프로젝트이므로 커뮤니티는 OSS-Fuzz에 Cluster API를 설정하기로 결정했습니다.

This is the following PR to track this setup process in CAPI project.


Oss-Fuzz에서 오픈 소스 프로젝트의 설정을 시작하면 google/oss-fuzz 리포지토리에서 해당 PR 하나를 생성했습니다.

이것은 CAPI 설정에 해당하는 google/oss-fuzzPR입니다.

이 모든 단계가 실행되면 초기 통합이 완료됩니다. 위의 단계에서 우리는 PR에서 일부 이메일 ID를 언급했으며 언급된 프로젝트에서 버그가 발견되면 이 사람들은 자동 이메일 알림을 받게 됩니다.

메일을 받으면 다음 조치 항목은 이 문제를 로컬에서 재현하고 프로젝트에서 해결하는 것입니다.

다음 섹션에서는 로컬 시스템에서 문제를 재현하는 몇 가지 단계를 나열합니다.

로컬에서 재현하는 단계



로컬에서 실행하는 데 필요한 파일 및 변수
  • /path/to/downloaded/minimized/testcase:
    이것은 모든 문제에 있는 파일의 경로입니다. 재생기 파일("테스트 케이스"파일이라고도 함)이라고 합니다. Reproducer Testcase
  • 라는 이름으로 메일에서 받을 수 있습니다.
  • 로컬에서 OSS-Fuzz를 체크아웃합니다.git clone https://github.com/google/oss-fuzz
    cd oss-fuzz
  • 최신 Docker 이미지를 가져옵니다.
    Docker 이미지는 최신 버전의 빌드 도구, 빌드 구성, 스크립트 및 기타 변경 사항으로 정기적으로 업데이트됩니다. 경우에 따라 새로운 이미지를 사용해야만 특정 문제를 재현할 수 있습니다. 다음 명령을 실행하여 최신 이미지를 가져옵니다.python infra/helper.py pull_images
  • 이미지와 fuzzer를 빌드합니다. 다음 명령 실행python infra/helper.py build_image kubernetes-cluster-api
    python infra/helper.py build_fuzzers kubernetes-cluster-api
    python infra/helper.py reproduce kubernetes-cluster-api fuzz_conversion_of_all_types /path/to/downloaded/minimized/testcase

  • 위의 모든 명령을 실행하면 로컬에 다음과 같은 내용이 표시됩니다.



    이러한 방식으로 로컬에서 버그를 재현할 수 있습니다.

    로컬에서 버그를 재현하는 방법에 대한 자세한 내용은 공식 문서this를 참조하세요.

    좋은 웹페이지 즐겨찾기