본문 바로가기
MAKESITE

점검 항목 · 보안

상세 에러 메시지 노출

침입 경로가 아니라 정찰 경로입니다. 공격자는 우선 오류를 일부러 내 보고, 화면에 돌아온 문장을 읽으며 다음 시도를 다듬습니다. 우리가 답을 적어 주는 셈입니다.

심각도 보통 보안 무료 스캔 판정 항목 /check/error-disclosure

01DEFINITION

한 줄로 말하면

오류 화면에 쿼리문이나 파일 경로가 그대로 나오면, 공격자는 그 문장을 읽으며 다음 시도를 다듬습니다. 이용자에게는 무엇이 잘못됐는지만 보이면 되고, 자세한 내용은 서버 로그에 남아야 합니다. 개발 중 설정이 그대로 올라간 경우가 대부분입니다.

02RISK

없으면 무슨 일이 생기나

공격은 대개 정찰부터 시작합니다. 주소 뒤에 따옴표를 하나 붙이고, 숫자 자리에 글자를 넣고, 없는 파일을 부릅니다. 목적은 뚫는 것이 아니라 무엇이 돌아오는지 보는 것입니다. 여기서 데이터베이스 종류와 판, 테이블 이름, 절대 경로, 프레임워크 이름이 그대로 나오면 그다음 시도는 훨씬 정확해집니다. 시행착오로 알아내야 할 것을 우리가 문장으로 적어 준 셈입니다.

경로가 나오는 것만으로도 값이 있습니다. 웹 루트의 실제 위치를 알면 파일 업로드 취약점과 조합해 올린 파일의 주소를 계산할 수 있고, 운영체제 계정 이름이 드러나면 로그인 시도의 후보가 좁혀집니다. 스택 추적에 라이브러리 판이 나오면 그 판에 알려진 취약점 목록을 그대로 대입해 볼 수 있습니다.

이 설정은 대개 의도된 것이 아닙니다. 개발할 때는 오류를 화면에 띄워야 고칠 수 있으므로 켜 두고, 그 설정 파일이 그대로 배포됩니다. 그래서 이 항목이 실패하는 사이트는 다른 개발용 설정도 함께 켜져 있는 경우가 많습니다. 한 줄을 고치는 일이지만 그 한 줄이 무엇을 드러내고 있었는지는 대개 아무도 몰랐습니다.

03CHECK IT YOURSELF

직접 확인하는 방법

아래는 저희를 거치지 않고 지금 해 보실 수 있는 방법입니다. 결과를 저희에게 보내실 필요도 없습니다.

  1. 01
    없는 주소를 불러 봅니다

    아무 의미 없는 경로를 요청했을 때 무엇이 돌아오는지 봅니다. 우리 디자인의 안내 화면이 아니라 서버나 프레임워크의 기본 오류 화면이 나오면 그 자체가 정보입니다.

    $ curl -s https://example.com/zzz-does-not-exist \
      | grep -iE 'stack|trace|/var/www|/home/|\.php on line|SQLSTATE' | head

나머지 확인 방법 2단계는 셀프수리 가이드에 있습니다.

04HOW TO FIX

고치는 방법

서버 환경에 따라 적을 자리가 다릅니다. 아래는 가장 흔한 구성 기준이고, 적용 전에 현재 설정을 백업하십시오.

화면에 안 띄우고 로그에 남깁니다

두 가지를 같이 해야 합니다. 화면 출력을 끄기만 하고 로그를 안 켜면 오류가 통째로 사라져 고칠 수 없게 됩니다. 이용자에게는 무엇이 잘못됐는지만 보이고, 자세한 내용은 우리만 보는 곳에 남습니다.

우리 오류 화면을 만들어 둡니다
개발 설정이 배포에 섞이지 않게 합니다
조치 코드는 셀프수리 가이드에 있습니다. 서버 구성별 설정 원문 3단계와, 귀사 사이트에서 실제로 관찰된 값이 함께 실립니다 — 무엇을 어디에 적어야 하는지가 정해집니다.
가이드 안내 보기 · 먼저 무료로 진단받기
이미 열람권을 구매하셨다면 안내 메일의 가이드 링크로 바로 열립니다 — 링크를 잃으셨다면 문의 주시면 다시 보내 드립니다.
주의. 저희 무료 진단은 이 항목을 판정하지 않습니다. 오류를 일으켜 봐야 알 수 있고, 그것은 남의 서버에 일부러 잘못된 요청을 보내는 능동 점검이기 때문입니다. 저희는 동의와 계약이 있는 범위에서만 그런 요청을 보냅니다. 위 확인 방법은 직접 해 보실 수 있게 적어 둔 것입니다.

05FAQ

자주 묻는 질문

오류를 숨기면 문제가 생겼을 때 우리도 못 보는 것 아닌가요

화면에서 숨기는 것과 기록하지 않는 것은 다릅니다. 로그에는 전부 남겨 두고 화면에만 안 보이게 합니다. 오히려 로그로 모으면 언제 몇 번 났는지 세어 볼 수 있어서 화면으로 보는 것보다 낫습니다.

404 화면에도 정보가 새나요

샙니다. 기본 404 화면에는 서버 종류와 판이 적혀 있는 경우가 있고, 프레임워크 화면이면 사용 중인 프레임워크가 그대로 드러납니다. 우리 디자인의 안내 화면으로 바꾸면 그 정보가 함께 사라집니다.

개발 서버는 그대로 둬도 되나요

개발 서버가 인터넷에서 열려 있다면 같은 문제입니다. 오히려 개발 서버 쪽이 데이터도 설정도 느슨해서 정찰 값이 큽니다. 접근을 막아 두거나 운영과 같은 설정을 쓰는 편이 안전합니다.

고쳤는지 어떻게 확인하나요

위의 확인 방법을 그대로 다시 해 보십시오. 없는 주소와 이상한 값 두 가지면 대개 충분합니다. 배포 뒤마다 확인하려면 그 두 요청을 점검 스크립트에 넣어 두는 것이 확실합니다.
여기까지는 항목 일반론입니다. 무엇이고 왜 문제이며 어떻게 고치는지는 감출 이유가 없어 그대로 적었습니다. 리포트에 들어가는 것은 귀사 사이트에서 실제로 어떤 값이 나왔는지 — 어느 주소의 어느 응답인지, 그 환경에서 어떤 순서로 적용해야 하는지, 예상 공수가 얼마인지입니다. 이 페이지만 보고 직접 고치셔도 되고, 실제로 그러시라고 적어 두었습니다.

GET STARTED

내 사이트는
이 항목을 통과할까요

주소만 넣으시면 이 항목을 포함해 58가지를 판정해 점수와 실패 개수를 보여 드립니다. 로그인도, 소유 확인도 필요 없습니다 — 전부 밖에서 관찰만 하는 항목이기 때문입니다.

무료 스캔 문의하기 로그인