이 연구는 2018 년에 처음 발견 된 "새로운"유형의 보안 취약성 인 프로토 타입 오염 취약성에 중점을두고 있으며, 이는 심층적으로 연구되지 않은 것으로 밝혀졌습니다. 취약점은 JavaScript의 프로토 타입 지향 설계를 악용합니다. 대부분의 다른 객체가 속성과 방법을 상속하는 개체와 같은 기본 객체의 프로토 타입을 수정함으로써 특정 응용 프로그램의 논리에 따라 거의 모든 다른 웹 취약점으로 에스컬레이션 할 수 있습니다.
우리는 실제 단어 프로토 타입 오염 취약성 예제가 포함 된 JavaScript 코드를 수집하여 GitHub 자문 및 기타 소스와 같은 취약성 데이터베이스를 검색하는 예제를 수집했습니다. 수집 된 예제가 실제로 취약한 지 확인하기 위해 우리는 각 취약한 기능에 대한 간단한 개념 악용을 썼습니다. 취약한 응용 프로그램에 대해 고려 된 정적 분석 도구를 실행했습니다. 취약성 데이터 세트 중에서 우리는 취약점으로 이어지는 다양한 코드 패턴을 설명하기 위해 자세히 분석 한 일부 사례 연구를 선택했습니다. 이 사례 연구는 흥미로운 결과를 보여주기 위해 선택되어 각 도구의 강점과 한계를 강조 할 수있었습니다.
프로토 타입 체인을 기반으로 객체 조회를 성공적으로 모델링하는 객체 의존성 그래프를 기반으로 한 Odgen/objlupansys 새로운 접근법은 거의 모든 취약성 사례를 감지 할 수 있습니다. 그러나 현재 실험 구현은 일부 코드 패턴이 발생할 때 버그의 영향을받습니다. 또한 큰 패키지 나 특정 패턴을 분석 할 때 심각한 성능 문제가 발생합니다. 또한, 패치 된 버전의 패치 버전에 대해 실행될 때 잘못된 양성을 표시하는 경향이 있습니다.
SEMGREP 규칙은 매우 높은 오 탐지 긍정적 비율을 갖지 않고이 사례를 포함시키는 차이로 인해 직접 할당과 같은 모든 사례를 다루지 않습니다. SEMGREP 엔진은 제한된 프로세스 내 데이터 흐름 분석만을 제공하며, 예상대로 다른 기능 (예 : 간접 재귀 호출)에 배포되는 취약성을 항상 감지 할 수는 없습니다. 이 규칙은 대부분의 완화 기술이 고려되지 않기 때문에 패치 된 버전의 패치 버전에 대해 실행될 때 많은 잘못된 양성을 표시합니다.
CodeQL은 수집 된 거의 모든 취약점 예제를 식별 할 수 있습니다. 고려 된 쿼리는 잘 쓰여진 것으로 보이며, 발생하는 문제는 아마도 폐쇄 소스 엔진의 한계 일 가능성이 높습니다. 잘못된 우편 인과 관련하여 대부분의 완화 기술이 고려되므로 CodeQL 쿼리는 다른 도구보다 훨씬 더 잘 수행됩니다.
논문 pdf의 자세한 내용