페이지에 접속하자마자 실행되는 악성코드라는게 말이 되는 이야기인가요?

shutup의 이미지

최근 랜섬웨어라는 녀석이 기승을 부리고 있다고 합니다. 이메일 방식에서 벗어나서 요새는 웹페이지에 접속만해도 다운로드가 되도록 만들어지고 있다고 하네요.
이런 경향은 별로 최근의 얘기도 아니거니와 약간의 정보 보호 지식만 있어도 어렵지 않게 피할수 있는 문제가 아닙니까. '드라이브 바이 다운로드'라는 거창한 명칭까지 붙일 필요가 있을지 모르겠습니다.
그러던 중 제 회사사람하고 논쟁이 붙었습니다.
"페이지에 접속하자마자 실행되는 악성코드가 있을수 있을까?" 이런 내용이었는데요, 저는 브라우저만 올바르게 동작한다면 그런 일은 있을수 없다고 했고, 그 친구는 가능할지도 모른다고 했습니다.
고수님들의 의견 구하겠습니다. 이게 가능할까요?

peecky의 이미지

브라우저나 플러그인(플래시 플레이어, PDF 리더 등)의 취약점을 통해서 코드를 실행하는 사례가 종종 있었습니다.

예시:
http://trendything.tistory.com/190

klara의 이미지

그냥 용어의 정의/범위에 대한 차이로 보입니다.
취약점때문에 문제가 발생한다는 걸 모르실거 같지는 않고, 단지 shutup님은 '정상적인 동작'이라는걸 취약점이 없어야한다는 뜻으로 사용하셨고, 친구분은 '정상적인 동작'이 취약점이 없다는 걸 보장하지는 않는다고 생각하신거 같습니다.

익명 사용자의 이미지

기본적으로 모든 상용 브라우저들은 아무런 권한이나 사용자 동의 없이 외부 코드를 실행할 수 없도록 구현하고 있습니다.
그러나 당연한 얘기지만 브라우저 역시 사람이 만든 프로그램이기 때문에 내부적으로 취약점이 수 없이 많습니다.
이는 주기적으로 발견될 때마다 패치를 해주고 있습니다. 당연히 "브라우저가 올바르게 동작하면" 그런 일은 없습니다.
즉 브라우저가 의도적으로 만든 기능으로서의 페이지 접속하자마자 임의 코드 실행은 불가능합니다.
ActiveX 와 같은 것도 당연한 얘기지만 사용자의 설치 의사를 묻게 되어 있습니다.
(그리고 Drive by download 라는 용어 자체도 거창한 명칭이라기보다 굉장히 오래전부터 쓰던 용어입니다.)

또한 임의 코드 실행 취약점은 굉장히 많으나, 요즘의 브라우저는 샌드박스라는 기술을 대부분 기본으로 적용하기 때문에
최신 브라우저를 사용할 경우 악성코드가 문제되는 일이 현저히 줄어들었습니다. 이 샌드박스 우회를 위한 취약점의 경우는
일반적인 취약점보다 더욱 발견하기 어렵고, 공개되어 있는 것도 수가 매우 적은 편입니다.

그래서 대부분 흔히 유행하는 브라우저용 Exploit kit 들은 샌드박스가 없는 브라우저 버전을 노리고 있습니다.
크롬의 경우는 초기부터 적용을 했었고, 또한 자동 업데이트 역시 초기부터 있었으므로 익스플로잇이 먹힐 확률이 크게 줄어듭니다.
다만 IE 는 10 버전에서야 샌드박스를 구현했고, 심지어 이것도 디폴트가 아닌 옵션이었기 때문에(11부터 디폴트) 위험한 버전이 더 많습니다.
마찬가지로 옛날 버전에는 브라우저 자체적인 자동 업데이트조차 없습니다.

XP 사용자나 IE10 사용자 중 일부(보안 패치도 안되는) 등은 특히나 이런 Exploit kit 의 좋은 먹잇감이 되며
국내의 일반 사용자들 중 많은 사람들은 아직도 업데이트를 제대로 하지 않는 습관이 있다는 점으로 인해 특히 피해가 많습니다.
그냥 XP 사용자에 있어서는 현재로선 거의 100% 페이지 접속시 임의 코드 실행이 가능하다고 보시면 됩니다.(ASLR 이나 DEP 조차 제대로 없죠)

다른 예로, 아직 보고되지 않은 제로데이인 경우(샌드박스나 기타 보안 기능을 전부 우회하는 경우) 아무리 패치를 잘 하는 사용자라고 해도
당연히 바로 페이지 접속하면 공격을 당할 수 밖에 없지만, 이런 취약점이 상용 Exploit kit 에 포함되어 있는 경우는 있을 수 없고
주로 명확한 타겟이 정해져있는 정밀한 공격이거나, 상용 킷이 아닌 취약점을 발견한 집단에 의해 직접 쓰이거나 하는 편입니다.
당장 pwn2own 같은 contest 만 봐도 Researcher 들이 브라우저를 100% 우회하여 임의 코드를 실행하는 익스플로잇을 발표하고 있습니다.

또한 조금 다른 예로, ActiveX 자체의 취약점이 있을 수 있는데 이는 과거 IE 브라우저가 한 번 설치된 ActiveX 플러그인에 대해서 페이지가 이를
실행해야 하는 경우 사용자의 별 다른 동의 없이 바로 실행을 하였기 때문에 생기는 문제입니다. 따라서 특정 ActiveX 플러그인 내부적으로
인자 전달 시에 잘못된 인자를 넣어 BOF 나 기타 취약점을 일으키는 경우, 이를 이용해 페이지를 접속하자마자 임의 코드 실행이 가능하게 됩니다.

요즘에는 IE10 정도 부터 ActiveX 실행시에도 아래에 "허용" 이라는 버튼을 눌러야 실행을 하게 되어 있기 때문에 이런 일은 잘 없지만
이것도 보안 설정에 좌우되는 문제이고, 귀찮다고 낮은 보안 설정을 하는 사용자도 얼마든지 있기 때문에 그렇게 만만한 문제는 아닙니다.
물론 최근에는 ActiveX 역시 샌드박스 내에서 실행되기 때문에 그나마 예전보다는 좀 더 보안이 나아진 편입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.