Firefox Noscript 사용법

최근 멜트다운 및 스펙터 취약점이 발견되면서 각종 브라우저의 보안 패치가 공개되었습니다. 시간 정보의 정밀도를 낮춰 공격을 완화 시키는 등 여러 조치를 통해 웹 사이트에 섞여 있는 악성 코드가 메모리의 데이터를 쉽게 탈취하지 못하도록 업데이트가 배포되고 있습니다. 이번 취약점은 하드웨어의 결함에서 나타난 것이기 때문에 앞으로 일어날 모든 상황에서 완벽한 안전함을 기대하기는 힘들어 보입니다. 그렇기 때문에 OS와 브라우저, 드라이버 및 각종 앱의 보안 업데이트를 통해 여러 가지 가능성을 줄이고 공격을 어렵게 만드는 것이 중요합니다.





자바스크립트

웹 사이트를 원하는 대로 표현하기 위해 자바스크립트라는 프로그래밍 언어를 사용합니다. 마우스를 올리면 메뉴가 나타나게 하거나 페이지에서 동영상을 재생하며, 웹 사이트를 꾸미고 여러 가지 기능을 구현합니다. 그러나 웹 페이지의 자바스크립트에 공격 코드를 집어넣으면 알려지지 않은 취약점을 통해 사용자를 공격하는 수단으로 사용될 수도 있습니다. 멜트다운 & 스펙터 버그도 자바스크립트와 같은 웹 구성요소를 통해 재현될 수 있다는 것이 확인되었습니다.

엣지 및 크롬, 사파리 등 최신 브라우저들은 기본적으로 대부분의 스크립트 공격으로부터 사용자를 보호합니다. 최신 업데이트만 꾸준히 유지한다면 여러 위협을 안전하게 막을 수 있습니다. 그러나 부가 기능을 이용하면 보안을 더 강화하고 사이트 구성요소를 차단할 수 있습니다.





Firefox Noscript

Noscript는 Tor Browser Bundle에도 포함된 확장 프로그램으로, 웹 사이트의 스크립트를 선택해서 차단할 수 있는 강력한 기능을 가지고 있습니다. 파이어폭스가 57 버전 퀀텀으로 업그레이드되고 확장 기능의 구조가 바뀌면서 Noscript도 새로운 v10 버전이 출시되었습니다. 출시 초기에 비해 빠른 속도로 안정화 되고 있으며 구 버전의 중요한 기능들도 대부분 사용할 수 있게 되었습니다. Firefox ESR 에서는 아직 v5 버전의 Noscript를 사용하고 있으며 업데이트도 꾸준히 이루어지고 있습니다.





Noscript 설정



Noscript를 설치하면 오른쪽 위에 아이콘이 생성됩니다. 빈 페이지에서 이 아이콘을 클릭하면 바로 설정 탭으로 이동할 수 있습니다. Scripts Globally Allowed를 체크하면 모든 사이트에서 스크립트가 허용됩니다. 해제하면 모든 사이트가 DEFAULT 정책을 사용하여 차단됩니다. 설정창 아래에 나열된 사이트 목록을 추가하거나 변경하여 예외 규칙을 만들 수 있습니다.

Temporarily set top-level sites to TRUSTED를 사용하면 임시로 최상위 메인 사이트의 스크립트를 허용합니다. 예를 들어 https://www.youtube.com/testtube 페이지에 들어가면 최상위 사이트인 https://www.youtube.com 의 스크립트가 허용되며 https://www.google.com/intl/en_kr/policies/privacy 에 접속하면 https://www.google.com 의 스크립트가 허용됩니다.

오른쪽에 있는 Export를 클릭하여 현재 설정을 내보낼 수 있고 Import를 사용하면 내보낸 설정을 불러올 수 있습니다. Reset 버튼을 누르면 모든 설정이 초기화됩니다.





XSS 공격

사이트 관리자가 아닌 외부 사용자에 의한 스크립트 공격을 Cross Site Scripting이라 합니다. 방어가 허술한 사이트에 공격자가 코드를 심어놓고, 그 사이트에 접속하는 다른 사용자의 정보를 탈취하는 등의 공격을 실행하게 됩니다. Noscript에는 이 XSS 공격으로 의심되는 요청들을 제거하는 기능이 있습니다. Sanitize cross-site suspicious requests 옵션이 기본으로 체크되어 있어서 보안이 허술한 사이트에서 비교적 안전을 유지할 수 있습니다. 다만 의심되는 요청들을 다 막아버리기 때문에 네이버 블로그 같은 일부 사이트의 사용이 불편할 수 있습니다.





사이트 차단 및 허용 정책

기본적으로 DEFAULT / TRUSTED / UNTRUSTED 3가지 정책이 있습니다. TRUSTED 정책은 script, object, webgl 등 사이트의 모든 구성 요소를 허용하며 UNTRUSTED는 반대로 모든 요소가 차단됩니다. 그 외의 모든 사이트는 DEFAULT 정책을 따르게 되는데 대부분 항목이 차단되지만 사이트를 표현하기 위한 몇 가지 요소들은 허용합니다.


개별 사이트 목록을 보면 이 3가지 정책 이외에 2가지 설정이 더 있는 것을 볼 수 있습니다. 사이트를 Temp. TRUSTED로 설정하면 파이어폭스가 종료될 때까지 일시적으로 스크립트를 허용할 수 있으며 CUSTOM 정책을 사용하여 사이트 맞춤 설정이 가능합니다. CUSTOM 설정의 오른쪽에 있는 시계 표시를 클릭하여 임시로 사용할 수 있습니다.

사이트 목록에 있는 초록색 자물쇠 표시는 "https only" 를 나타냅니다. 자물쇠를 클릭하면 아이콘이 붉은색으로 변하며 http 에서도 정책이 적용됩니다. 보통은 자동으로 설정되기 때문에 신경쓰지 않아도 되는 부분입니다.

자주 방문하는 사이트는 TRUSTED로 설정해 놓고, 이외의 사이트는 일시 허용을 사용하여 그때그때 스크립트를 허용하는 것이 일반적인 사용법입니다. CUSTOM과 UNTRUSTED 정책을 사용하여 의심되는 사이트의 스크립트를 원천 차단할 수도 있습니다.





사이트 추가



웹 페이지에서 Noscript 아이콘을 클릭하면 다음과 같은 도구 창이 나타납니다. 현재 페이지에서 불러오는 모든 소스 (사이트)의 목록을 볼 수 있습니다. 외부 광고가 포함되었다면 addthis.com 같은 광고 사이트가 목록에 나타나며, 유튜브 동영상을 삽입한 페이지라면 youtube.com도 목록에 포함됩니다.

네이버 메인 페이지를 살펴보면 기본 주소인 ...naver.com 과 ...pstatic.net 이 있으며 각각 밑에 세부 주소들이 나타납니다. naver.com을 TRUSTED로 변경하면 ...naver.com이 목록에 포함되며 사이트가 새로 고침 됩니다. 다시 Noscript 아이콘을 클릭하여 살펴보면 TRUSTED로 변경된 것을 볼 수 있습니다.


페이지가 제대로 동작하려면 ...pstatic.net도 같이 허용해야 합니다. 이런 식으로 목록을 하나씩 확인하면서 허용을 하게되면 나에게 필요 없는 기능은 차단한 채 사이트를 사용할 수 있습니다. 보안뿐 아니라 개인정보 보호에도 효과를 발휘합니다.

왼쪽 위에 있는 Options 버튼을 누르면 설정 창으로 이동하는데 이곳에서 추가한 사이트들의 목록을 확인하고 관리할 수 있습니다. 허용 정책을 취소하고 싶은 사이트는 DEFAULT로 변경 후 새로 고침을 하면 목록에서 사라지게 됩니다.





임시 허용과 취소



오른쪽 위에 있는 시계 아이콘을 클릭하면 현재 페이지의 모든 스크립트를 임시 허용합니다. 안전하다고 생각하는 웹 페이지에서는 일일이 확인하기보다 한번 클릭으로 모든 스크립트를 임시 허용하는 것이 편리합니다. 임시 허용 아이콘 왼쪽에 있는 revoke 아이콘을 클릭하거나 파이어폭스를 종료하면 임시 허용된 사이트 목록이 제거됩니다.





마치며

대부분의 스크립트를 차단하기 때문에 여러 가지 불편한 점이 많습니다. 은행 홈페이지나 쇼핑몰을 이용할 때는 Noscript 확장 자체를 끄는 것이 좋습니다. 게다가 엣지, 크롬, 파이어폭스 등의 최신 브라우저는 확장 기능을 사용하지 않아도 보안 성능이 뛰어납니다. 웹 페이지가 제공하는 여러 가지 기능을 차단하지 않고도 악성 코드들을 잘 막아낼 수 있습니다.

Noscript는 사용성보다는 보안과 프라이버시에 치중한 확장기능입니다. 익숙해지면 큰 불편함 없이 사용할 수 있지만 편리함과는 조금 거리가 있습니다. 웹 페이지에 들어갈 때마다 스크립트를 허용해 줘야 하고, 의심되는 XSS 요청이 있으면 매번 확인이 필요합니다. 하지만 이런 불편들을 감수한다면 아직 알려지지 않은 취약점으로부터 조금 더 안전을 확보할 수 있고, 웹 페이지가 제공하는 필요 없는 요소들을 차단할 수 있습니다.

댓글