Chrome의 접근성 API를 사용하여 보안 버그 찾기
크롬의 사용자 인터페이스 코드는 복잡하며 때때로 버그가 발생할 수 있습니다. 이러한 버그는 메모리 손상으로 이어져 공격자가 악용할 수 있는 보안 취약점이 될 수 있습니다. 크롬 팀은 이러한 버그를 자동으로 찾고자 하였으며, 크롬 UI 컨트롤의 접근성 트리(accessibility tree)를 사용하여 이를 달성할 수 있음을 깨달았습니다. 접근성 트리는 보조 기술에 노출되어 있으며, 크롬 팀은 이를 위해 퍼징(fuzzing)이라는 기술을 사용하고 있습니다. 퍼징은 UI 컨트롤과 반복적으로 상호 작용하여 크래시를 유발할 수 있는지 확인하는 것을 포함합니다.크롬 팀은 여러 가지 도전을 극복해야 했습니다. 이를테면, 새로운 코드를 선택하기 위해 커버리지 가이드 퍼징(coverage-guided fuzzing)을 사용하여 UI 컨트롤의 조합을 선택해야 했으며, InProcessFuzzer 프레임워크를 사용하여 실제 크롬 버전에서 퍼징 테스트를 실행해야 했습니다. 또한, 크롬 환경의 노이즈와 복잡성에 대한 우려를 해결해야 했으며, 테스트 케이스가 안정적이고 실행 가능한지 확인해야 했습니다.크롬 팀은 퍼저의 효율성을 개선하기 위해 사용자 지정 뮤테이터(custom mutator)를 개발하였으며, 현재 ClusterFuzz 인프라에서 퍼저를 실행하고 있습니다. 아직 이 접근 방식이 성공적인지 여부를 알 수는 없지만, 퍼저는 이미 접근성 코드 자체에서 잠재적인 버그를 몇 개 발견했습니다.