01DEFINITION
한 줄로 말하면
오류 화면에 쿼리문이나 파일 경로가 그대로 나오면, 공격자는 그 문장을 읽으며 다음 시도를 다듬습니다. 이용자에게는 무엇이 잘못됐는지만 보이면 되고, 자세한 내용은 서버 로그에 남아야 합니다. 개발 중 설정이 그대로 올라간 경우가 대부분입니다.
02RISK
없으면 무슨 일이 생기나
공격은 대개 정찰부터 시작합니다. 주소 뒤에 따옴표를 하나 붙이고, 숫자 자리에 글자를 넣고, 없는 파일을 부릅니다. 목적은 뚫는 것이 아니라 무엇이 돌아오는지 보는 것입니다. 여기서 데이터베이스 종류와 판, 테이블 이름, 절대 경로, 프레임워크 이름이 그대로 나오면 그다음 시도는 훨씬 정확해집니다. 시행착오로 알아내야 할 것을 우리가 문장으로 적어 준 셈입니다.
경로가 나오는 것만으로도 값이 있습니다. 웹 루트의 실제 위치를 알면 파일 업로드 취약점과 조합해 올린 파일의 주소를 계산할 수 있고, 운영체제 계정 이름이 드러나면 로그인 시도의 후보가 좁혀집니다. 스택 추적에 라이브러리 판이 나오면 그 판에 알려진 취약점 목록을 그대로 대입해 볼 수 있습니다.
이 설정은 대개 의도된 것이 아닙니다. 개발할 때는 오류를 화면에 띄워야 고칠 수 있으므로 켜 두고, 그 설정 파일이 그대로 배포됩니다. 그래서 이 항목이 실패하는 사이트는 다른 개발용 설정도 함께 켜져 있는 경우가 많습니다. 한 줄을 고치는 일이지만 그 한 줄이 무엇을 드러내고 있었는지는 대개 아무도 몰랐습니다.
03CHECK IT YOURSELF
직접 확인하는 방법
아래는 저희를 거치지 않고 지금 해 보실 수 있는 방법입니다. 결과를 저희에게 보내실 필요도 없습니다.
-
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
고치는 방법
서버 환경에 따라 적을 자리가 다릅니다. 아래는 가장 흔한 구성 기준이고, 적용 전에 현재 설정을 백업하십시오.
두 가지를 같이 해야 합니다. 화면 출력을 끄기만 하고 로그를 안 켜면 오류가 통째로 사라져 고칠 수 없게 됩니다. 이용자에게는 무엇이 잘못됐는지만 보이고, 자세한 내용은 우리만 보는 곳에 남습니다.
가이드 안내 보기 · 먼저 무료로 진단받기
이미 열람권을 구매하셨다면 안내 메일의 가이드 링크로 바로 열립니다 — 링크를 잃으셨다면 문의 주시면 다시 보내 드립니다.
05FAQ
자주 묻는 질문
오류를 숨기면 문제가 생겼을 때 우리도 못 보는 것 아닌가요
- 화면에서 숨기는 것과 기록하지 않는 것은 다릅니다. 로그에는 전부 남겨 두고 화면에만 안 보이게 합니다. 오히려 로그로 모으면 언제 몇 번 났는지 세어 볼 수 있어서 화면으로 보는 것보다 낫습니다.
404 화면에도 정보가 새나요
- 샙니다. 기본 404 화면에는 서버 종류와 판이 적혀 있는 경우가 있고, 프레임워크 화면이면 사용 중인 프레임워크가 그대로 드러납니다. 우리 디자인의 안내 화면으로 바꾸면 그 정보가 함께 사라집니다.
개발 서버는 그대로 둬도 되나요
- 개발 서버가 인터넷에서 열려 있다면 같은 문제입니다. 오히려 개발 서버 쪽이 데이터도 설정도 느슨해서 정찰 값이 큽니다. 접근을 막아 두거나 운영과 같은 설정을 쓰는 편이 안전합니다.
고쳤는지 어떻게 확인하나요
- 위의 확인 방법을 그대로 다시 해 보십시오. 없는 주소와 이상한 값 두 가지면 대개 충분합니다. 배포 뒤마다 확인하려면 그 두 요청을 점검 스크립트에 넣어 두는 것이 확실합니다.
RELATED
같이 보시면 좋은 항목
GET STARTED
내 사이트는
이 항목을 통과할까요
주소만 넣으시면 이 항목을 포함해 58가지를 판정해 점수와 실패 개수를 보여 드립니다. 로그인도, 소유 확인도 필요 없습니다 — 전부 밖에서 관찰만 하는 항목이기 때문입니다.