18년 전에 공개된 “0.0.0.0 Day”라는 취약점을 악용하면 악성 웹사이트가 Google Chrome, Mozilla Firefox, Apple Safari의 보안을 우회해 로컬 네트워크의 서비스와 상호작용할 수 있습니다.
하지만 이 기능은 Linux와 macOS 기기에만 영향을 미치며 Windows에서는 작동하지 않는다는 점에 유의하세요.
영향을 받는 장치의 경우 위협 행위자는 이 결함을 악용하여 원격으로 설정을 변경하고 보호된 정보에 무단으로 액세스하고 어떤 경우에는 원격 코드 실행도 달성할 수 있습니다.
18년 전인 2008년에 보고되었음에도 불구하고 이 문제는 Chrome, Firefox, Safari에서 여전히 해결되지 않은 상태입니다. 하지만 세 브라우저 모두 이 문제를 인식하고 수정을 위해 노력하고 있습니다.
Oligo Security의 연구원들은 이러한 위험이 공격이 이론적으로 가능할 뿐만 아니라, 여러 위협 행위자가 공격 체인의 일부로 이 취약점을 악용하는 것을 관찰했다고 보고했습니다.
0.0.0.0 Day 결함
0.0.0.0 Day 취약점은 다양한 브라우저 간의 보안 메커니즘이 일관되지 않고, 공개 웹사이트가 “와일드카드” IP 주소 0.0.0.0을 사용하여 로컬 네트워크 서비스와 통신할 수 있도록 하는 표준화가 부족하기 때문에 발생합니다.
일반적으로 0.0.0.0은 로컬 머신의 모든 IP 주소 또는 호스트의 모든 네트워크 인터페이스를 나타냅니다. DHCP 요청에서 플레이스홀더 주소로 사용하거나 로컬 네트워킹에서 사용할 때 로컬 호스트(127.0.0.1)로 해석할 수 있습니다.
악성 웹사이트는 사용자의 로컬 컴퓨터에서 실행되는 서비스를 대상으로 HTTP 요청을 0.0.0.0으로 보낼 수 있으며, 일관된 보안이 부족하기 때문에 이러한 요청은 종종 서비스로 라우팅되어 처리됩니다.
Oligo는 CORS(Cross-Origin Resource Sharing) 및 PNA(Private Network Access)와 같은 기존 보호 메커니즘은 이러한 위험한 활동을 막는 데 실패한다고 설명했습니다.
기본적으로 웹 브라우저는 웹사이트가 제3자 웹사이트에 요청을 하고 반환된 정보를 활용하는 것을 방지합니다. 이는 악성 웹사이트가 온라인 뱅킹 포털, 이메일 서버 또는 다른 민감한 사이트와 같이 인증될 수 있는 방문자의 웹 브라우저의 다른 URL에 연결하는 것을 방지하기 위해 수행되었습니다.
웹 브라우저는 명시적으로 허용된 경우에만 웹사이트가 다른 사이트의 데이터에 접근할 수 있도록 CORS(Cross-Origin Resource Sharing)를 도입했습니다.
“CORS도 훌륭하고, 이미 인터넷을 훨씬 더 안전하게 만들어줍니다. CORS는 응답이 공격자에게 도달하는 것을 방지하므로 공격자는 잘못된 요청을 할 때 데이터를 읽을 수 없습니다. 요청을 제출할 때 CORS 헤더가 응답에 없으면 공격자의 Javascript 코드는 응답의 내용을 읽을 수 없습니다.
CORS는 JavaScript로 전파되기 전에만 응답을 중지하지만 불투명한 요청은 “no-cors” 모드로 전송되어 서버에 성공적으로 도달할 수 있습니다. 응답에 관심이 없다면 말입니다.
❖ 올리고
예를 들어, 위협 행위자의 목표가 설정을 변경하거나 작업을 실행하는 데 사용할 수 있는 로컬 장치에서 실행되는 HTTP 엔드포인트에 도달하는 것뿐이라면 출력은 불필요합니다.
올리고는 PNA(Private Network Access) 보안 기능이 로컬 또는 프라이빗으로 간주되는 IP 주소에 연결하려는 모든 요청을 차단함으로써 COR과는 약간 다르게 작동한다고 설명했습니다.
하지만 Oligo의 조사에 따르면, 0.0.0.0이라는 특수한 IP 주소는 제한된 PNA 주소 목록에 포함되지 않습니다. 예를 들어 127.0.0.1은 여기에 포함됩니다. 따라서 구현이 취약합니다.
따라서 이 특수 주소에 “no-cors” 모드로 요청이 이루어지면 PNA를 우회하고 127.0.0.1에서 실행되는 웹 서버 URL에 연결할 수 있습니다.
BleepingComputer는 Firefox 브라우저를 사용하여 Linux에서 테스트를 진행해 해당 결함이 작동하는지 확인했습니다.
적극적으로 활용됨
불행히도, 위험은 이론적인 것만은 아닙니다. Oligo Security는 “0.0.0.0 Day” 취약성이 야생에서 활동적으로 악용되는 사례를 여러 건 확인했습니다.
첫 번째 사례는 ShadowRay 캠페인으로, 같은 연구자들이 작년 3월에 기록한 것입니다. 이 캠페인은 개발자의 머신(Ray 클러스터)에서 로컬로 실행되는 AI 워크로드를 대상으로 합니다.
공격은 피해자가 이메일을 통해 전송된 링크나 악성 사이트에서 찾은 링크를 클릭하는 것으로 시작되는데, 해당 링크가 JavaScript를 트리거하여 HTTP 요청을 ‘http://0(.)0(.)0(.)0:8265’로 전송하는데, 이는 일반적으로 Ray가 사용합니다.
이러한 요청은 로컬 Ray 클러스터에 도달하여 임의 코드 실행, 역방향 셸 및 구성 변경 시나리오를 발생시킵니다.
또 다른 사례는 Wiz가 지난달 발견한 Selenium Grid를 표적으로 삼은 캠페인입니다. 이 캠페인에서 공격자는 퍼블릭 도메인에서 JavaScript를 사용하여 ‘http://0(.)0(.)0(.)0:4444’로 요청을 보냅니다.
이러한 요청은 Selenium Grid 서버로 라우팅되어 공격자가 코드를 실행하거나 네트워크 정찰을 수행할 수 있습니다.
마지막으로, “ShellTorch” 취약점은 Oligo가 2023년 10월에 보고했는데, TorchServe 웹 패널이 로컬호스트 대신 기본적으로 0.0.0.0 IP 주소에 바인딩되어 악성 요청에 노출되었습니다.
브라우저 개발자의 응답
Oligo는 지난달 이후 0.0.0.0과 통신하는 공개 웹사이트 수가 갑자기 증가해 현재 약 10만 개에 달했다고 보고했습니다.
Oligo가 이러한 활동을 공개하자 웹 브라우저 개발자들은 마침내 조치를 취하기 시작했습니다.
구글 크롬세계에서 가장 인기 있는 웹 브라우저인 는 버전 128(예정)부터 버전 133까지 단계적인 롤아웃을 통해 0.0.0.0에 대한 액세스를 차단하기로 결정했습니다.
모질라 파이어폭스 PNA를 구현하지 않지만, 높은 개발 우선순위입니다. PNA가 구현될 때까지 임시 수정이 진행 중이지만 출시 날짜는 제공되지 않았습니다.
사과 추가 IP 검사를 구현했습니다. 원정 여행 WebKit의 변경 사항을 통해 macOS Sequoia와 함께 도입될 버전 18(곧 출시)에서 0.0.0.0에 대한 액세스가 차단됩니다.
브라우저 수정 사항이 도착할 때까지 Oligo에서는 앱 개발자가 다음 보안 조치를 구현할 것을 권장합니다.
- PNA 헤더를 구현합니다.
- DNS 재바인딩 공격으로부터 보호하려면 HOST 헤더를 확인하세요.
- 로컬호스트를 신뢰하지 마세요. 로컬에서도 권한을 부여하세요.
- 가능하면 HTTPS를 사용하세요.
- 로컬 앱에도 CSRF 토큰을 구현합니다.
가장 중요한 점은, 개발자는 수정 사항이 출시될 때까지 악성 웹사이트가 HTTP 요청을 내부 IP 주소로 라우팅할 가능성이 있다는 점을 기억해야 한다는 것입니다. 따라서 앱을 개발할 때 이러한 보안 고려 사항을 염두에 두어야 합니다.