Last Updated on 1월 18th, 2024, By
 In AppSealing News, 앱실링 블로그

2022년 OWASP 10대 취약점 총정리 가이드

애플리케이션은 해커가 쉽게 악용할 수 있는 몇 가지 고위험 취약점을 가지고 있습니다. 보안에 대한 어설픈 접근은 치명적인 결과를 초래할 수 있습니다. 잘못된 모바일 보안 전략을 선택할 경우, 사용자들은 비즈니스에 대한 신뢰를 잃게 될 수 있습니다. 공격자들은 불안정한 서버사이드 운영, 보안이 취약한 데이터 스토리지, 안전하지 않은 데이터 교환, 취약한 제3자 구성요소 등을 공격 기회로 삼을 수 있습니다. 새로운 취약점의 수는 최근 몇 년간 꾸준히 증가하고 있습니다. 취약점 관리는 위험요소를 감지하고 향후 피해를 방지하기 위한 계획 수립을 포함하는 지속적인 프로세스입니다.

조직은 기존 및 신규 취약점의 악용을 방지하기 위해 방어 체제를 강화해야 합니다. OWASP(Open Web Application Security Project)는 소프트웨어 보안 향상을 목표로 하는 비영리 조직입니다. OWASP는 애플리케이션을 취약점으로부터 보호하기 위한 보안 모범 사례를 기업에 안내하기 위해 상위 10개 항목을 개발했습니다. 이 오픈 커뮤니티 프로젝트는 위협적인 환경이 계속 진화함에 따라 항목을 정기적으로 업데이트하고 있습니다. 이 문서는 기업이 미래 보안 문제를 해결해 나갈 수 있도록 개정된 2022년 OWASP 10대 취약점 항목을 안내하고 있습니다.

2022 OWASP 상위 10대 취약점

OWASP는 진화하는 위협 환경을 따라잡기 위해 2년 혹은 3년마다 목록을 업데이트하고 있습니다. OWASP는 신규 리스트를 만들기 위해 데이터 기반 접근 방식을 채택했습니다. 업데이트된 리스트는 향후 기업에 영향을 미칠 가능성이 가장 높은 10개의 취약점을 강조하고 있으며 앱 보안 연구원은 새로운 취약점을 발견하면 이를 리스트에 업데이트하기 전에 테스트를 진행합니다.

OWASP 리스트는 2017년에 배포되었으며 최근에는 2021년 4분기에 개정되었습니다. 개정된 리스트는 3개의 신규 카테고리, 명칭 및 범위 지정이 변경된 4개의 카테고리, 그리고 일부 통합된 내용이 포함됩니다. 개정된 목록에 소개된 중요 변경 사항을 알아보겠습니다.

2022년 10대 취약점, 무엇이 바뀌었나?

A01: 2021-잘못된 접근 제어:

잘못된 접근 제어는 2017년 리스트에서 5위였으나 웹 애플리케이션 보안에 가장 심각한 보안 위협으로 인식되며 해당 카테고리에서 1위로 변경되었습니다. 자료에 따르면 테스트된 애플리케이션의 3.81%에서 발견된 31만 8천건이 이 위험 카테고리에 속하는 것으로 나타났습니다.

AO2: 2021-암호화 실패:

암호화 실패의 이전 명칭은 A3:2017 민감한 데이터 노출로 3위를 차지했었습니다. 해당 항목은 개정이 되면서 2위로 올라섰으며 민감한 데이터 노출은 잘못된 암호화로 발생한 보안 위험을 포괄하기 위해 항목이 암호화 실패로 변경되었습니다.

A03: 2021-인젝션:

인젝션은 개정된 목록에서 3위로 이동했습니다. 이 리스트에는 교차 사이트 스크립팅이 포함됐습니다. 테스트한 94%의 애플리케이션에서 인젝션 발생률은 19%로 나타났으며 이 카테고리에 매핑된 33개의 CWE는 애플리케이션에서 27만 4천회 발생하는 것으로 나타났습니다.

A04: 2021-불안전한 디자인:

안전하지 않은 설계 – 안전하지 않은 설계는 2021년 목록에 새로 추가되었으며 설계 결함과 관련된 위험을 다룹니다. 보안 설계 패턴과 원칙 및 참조 아키텍처는 위협 모델링과 마찬가지로 굉장히 중요합니다.

A05: 2021-보안 설정 오류:

보안 설정 오류는 2017년 목록에서 6위였으나 개정된 목록에서는 5위를 차지하였습니다. 자료에 따르면 약 90%의 애플리케이션이 모종의 설정 오류가 있는 것으로 나타났습니다. 평균 발생률은 4.5%였으며 이 위험 카테고리에 포함된 CWE가 20만 8천건 이상이었습니다. 지난 리스트에서 별도 카테고리였던 A4: 2017-XML External Entities (XXE) 항목이 이 위험 카테고리에 포함되었습니다.

A06: 2021-취약하고 오래된 구성요소:

기존 ‘알려진 취약점이 있는 구성 요소 사용’으로 알려진 카테고리가 9위에서 6위로 올라왔습니다. CWE에 매핑된 CVE가 없는 유일한 범주입니다.

AO7: 2021-식별 및 인증 실패:

2017년 목록 2위로, ‘잘못된 접근’으로 알려졌으며, 개정된 목록에서는 7위가 되었습니다. 식별 실패와 관련된 모든 CWE를 다룹니다.

AO8: 2021-소프트웨어 및 데이터 무결성 실패:

2021 목록에 새로 추가됐으며, 중요 데이터, 소프트웨어 업데이트 및 CI/CD 파이프라인 가설에 중점을 두고 있습니다. 이 카테고리에는 이전의 A8:2017-안전하지 않은 역직렬화도 포함됩니다.

A09: 2021-보안 기록 및 모니터링 실패:

불충분한 기록 및 모니터링이라고 불렸던 카테고리가 이름이 바뀌면서 10위에서 9위로 올라왔습니다. 현재 이 카테고리는 사건 경고, 가시성 및 포렌식에 영향을 미치는 더 많은 실패 사례를 포함하고 있습니다.

A10: 2021-서버사이드 요청 위조:

상위 10대 커뮤니티 조사에 새롭게 추가된 항목입니다. 이 카테고리는 지금 당장은 데이터로 설명되지 않지만 향후 해결해야 하는 위험을 나타내주기에 추가되었습니다.

 

새로운 상위 10대 취약점 목록에 대한 주요 세부 정보

OWASP는 CWE의 근본 원인에 초점을 맞춰 새로운 리스트를 만들었습니다. 업데이트된 리스트는 회사가 언어/프레임워크에 적용할 수 있는 CWE에 집중할 수 있기에 교육에 유용합니다. 리스트에 포함된 10개 중 8개 카테고리는 수집된 데이터를 기반으로 만들어졌습니다. 나머지 두 카테고리는 상위 10개 커뮤니티 조사를 기반으로 구성되었습니다.

2022년 OWASP 상위 10대 취약점은 명칭 변경, 범위 지정, 그리고 통합 진행의 결과입니다. 해당 취약점을 하나씩 살펴보고 이러한 취약점을 해결하기 위한 해결책을 알아보겠습니다.

1. 잘못된 접근 제어

잘못된 접근 제어는 공격자가 사용자 계정에 대한 접근권한을 획득하며 발생하는 문제입니다. 공격자는 사용자 혹은 관리자로 시스템에서 활동하며 승인되지 않은 데이터 및 민감한 파일에 대한 권한을 획득합니다. 잘못된 접근 제어 결함은 해커가 사용자 권한 설정을 변경하는데 도움을 줄 수 있습니다. 관리자 패널, 웹사이트 컨트롤 패널, FTP / SFTP / SSH를 통한 접근, 그리고 데이터베이스 접근 등이 잘못된 접근 제어의 예시입니다.

이러한 취약점은 다음과 같은 방법으로 해결할 수 있습니다:

  • 교차 사이트 위조 또는 안전하지 않은 민감한 데이터 저장을 탐색하는 인터랙티브 애플리케이션 보안 테스트 솔루션 구현
  • IAST 활동 보완을 위한 침투 테스트 수행
  • 비활성 계정 삭제
  • 정기적인 검사 및 접근 제어 테스트
  • 적절한 세션 관리 방법 사용

2. 암호화 실패

암호화 실패는 저장되거나 전송된 데이터가 어떠한 방식으로든 손상될 때 발생합니다.

암호화 실패의 결과로 신용카드 사기 또는 신원 도용이 종종 발생합니다. 암호화 실패는 데이터가 일반 텍스트나 오래된 알고리즘을 사용하여 전송될 때 발생합니다. 안전하지 않은 키 관리 및 로테이션 기술도 암호화 실패의 원인이 될 수 있습니다.

이 취약점을 해결하기 위한 방법은 아래와 같습니다:

  • 데이터 수집 문서의 자동완성 기능 해제
  • 데이터 노출 영역 줄이기
  • 데이터가 전송 중이거나 저장되어 있을 때 데이터 암호화 사용
  • 최고 수준의 암호화 사용
  • 데이터 수집 양식에 대한 캐싱 비활성화
  • 암호 저장 시 필수 해시 함수 활용

3. 인젝션

인젝션 취약점은 SQL, OS, NoSQL 혹은 LDAP 인젝션을 통해 해로운 데이터를 인터프리터에 삽입하는 것을 말합니다. 인젝션 공격은 인터프리터를 속여 애플리케이션이 의도하지 않은 명령을 생성하거나 기존에 설계되지 않은 동작을 하도록 합니다. 파라미터를 입력으로 받은 애플리케이션은 인젝션 공격에 취약합니다. 인젝션 공격을 방지하기 위해 다음 접근 방식을 사용할 수 있습니다.

  • CI/CD 파이프라인에 SAST 및 IAST 도구 포함
  • 공격에 노출된 불필요한 명령 수행 방지를 위해 데이터에서 명령을 분리
  • 매개변수화된 쿼리 사용
  • 제거기 대신 안전한 API 사용
  • 서버사이드 검증 및 침입 탐지 시스템을 사용하여 의심스러운 클라이언트사이드 동작 식별

4. 불안전한 디자인

불안전한 디자인은 잘못된 제어 설계와 관련된 모든 결함을 나타냅니다. 이 카테고리는 위협 모델링, 보안 디자인 패턴 및 참조 아키텍처를 다룹니다.

불안전한 디자인의 해결책:

  • 안전한 개발 라이프사이클 사용
  • 즉시 사용 가능한 안전 디자인 패턴 라이브러리 생성
  • 애플리케이션의 각 수준에 타당성 검사 통합
  • 중요 인증, 접근 제어, 비즈니스 로직 및 키 흐름에 대한 위협 모델링 구축
  • 용자 및 서비스 리소스 사용 제한

5. 보안 설정 오류

보안 설정 오류는 상위 10개 취약점 중 가장 흔한 취약점입니다. 안전하지 않은 기본 설정 승인, 불완전한 설정, 민감한 정보를 담고 있는 장황한 에러 메세지, 그리고 잘못 설정된 HTTP 리더기는 보안 설정 오류의 원인이 될 수 있습니다.

보안 설정 오류를 위한 해결책:

  • 조직의 보안 정책에 부합하는 템플릿 사용
  • 위험 감소를 위해 세분화된 애플리케이션 아키텍처 사용
  • 사용하지 않는 기능 및 서비스 제거
  • 클라우드 리소스, 서버 및 애플리케이션을 지속적으로 모니터링하여 설정 오류를 탐지

6. 취약하고 오래된 구성요소

오픈 소스 구성요소에는 애플리케이션 보안에 심각한 위협이 되는 취약점이 포함될 수 있습니다. 취약한 구성요소는 종종 데이터 유출의 원인이 됩니다.

취약하고 오래된 구성요소로 인한 위험을 최소화하기 위한 해결책:

  • 회사 프레임워크의 일부인 구성요소는 설정 관리 아래에 두기
  • 스캐너는 모니터링해야 하는 모든 구성요소를 식별할 수 있도록 하기
  • 패치에 관련한 운영 위험을 줄이기 위해 패치 관리 업무 흐름을 자동화
  • 위협 인텔리전스 데이터가 풍부한 취약성 데이터베이스에 대한 스캔 수행

7. 식별 및 인증 실패

공격자는 애플리케이션이 세션 관리 혹은 사용자 인증과 관련된 기능을 잘못 실행할 때 암호, 세션 토큰 또는 보안 키를 손상시킵니다. 이로 인해 사용자 ID가 도용될 수 있으며 식별 및 인증 실패는 같은 네트워크 내의 다른 자산을 위험에 빠뜨릴 수 있습니다.

식별 및 인증 실패에 대한 해결책:

  • 다단계 인증 사용
  • 관리자 권한이 있는 사용자는 기본 비밀번호 사용하지 않기
  • 모든 로그인 시도 실패 검토
  • 안전한 세션 관리자를 사용하고 URL에 세션 ID를 넣지 않기

8. 소프트웨어 및 데이터 무결성 실패

소프트웨어 및 데이터 무결성 실패는 무결성 위반으로부터 코드와 인프라스트럭처를 보호할 수 없을 때 발생합니다. 악성 코드 및 무단 접근은 이런 취약점의 위험 요소입니다. 신뢰할 수 없는 소스의 플러그인, 라이브러리, 혹은 모듈을 포함하는 프로그램은 무결성 실패에 취약합니다. 자동 업데이트 기능을 사용하면 필요한 무결성 검사 없이 업데이트가 됩니다.

소프트웨어 및 데이터 무결성 실패에 대한 해결책:

  • 프로그램이 변조되지 않도록 디지털 서명 구현
  • 코드 및 설정 수정에 대한 검토 절차 구현
  • 라이브러리와 종속성이 신뢰할 수 있는 저장소를 사용하고 있는지 확인
  • CI/CD 파이프라인에 설정 및 접근 제어가 포함되어 있는지 확인
  • 무결성 검사 없이 암호화되지 않은 데이터를 신뢰할 수 없는 클라이언트에 전달하지 않기

9. 보안 기록 및 모니터링 실패

보안 기록 및 모니터링 실패는 애플리케이션이 공격에 취약하게 만듭니다. 로그인, 그리고 실패한 로그인이 기록되거나 모니터링되지 않는다면 취약한 애플리케이션이 될 수 있습니다.

보안 기록 및 모니터링 실패에 대한 해결책:

  • 침투 테스트를 통해 테스트 로그를 연구하고, 가능한 결함을 감지
  • 로그 관리 솔루션이 쉽게 관리 가능한 포맷으로 로그 생성
  • 높은 가치의 트랜잭션이 변조 방지를 위한 검사추적을 보유하고 있는지 확인
  • 의심스러운 활동을 감지하기 위해 알림과 모니터링 매커니즘 구현
  • 모든 로그 데이터를 올바르게 인코딩

10. 서버사이드 요청 위조

이는 애플리케이션이 사용자 공급 URL의 유효성을 확인하지 않고 원격 리소스를 가져오면서 나오는 결과입니다. 최근 아키텍처가 복잡해지고, 클라우드 서비스 사용이 증가하면서 서버 사이드 요청 위조가 발생하고 있습니다

서버사이드 요청 위조를 위한 해결책:

  • 방화벽 정책을 ‘기본적으로 거부’로 설정
  • 애플리케이션에 따라 방화벽 규칙에 대한 소유권 및 라이프사이클 설정
  • 방화벽에서 허용되거나 차단된 모든 네트워크 흐름 기록
  • 클라이언트 공급 입력 데이터 삭제
  • 일관된 URL 사용

마치며

2021 리스트에는 애플리케이션이 사이버공격에 저항할 수 있도록 하는 여러가지 추가사항이 담겼습니다. OWASP 상위 10대 리스트에 언급된 모범사례를 통해 금융 및 브랜드 가치 손실의 위험을 줄일 수 있습니다. OWASP Top 10은 보안 문제 해결을 위해 정기 업데이트되는 보고서입니다. 이번 개정 리스트는 더 강력한 암호화, 운영 실패율 감소, 그리고 애플리케이션의 성공 잠재력 향상에 기여합니다.

OWASP는 개발자를 도와 보안 위험을 식별하고 효율적으로 방지할 수 있도록 돕습니다. 개정된 리스트에 소개된 신규 카테고리는 디자인 프로세스부터 보안 권리의 중요성을 강조하고 있습니다. OWASP는 보다 견고한 네트워크와 기업의 사이버 복원력을 향상시키는데 기여합니다.

앱실링(Appsealing)은 안드로이드, iOS 및 하이브리드 앱에 강력한 보호 기능을 제공하는 모바일 앱 보안 솔루션 전문 기업입니다. 핀테크, 게임, O2O 및 전자상거래 산업 전반에 걸친 전문 지식을 바탕으로 공격 벡터에 대한 고급 위협 분석을 통해 제로 코딩, 확장 가능한 보호 기능을 앱에 제공합니다. 우리는 서드파티 도구와의 쉬운 호환성을 보장하면서 실시간 런타임 보호 기능을 제공합니다. 앱 성능에 영향을 미치지 않으면서 견고한 코드 보호를 위해 오늘 바로 저희에게 연락하세요.


appsealing contact

Dustin Hong
Dustin Hong
Dustin은 잉카엔트웍스의 앱실링 비즈니스 개발을 이끌고 있습니다. 그는 사이버 보안, IT, 컨텐츠 및 애플리케이션 보안 분야의 소프트웨어 개발과 혁신에 많은 관심을 가지고 있습니다. 또한 사이버 보안 세계에서 주요 사건의 대상, 이유 및 방법에 대해 다양한 사람들에게 공유하고 토론하는 것을 좋아합니다. 업계 동향 및 모범 사례에 대한 그의 견해는 기사, 백서에 실려있으며, 여러 보안 행사에서 유사 주제로 발표를 하였습니다.