에피소드 9: 에이드리언 테일러, 마운틴뷰 (2019년 12월)
이전 에피소드
여러분이 발견한 높은 우선순위의 보안 버그를 수정하라는 요청을 ClusterFuzz입니다. 기본 설명 이 버그를 진지하게 받아들여야 할까요? 어떻게 어떻게 해야 할까요?
ClusterFuzz는 Chrome에 입력을 제공하고 비정상 종료를 감시합니다. 그중에는 Chrome 빌드에는 AddressSanitizer와 같은 추가 검사가 사용 설정되어 있습니다. 메모리 안전 오류를 찾습니다
ClusterFuzz는 비정상 종료 위치를 기준으로 구성요소를 할당하고 비정상 종료의 유형과 샌드박스에서 비정상 종료가 발생했는지 여부에 따라 심각도가 결정됩니다. 절차에 따라 다릅니다. 예를 들어 힙 사용 후-해제는 심각도가 높습니다 브라우저 프로세스에 있으며, 이 경우 매우 중요합니다. 샌드박스가 있습니다!)
class Foo {
Widget* widget;
};
void Foo::Bar() {
delete widget;
...
widget->Activate(); // Bad in the renderer process, worse in the
// browser process. Obviously, real bugs are
// more subtle. Usually.
ClusterFuzz는 fuzzer 또는 외부에 제출된 버그에서 입력을 생성합니다.
일부 fuzzer는 libFuzzer를 기반으로 하며, 이는 입력을
코드 적용 범위를 늘릴 수 있습니다 입력 언어의 문법을 이해하는 사람도 있습니다.
protobufs
(으)로 변환되었습니다. ClusterFuzz가 비정상 종료를 발견하면
입력 테스트 사례를 최소화하고 문제가 되는 커밋을 찾기 위해 이분할 수도 있습니다.
아주 많은...
다음 작업을 할 수 있습니다.
- 객체의 전체 기간 및 정수 오버플로우입니다.
- 특히 신뢰할 수 없는 데이터나 IPC를 처리할 때 새 fuzzer를 추가합니다( 아래 링크(보통 < 코드 20줄).
- ClusterFuzz에서 보고한 버그 수정: 심각도 휴리스틱은 신뢰할 수 있지만 실제 악용 가능성을 기반으로 합니다. 단일 바이트 오버플로로 인해 있습니다.
리소스
- Chromium의 퍼징 테스트: 새로운 데이터 형식을 사용하기 위해 ClusterFuzz를 수행하거나 찾아낼 수 있습니다.
- Chrome Fuzzer 프로그램 업데이트 및 방법: Fuzzer 또한 외부 참여자의 글입니다. 사용 경험과 사용 편의성에 관한 이야기 듣기 시작할 수 있습니다