사전 OWASP
개념

OWASP

gabury1고친 사람 github-actions[bot]

OWASP 는 웹 애플리케이션이 어떻게 뚫리고 무엇으로 막는지를 문서로 적어 공개하는 비영리 단체입니다. 그 문서를 읽는 데는 가입도 사용료도 들지 않습니다. 보안을 따로 배우지 않은 개발자가 무엇부터 막아야 하는지 찾아보는 곳이 여기입니다.

쉽고 빠른 이해

웹 애플리케이션 보안 지식을 공개 문서로 펴내는 단체입니다. 가장 널리 읽히는 문서가 「Top 10」이고, 웹에서 자주 터지는 약한 대목 열 가지를 묶어 놓은 목록입니다.

왜 이런 것이 있나. 어디가 뚫렸다는 경험은 회사 안에 갇히기 쉽습니다. 밖으로 나오지 않으면 옆 회사가 같은 곳에서 또 뚫립니다. 공개된 목록이 하나 있으면 서로 같은 이름으로 그 문제를 부를 수 있습니다.

어떻게 도나:

  1. 자원한 사람들이 프로젝트를 열어 문서나 도구를 만듭니다
  2. 만든 것을 누구나 가져다 써도 된다는 조건으로 공개합니다
  3. 기업과 팀이 그 문서를 자기 점검표로 가져다 씁니다

무엇이 나빠지나. 목록이 순위 꼴이라 거기 없는 약점은 덜 챙기게 됩니다. 목록을 다 막았다고 안전해지는 것이 아닙니다.

상세

화재가 어디서 자주 나는지 조사해 공개 점검표로 만들어 나눠 쓰는 자원봉사 모임을 떠올리면 가깝습니다. 점검표는 누구나 가져다 쓸 수 있고 고칠 것을 제안할 수도 있습니다.

OWASP 는 Open Worldwide Application Security Project 의 줄임말입니다. 소프트웨어의 보안을 개선하려고 일하는 비영리 재단이자, 참여 자격을 두지 않는 열린 공동체입니다. 내놓는 것은 파는 제품이 아니라 문서와 도구이고, 둘 다 공개되어 있습니다.

예전 이름은 Open Web Application Security Project 였습니다. 다루는 대상이 웹 바깥으로 넓어지면서 가운데 낱말이 바뀌었습니다. 줄임말은 그대로 남아 두 이름이 같이 쓰입니다.

왜 이런 단체가 필요했나

어느 서비스가 어디로 뚫렸는지는 그 회사 안에서만 도는 이야기가 되기 쉽습니다. 사고를 밖에 알리면 손해가 나기 때문입니다. 그래서 같은 실수가 회사를 옮겨 가며 되풀이됩니다.

공격자가 파고들 수 있는 약한 대목을 취약점이라 부릅니다. 이 이름이 팀마다 갈리는 것도 걸림돌이었습니다. 같은 문제를 한쪽은 입력 검증 문제라 부르고, 다른 쪽은 입력값이 명령으로 실행된다는 뜻에서 인젝션이라 부릅니다.

이름이 갈리면 두 팀의 점검 결과를 나란히 놓고 볼 수 없습니다. 공개된 이름표가 하나 있으면 그 비교가 됩니다.

보안 엔지니어링을 전공한 사람이 팀에 없을 때 기댈 데가 필요하다는 것도 있습니다. 무료로 열려 있고 개발자가 바로 읽을 수 있는 문서가 그 몫을 대신 맡습니다.

무엇을 내놓나

산출물은 크게 문서와 도구입니다. 문서가 훨씬 많고 널리 읽힙니다. 대표적인 것만 봅니다.

이름 무엇을 담나
OWASP Top 10 자주 터지는 약한 대목을 열 가지로 추려 순위로 세운 목록
OWASP 치트시트 시리즈 한 가지 문제를 어떻게 막는지 한 장으로 적은 요령 모음
OWASP ASVS(Application Security Verification Standard) 애플리케이션이 만족해야 할 보안 요구사항을 조목으로 적은 목록
OWASP WSTG(Web Security Testing Guide) 웹 서비스를 어떤 순서로 찔러 보는지 적은 시험 안내서
OWASP ZAP(Zed Attack Proxy) 실제로 요청을 보내 약한 대목을 찾아 주는 검사 도구

성격이 갈립니다. Top 10 은 무엇이 문제인지 알려 주고, 치트시트는 그것을 어떻게 막는지 알려 줍니다. ASVS 는 다 막았는지 확인할 조목을 주고, WSTG 와 ZAP 은 확인하는 방법을 줍니다.

여기 적은 문서는 각각 따로 읽을 거리라 이름만 걸어 둡니다. 어느 것이 무슨 조목을 담는지는 그 이름의 항목이 갖습니다.

언제 펴 보나

처음 여는 때는 대개 무엇부터 막아야 할지 모를 때입니다. 우리 서비스에서 날 수 있는 문제를 전부 세는 대신 남들이 자주 당한 것부터 확인하는 것이 Top 10 을 읽는 이유입니다.

막을 문제가 정해지고 나면 방법을 찾을 차례입니다. 그 한 가지를 어떻게 처리하는지 한 장으로 적어 둔 것이 치트시트입니다.

만들기 전과 만든 뒤에도 폅니다. 요구사항을 정할 때는 ASVS 의 조목을 점검표로 가져오고, 다 만든 뒤에는 WSTG 의 순서대로 찔러 보며 빠뜨린 것을 찾습니다.

어떻게 만들어지나

만드는 단위는 프로젝트입니다. 어떤 문서가 필요하다고 생각한 사람이 프로젝트를 열고, 관심 있는 사람들이 모여 함께 씁니다. 재단이 주제를 정해 나눠 주는 방식이 아닙니다.

결과물은 열린 라이선스로 공개됩니다. 누구나 그대로 복사해 사내 규정에 넣을 수 있고, 틀린 대목을 고쳐 달라고 공개 저장소에 제안할 수도 있습니다. 회사가 사서 보는 보고서와 갈리는 대목이 여기입니다.

지역별 지부와 학회도 같은 공동체 안에 있습니다. 문서를 쓰는 사람과 그 문서를 현장에서 쓰는 사람이 직접 만나는 통로입니다.

flowchart TD
    A["현장에서 뚫린 사례가 나온다"] --> B["자원한 사람들이 프로젝트로 모은다"]
    B --> C["열린 라이선스 문서로 공개한다"]
    C --> D["팀이 점검 기준으로 가져다 쓴다"]
    D --> A

그림의 마지막 화살표가 이 공동체의 특징입니다. 문서를 쓰는 쪽과 읽는 쪽이 나뉘어 있지 않아서, 쓰다가 모자란 대목을 발견한 사람이 곧 다음 판을 쓰는 사람이 됩니다.

목록이 기준 노릇을 하게 되는 경로

Top 10 은 읽을거리로 시작했지만 점검 기준으로 더 많이 쓰입니다. 발주처가 계약서에 이 목록의 항목을 막았는지 확인하라고 적고, 보안 점검 도구가 찾아낸 문제를 이 목록의 항목으로 분류해 보여 주는 식입니다.

이름이 공용어가 된 것이 이유입니다. 어느 팀이 접근 제어 항목을 지적받았다고 하면, 그 말을 듣는 다른 팀도 무슨 뜻인지 바로 압니다. 접근 제어나 교차 사이트 스크립팅 같은 낱말이 그렇게 굳었습니다.

대가가 따라옵니다. 열 칸짜리 순위표는 열한 번째 문제를 가립니다. 목록에 없는 약점을 지적하면 「그건 Top 10 에 없는데」라는 답이 돌아오기도 합니다. 목록을 채우는 일과 안전해지는 일은 같지 않습니다.

무엇을 해 주지 않나

인증 기관이 아닙니다. 문서를 따랐다고 도장을 찍어 주는 곳이 아니고, 어기는 곳을 제재하지도 않습니다. 지키는지 검사하고 자격을 주는 일은 다른 제도가 맡습니다.

특정 제품을 보증하지도 않습니다. 재단이 내놓는 도구가 있지만 그것이 유일한 정답이라는 뜻은 아니고, 다른 검사 도구를 쓰지 말라는 뜻도 아닙니다.

빠짐없는 목록도 아닙니다. 여기 실린 것은 널리 관찰된 문제이지, 우리 서비스에서 날 수 있는 문제 전부가 아닙니다. 우리 쪽 사정에 맞춰 무엇이 위험한지 따지는 일은 위협 모델링이 따로 맡습니다.

관련 항목

OWASP 가 펴내는 대표 문서와 도구

OWASP Top 10 · OWASP 치트시트 시리즈 · OWASP ASVS · OWASP WSTG · OWASP ZAP · OWASP SAMM · OWASP 의존성 검사

Top 10 이 싣는 취약점

SQL 인젝션 · 교차 사이트 스크립팅 · 크로스 사이트 요청 위조 · 권한 상승 · 안전하지 않은 설계 · 보안 설정 오류 · 서버 사이드 요청 위조 · 취약한 의존성

취약점에 번호와 이름을 매기는 다른 목록

CWE · CVE · MITRE ATT&CK · NVD · CVSS

OWASP 문서를 점검 기준으로 쓰는 보안 활동

보안 엔지니어링 · 위협 모델링 · 침투 테스트 · 보안 코드 리뷰 · 취약점 점검 · 시크릿 관리 · 공격 표면

OWASP 문서가 권하는 방어 수단

접근 제어 · 최소 권한 · 입력 검증 · 출력 인코딩 · 인증과 인가 · 감사 로그 · 동일 출처 정책 · 심층 방어

규격을 합의로 정해 공개하는 다른 단체

IETF · W3C · WHATWG · IANA · MITRE

OWASP 문서가 지키려는 대상

웹 애플리케이션 · API · 브라우저 · 세션 · 쿠키

다른 이름: Open Worldwide Application Security Project · Open Web Application Security Project · OWASP 재단