A01 2021 - Broken Access Control CWE

HW·2024년 9월 22일

CWE-22: 제한된 디렉토리로의 경로 이름 제한 실패 ('Path Traversal')

개요
CWE-22는 경로 탐색(Path Traversal) 취약점을 나타내며, 공격자가 애플리케이션이 의도한 범위를 벗어난 파일 시스템의 임의 위치에 접근할 수 있게 하는 문제다. 이를 통해 민감한 파일을 읽거나, 수정하거나, 삭제하는 등의 공격이 가능하다.

취약점 설명
애플리케이션이 사용자 입력을 기반으로 파일 경로를 생성할 때, 적절한 검증 없이 경로를 구성하면 공격자는 ".." (상위 디렉토리 참조)와 같은 특수 문자를 사용해 애플리케이션이 허용한 경로를 우회할 수 있다. 이러한 취약점은 다음과 같은 경우에 발생할 수 있다.

  • 파일 업로드 기능에서 경로 검증이 미흡한 경우
  • 사용자 요청을 처리하는 과정에서 파일 경로를 조작할 수 있는 경우
  • 외부 소스로부터 불완전한 입력을 받는 경우

공격 예시
1. 사용자가 파일 이름을 입력할 때, "example.txt" 대신 "../etc/passwd"와 같이 입력하여 시스템의 민감한 파일에 접근할 수 있다.
2. 웹 애플리케이션에서 특정 디렉토리의 파일 목록을 요청할 때, 경로를 조작하여 다른 디렉토리의 파일을 요청할 수 있다.

예방 조치
CWE-22 취약점을 방지하기 위해 다음과 같은 조치를 취할 수 있다.
1. 입력 검증: 사용자 입력을 철저히 검증하고 필터링하여 허용된 형식만 통과하도록 한다.
2. 상대 경로 사용 금지: 사용자 입력에 기반한 상대 경로 사용을 피하고, 절대 경로를 사용하여 파일에 접근하도록 한다.
3. 접근 제한: 특정 디렉토리 내에서만 파일 접근을 허용하고, 다른 경로로의 접근을 차단한다.
4. 화이트리스트 사용: 접근 가능한 파일 목록을 화이트리스트로 관리하여 미리 정의된 파일만 접근하도록 한다.
5. 에러 메시지 관리: 시스템의 파일 구조에 대한 정보를 노출하지 않도록 에러 메시지를 관리한다.

결론
CWE-22는 시스템의 파일 접근을 위험에 빠뜨릴 수 있는 심각한 취약점이다. 이를 방지하기 위해서는 사용자 입력에 대한 철저한 검증과 적절한 접근 제어가 필요하다. 애플리케이션을 설계할 때 이러한 보안 고려사항을 반드시 반영해야 한다.

CWE-200: 무단 사용자에게 민감한 정보 노출

개요
CWE-200은 무단 사용자에게 민감한 정보가 노출되는 취약점을 나타낸다. 이 취약점은 공격자가 애플리케이션이나 시스템에서 보호해야 할 민감한 정보를 쉽게 접근할 수 있게 만든다.

취약점 설명
민감한 정보가 잘못된 접근 제어 또는 적절한 데이터 보호 없이 노출되면, 공격자는 이를 통해 사용자 개인 정보, 인증 자격 증명, 재무 정보 등 중요한 데이터를 얻을 수 있다. 이러한 취약점은 다음과 같은 경우에 발생할 수 있다.

  • API 응답이나 웹 페이지에서 민감한 데이터가 노출되는 경우
  • 에러 메시지에 상세한 정보가 포함되어 있는 경우
  • 불완전한 인증이나 접근 제어가 적용된 경우

공격 예시
1. 사용자 인증이 제대로 이루어지지 않은 상태에서 API를 통해 다른 사용자의 개인 정보에 접근할 수 있다.
2. 에러 메시지가 데이터베이스 구조나 내부 구현 세부사항을 노출하여 공격자가 시스템을 악용할 수 있는 정보를 제공한다.

예방 조치
CWE-200 취약점을 방지하기 위해 다음과 같은 조치를 취할 수 있다.
1. 민감한 데이터 보호: 사용자 데이터는 암호화하여 저장하고 전송하며, 불필요한 노출을 방지한다.
2. 접근 제어 강화: 데이터에 대한 접근 권한을 철저히 관리하고, 사용자 역할에 따라 필요한 최소한의 정보만 제공한다.
3. 에러 메시지 관리: 에러 메시지에는 사용자에게 필요한 최소한의 정보만 포함하고, 시스템 내부 구조나 민감한 정보는 노출하지 않도록 한다.
4. 정보 노출 감지: 로그 및 모니터링 시스템을 통해 민감한 정보가 노출되는 사례를 탐지하고 대응한다.

결론
CWE-200은 애플리케이션의 보안을 위협할 수 있는 심각한 취약점이다. 이를 방지하기 위해서는 민감한 정보 보호와 접근 제어의 철저한 관리가 필요하다. 애플리케이션 설계 시 이러한 보안 고려사항을 반드시 반영해야 한다.

CWE-219: 웹 루트 아래에 민감한 데이터가 저장된 파일

개요
CWE-219는 민감한 데이터가 웹 루트 아래에 저장되어, 무단 사용자에게 쉽게 접근될 수 있는 취약점을 나타낸다. 이는 공격자가 해당 데이터를 쉽게 읽고 활용할 수 있는 경로를 제공한다.

취약점 설명
웹 루트는 일반적으로 사용자에게 노출되는 파일이 위치하는 디렉토리다. 민감한 정보(예: 비밀번호, 인증 토큰, 개인 정보)가 이 디렉토리 아래에 저장되면, 잘못된 설정이나 보안 결함을 이용해 공격자가 이를 쉽게 접근할 수 있다. 이러한 취약점은 다음과 같은 경우에 발생할 수 있다.

  • 애플리케이션의 설정 파일이나 데이터베이스 백업 파일이 웹 루트 아래에 위치한 경우
  • 사용자 업로드 파일이 적절한 접근 제어 없이 저장된 경우
  • 잘못된 웹 서버 구성으로 인해 특정 파일이 노출된 경우

공격 예시
1. 공격자가 웹 브라우저를 통해 민감한 설정 파일에 접근하여, 내부 정보나 데이터베이스 자격 증명을 얻을 수 있다.
2. 공격자가 웹 루트에 저장된 백업 파일을 다운로드하여 중요한 데이터를 탈취할 수 있다.

예방 조치
CWE-219 취약점을 방지하기 위해 다음과 같은 조치를 취할 수 있다.
1. 민감한 데이터 저장 위치 변경: 민감한 정보는 웹 루트 외부의 안전한 위치에 저장하고, 애플리케이션에서만 접근하도록 한다.
2. 접근 제어 적용: 민감한 데이터에 대한 접근은 엄격히 제한하며, 필요할 경우 인증 및 권한 부여 메커니즘을 강화한다.
3. 웹 서버 설정 관리: 웹 서버의 설정을 검토하여, 특정 파일이나 디렉토리에 대한 접근을 차단한다.
4. 데이터 암호화: 민감한 정보를 저장할 때는 암호화를 적용하여, 데이터가 유출되더라도 무단 접근을 어렵게 한다.

결론
CWE-219는 민감한 데이터의 보안을 심각하게 위협할 수 있는 취약점이다. 이를 방지하기 위해서는 민감한 정보를 안전한 위치에 저장하고, 접근 제어를 철저히 관리하는 것이 필요하다. 애플리케이션 설계 시 이러한 보안 고려사항을 반드시 반영해야 한다.

CWE-275: 권한 문제 (Permission Issues)

개요
CWE-275는 애플리케이션에서 권한 관리가 부적절하게 이루어지는 경우를 나타낸다. 이로 인해 사용자가 의도하지 않은 자원에 접근하거나 특정 작업을 수행할 수 있게 된다.

취약점 설명
권한 문제는 사용자의 역할이나 권한을 제대로 검증하지 않아 발생하며, 이러한 취약점은 다음과 같은 상황에서 나타날 수 있다.

  • 특정 기능이 모든 사용자에게 열려 있는 경우
  • 권한 상승 공격으로 인해 일반 사용자가 관리자 기능에 접근할 수 있는 경우
  • 권한 검증이 누락된 API 엔드포인트로 인한 데이터 노출

공격 예시
1. 일반 사용자가 관리자 페이지에 직접 접근할 수 있어, 민감한 데이터나 기능을 조작할 수 있다.
2. 사용자 입력을 기반으로 데이터베이스 쿼리를 작성할 때, 권한 검증이 없는 경우 다른 사용자의 데이터에 접근할 수 있다.

예방 조치
CWE-275 취약점을 방지하기 위해 다음과 같은 조치를 취할 수 있다.
1. 철저한 권한 검증: 모든 요청에 대해 사용자의 역할에 따라 적절한 권한을 검증한다.
2. 최소 권한 원칙 적용: 사용자에게 필요한 최소한의 권한만 부여하여 권한 상승을 방지한다.
3. 보안 정책 정의: 명확한 접근 제어 정책을 수립하고, 이를 코드에 반영하여 일관성 있게 적용한다.
4. 정기적인 보안 감사: 권한 설정과 관련된 보안 감사를 정기적으로 실시하여 취약점을 조기에 발견하고 수정한다.

결론
CWE-275는 애플리케이션 보안에 심각한 위협이 되는 권한 문제이다. 이를 방지하기 위해서는 철저한 권한 검증과 접근 제어 관리가 필수적이다. 애플리케이션 설계 시 이러한 보안 고려사항을 반드시 반영해야 한다.

CWE-377: 안전하지 않은 임시 파일 (Insecure Temporary File)

개요
CWE-377은 애플리케이션이 임시 파일을 안전하지 않게 생성하거나 관리하는 경우를 나타낸다. 이로 인해 공격자가 임시 파일에 접근하거나 악용할 수 있는 가능성이 생긴다.

취약점 설명
임시 파일은 일반적으로 애플리케이션이 데이터를 일시적으로 저장할 때 사용되며, 안전하게 관리되지 않으면 민감한 정보가 노출될 수 있다. 이러한 취약점은 다음과 같은 상황에서 발생할 수 있다.

  • 임시 파일이 공용 디렉토리에 생성되어 다른 사용자에게 접근 가능한 경우
  • 파일 이름이 예측 가능하여 공격자가 해당 파일에 접근할 수 있는 경우
  • 임시 파일의 삭제나 정리가 제대로 이루어지지 않는 경우

공격 예시
1. 공격자가 임시 파일의 경로를 알고 접근하여 민감한 정보를 읽을 수 있다.
2. 공격자가 임시 파일을 변조하여 애플리케이션의 동작에 영향을 줄 수 있다.

예방 조치
CWE-377 취약점을 방지하기 위해 다음과 같은 조치를 취할 수 있다.
1. 안전한 경로 지정: 임시 파일을 생성할 때는 안전한 디렉토리(예: 사용자 전용 디렉토리) 내에서 생성한다.
2. 무작위 파일 이름 사용: 임시 파일 이름을 무작위로 생성하여 예측 가능성을 줄인다.
3. 접근 제어 적용: 임시 파일에 대한 접근 권한을 제한하고, 필요할 경우 암호화를 적용한다.
4. 정기적인 파일 정리: 사용이 끝난 임시 파일은 즉시 삭제하여 잔여 데이터가 남지 않도록 한다.

결론
CWE-377은 민감한 정보가 노출될 수 있는 심각한 취약점이다. 이를 방지하기 위해서는 임시 파일 관리에 대한 철저한 보안 대책이 필요하다. 애플리케이션 설계 시 이러한 보안 고려사항을 반드시 반영해야 한다.

0개의 댓글