sans top 20 security vulnerabilities software applications
이 자습서의 예제를 통해 소프트웨어 애플리케이션의 SANS 상위 20 개 주요 보안 취약성을 배우고 이해합니다.
단어 없이 평범한 사전 단어가 아니라 SysAdmin , 심사 , 회로망 , 및 보안 .
이 자습서에서는 소프트웨어 프로그램에서 찾을 수있는 SANS 상위 20 가지 보안 약점과이를 완화하기 위해 할 수있는 작업에 대해 알아 봅니다.
학습 내용 :
- SAN이 사이버 보안 커뮤니티에 미치는 영향
- 소프트웨어의 SANS 상위 20 개 주요 취약점 목록
- # 1) CWE-119 : 메모리 버퍼 오류
- # 2) CWE-79 : 크로스 사이트 스크립팅
- # 3) CWE-20 : 검증되지 않은 입력 오류
- # 4) CWE-200 : 민감한 정보 노출 오류
- # 5) CWE-125 : 범위를 벗어난 읽기 오류
- # 6) CWE-89 : SQL 주입
- # 7) CWE-416 : 이전에 해제 된 메모리
- # 8) CWE-190 : 정수 오버플로 오류
- # 9) CWE-352 : 교차 사이트 요청 위조
- # 10) CWE-22 : 디렉터리 탐색
- # 11) CWE-78 : OS 명령 주입
- # 12) CWE-787 : 범위를 벗어난 쓰기 오류
- # 13) CWE-287 : 부적절한 인증 오류
- # 14) CWE-476 : NULL 포인터 역 참조
- # 15) CWE-732 : 잘못된 권한 할당
- # 16) CWE-434 : 무제한 파일 업로드
- # 17) CWE-611 : XML 엔티티를 통한 정보 노출
- # 18) CWE-94 : 코드 삽입
- # 19) CWE-798 : 하드 코딩 된 액세스 키
- # 20) CWE-400 : 통제되지 않은 자원 소비
- 자주 묻는 질문
- 결론
SAN이 사이버 보안 커뮤니티에 미치는 영향
에 따르면 없이 , 없이 연구소는 연구 및 교육 기관으로 설립되었습니다. 다양한 보안 프로그램은 매우 포괄적이며 전 세계적으로 165,000 명 이상의 보안 전문가에게 긍정적 인 영향을 미치고 있습니다.
SANS 및 기타 긍정적 인 검토에서 이러한 종류의 커버리지가 제공됨에 따라 InfoSec 교육 및 다양한 보안 인증을위한 세계에서 가장 신뢰할 수 있고 지금까지 가장 큰 조직이된다고 말할 수 있습니다.
이 기사에서는 소프트웨어를 공격에 취약하게 만들 수있는 SANS 상위 20 개 오류와 이러한 오류를 완화하기 위해 구현할 수있는 몇 가지 보안 제어에 중점을 둡니다. 20 개 이상의 취약점을 찾을 수 있지만 상위 20 개 취약점에 대해 논의 할 것입니다.
소프트웨어의 SANS 상위 20 개 주요 취약점 목록
- CWE-119 : 메모리 버퍼 오류
- CWE-79 : 교차 사이트 스크립팅
- CWE-20 : 검증되지 않은 입력 오류
- CWE-200 : 민감한 정보 노출 오류
- CWE-125 : 범위를 벗어난 읽기 오류
- CWE-89 : SQL 주입
- CWE-416 : 여유 메모리 오류
- CWE-190 : 정수 오버플로 오류
- CWE-352 : 교차 사이트 요청 위조
- CWE-22 : 디렉토리 탐색
- CWE-78 : OS 명령 삽입
- CWE-787 : 범위를 벗어난 쓰기 오류
- CWE-287 : 부적절한 인증 오류
- CWE-476 : NULL 포인터 역 참조
- CWE-732 : 잘못된 권한 할당
- CWE-434 : 무제한 파일 업로드
- CWE-611 : XML 엔터티를 통한 정보 노출
- CWE-94 : 코드 삽입
- CWE-798 : 하드 코딩 된 액세스 키
- CWE-400 : 통제되지 않은 자원 소비
CWE라는 용어는 무엇을 의미합니까?
그만큼 일반적인 약점 열거 (CWE) 커뮤니티에서 승인 한 소프트웨어 및 하드웨어 취약점 목록이며 각 취약점에 대해 식별 코드가 할당되어 있습니다. 목표는 소프트웨어 및 하드웨어의 다양한 결함을 식별하여 모든 결함을 수정하고 완화하는 것입니다.
# 1) CWE-119 : 메모리 버퍼 오류
이 결함은 일반적으로 SDLC의 아키텍처 및 설계, 구현, 운영 단계에서 발생합니다.
이 버퍼 오버플로는 응용 프로그램 프로세스가 메모리에 저장할 수있는 것보다 더 많은 데이터를 저장하려고 할 때 발생합니다. 버퍼는 일정 수준의 데이터 만 저장할 수 있고 해당 수준에 도달하거나 초과하면 데이터가 다른 메모리 위치로 이동하여 해당 버퍼에 이미 포함 된 데이터를 손상시킬 수 있습니다.
이 사건은 때때로 일부 프로그래밍 오류로 인해 우연히 발생하지만 이로 인해 데이터를 지우고 기밀 정보를 훔칠 수 있으며이 버퍼 오버플로로 인해 전체 응용 프로그램이 충돌 할 수 있기 때문에 결과는 재앙이 될 수 있습니다.
아래 예는 8 바이트 스토리지로 할당 된 버퍼를 보여줍니다. 하지만 실행을 위해 더 많은 데이터가 전송 되었기 때문에 2 바이트가 넘쳤습니다.
(영상 출처 )
# 2) CWE-79 : 크로스 사이트 스크립팅
크로스 사이트 스크립팅 (XSS)은 일반적으로 악의적 인 행위자 또는 공격자가 웹 브라우저를 통해 실행할 수있는 웹 애플리케이션에 악성 또는 유해한 스크립트를 주입 할 때 발생하는 주입 공격입니다. 악성 스크립트가 손상된 시스템에 침투하면 다양한 악성 활동을 수행하는 데 사용될 수 있습니다.
일부 악의적 인 활동은 세션 정보가있는 쿠키와 같은 개인 정보를 피해자의 컴퓨터에서 공격자의 컴퓨터로 전송하는 형태 일 수 있습니다.
교차 사이트 스크립팅 발생 :
Windows 10 용 최고의 무료 PC 클리너 소프트웨어
- 웹 양식 요청을 통해 검증되지 않은 신뢰할 수없는 데이터가 웹 애플리케이션에 입력되는 경우
- 웹 애플리케이션이이 악성 데이터가 포함 된 웹 페이지를 즉시 출력 할 때.
- 페이지를 생성하는 동안 소프트웨어는 HTML 및 JavaScript와 같은 웹 브라우저에서 실행할 수있는 콘텐츠를 포함하는 데이터에 대해 유효성을 검사하지 못합니다.
- 피해자는 신뢰할 수없는 데이터를 사용하여 삽입 된 악성 스크립트가있는 웹 브라우저를 통해 생성 된 페이지를 무의식적으로 방문합니다.
- 악성 스크립트는 공격자의 웹 서버에서 보낸 페이지에서 나옵니다. 손상된 시스템 웹 브라우저는 악성 스크립트를 처리합니다.
- 이 작업은 동일한 출처에 대한 웹 브라우저의 정책을 위반하며, 한 도메인에서 오는 스크립트는 자체 도메인을 제외한 다른 도메인에서 리소스에 액세스하거나 코드를 실행해서는 안됩니다.
(영상 출처 )
# 3) CWE-20 : 검증되지 않은 입력 오류
애플리케이션이 입력을 수신하지만 처리를 위해 시스템에 승인되는 데 필요한 모든 세부 사항이 있는지 여부에 관계없이 입력의 유효성을 검증하지 못합니다.
입력 삭제가있는 경우 입력이 소스 코드로 처리하기에 안전한지 확인하거나 다른 구성 요소와 통신하는 데 필요한 입력일 때 잠재적으로 위험한 입력을 확인하는 데 사용할 수 있습니다.
이러한 입력이 적절하게 삭제되거나 유효성이 검사되지 않으면 공격자가 주 응용 프로그램이 관대하게 처리 할 악의적 인 입력을 보낼 수있는 길을 열어 제어 흐름, 리소스의 임의 제어 또는 임의 코드를 변경하게됩니다. 실행.
아래 이미지는 좋은 응용 프로그램이 스크립트 또는 명령을 입력으로 받아들이지 않아야 함을 보여줍니다. 이러한 입력이 제대로 삭제되지 않은 경우 애플리케이션은 올바른 요청으로 간주하여 처리합니다.
(영상 출처 )
# 4) CWE-200 : 민감한 정보 노출 오류
이는 응용 프로그램이 이러한 정보에 액세스 할 수있는 권한이없는 공격자에게 기밀이고 민감한 정보를 고의로 그리고 무의식적으로 노출 할 때 발생합니다.
다른 오류로 인해이 정보가 공격자에게 노출됩니다. 이 오류의 심각도는 애플리케이션이 작동하는 컨텍스트, 노출되는 민감한 정보의 유형 및 노출 된 정보에서 행위자가 얻을 수있는 사항에 따라 다릅니다.
다음은 노출 될 수있는 몇 가지 민감한 정보입니다.
- 개인 메시지, 재무 데이터, 건강 상태 기록, 지리적 위치 또는 연락처 세부 정보와 같은 개인 정보
- 시스템 구성 세부 정보 및 환경, 예를 들면 운영 체제 및 설치된 패키지
- 사업 기록 및 지적 재산
- 네트워크 구성 세부 정보
- 내부 애플리케이션 상태
- 메시지 헤더와 같은 메타 데이터
때때로 데이터베이스 연결 오류, 런타임 오류 및 당사의 응용 프로그램이나 웹 사이트의 네트워크 오류와 같은 기술적 가려움이있을 수 있습니다.
이러한 오류가 개발 과정에서 적절하게 처리되지 않으면, 즉 애플리케이션이 오류 메시지를 표시 할 때 공격자가 아래 이미지와 같이 악의적 인 목적으로 사용할 수있는 정보를 공개적으로 표시 할 수 있습니다.
# 5) CWE-125 : 범위를 벗어난 읽기 오류
이는 일반적으로 응용 프로그램이 버퍼의 시작 또는 끝까지 정상 수준을 넘어서 데이터를 읽을 때 발생합니다. 이렇게하면 공격자가 다른 메모리 위치에서 중요한 정보를 읽을 수있는 권한이없는 액세스 권한이 부여되어 시스템 또는 애플리케이션 충돌이 발생할 수 있습니다.
코드가 데이터를 읽고 문자열에 적용되는 NULL과 같은 읽기 작업을 중지하는 표시기가 제자리에 있다고 생각하면 충돌이 발생합니다.
다음 코드에서 함수는 배열 인덱스 위치에서 값을 검색합니다.이 위치는 함수에 대한 입력 매개 변수입니다.
(영상 출처 )
위의 코드에서 함수가 주어진 배열 인덱스가 배열의 최대 길이보다 작은 지 확인하지만 최소값을 확인하는 데 실패 함을 알 수 있습니다.
이러한 유효성 검사를 취소하면 음의 값을 입력 배열 인덱스로 받아들이게되어 경계를 벗어난 읽기가 발생하여 민감한 메모리에 대한 액세스가 제공됩니다.
입력 배열 인덱스가 배열에 필요한 최대 및 최소 범위 내에있는 경우이를 확인해야합니다.
이제 아래 예제를 확인하면 최소 범위 유효성 검사를 포함하도록 IF 문을 수정해야 함을 알 수 있습니다.
# 6) CWE-89 : SQL 주입
SQL 주입 공격자가 리소스에 대한 액세스 권한을 얻거나 액세스 권한이없는 데이터를 변경하기 위해 SQL (Structured Query Language) 코드를 Webform 입력 상자에 삽입하는 보안 취약점의 한 형태입니다.
이 취약점은 설계, 구현 및 운영 단계에서 애플리케이션에 도입 될 수 있습니다.
이 SQL 쿼리는 일부 정보에 대해 데이터베이스에 무단 요청을하는 것입니다. 일반적인 입력 작업에서는 사용자 인증에 웹 양식이 사용됩니다. 사용자가 텍스트 상자에 이름과 암호를 입력하면 이러한 값이 SELECT 쿼리에 삽입됩니다.
입력 값이 정확하면 사용자에게 애플리케이션 또는 요청에 대한 액세스 권한이 부여되지만 값이 올바르지 않으면 액세스가 거부됩니다.
오늘날 일부 웹 양식에는 악의적 인 입력을 차단하는 메커니즘이 마련되어 있지 않습니다. 공격자는 입력 상자를 사용하여 악의적 인 요청을 데이터베이스에 보낼 수 있습니다. 이 단일 요청은 민감한 정보를 포함 할 수있는 전체 데이터베이스에 대한 액세스 권한을 부여 할 수 있습니다.
# 7) CWE-416 : 이전에 해제 된 메모리
이 문제는 메모리가 릴리스 된 후 참조로 인해 발생하며 심각한 프로그램 충돌로 이어질 수 있습니다. 이전에 해제 된 메모리를 사용하면 유효한 데이터 손상, 결함 타이밍에 따른 임의 코드 실행과 같은 불리한 결과를 초래할 수 있습니다.
두 가지 일반적인 원인은 다음과 같습니다.
- 소프트웨어 내의 오류 상태 및 기타 예외적 인 경우.
- 프로그램의 어느 부분이 여유 메모리를 유발했는지에 대한 설명이 없습니다.
이 경우 메모리는 해제 된 직후 다른 포인터에 할당됩니다. 해제 된 메모리에 대한 이전 포인터가 다시 사용되며 이제 새 할당 주변을 가리 킵니다. 데이터가 변경 될 때까지 사용 된 메모리가 손상되고 애플리케이션이 정의되지 않은 방식으로 작동 할 수 있습니다.
# 8) CWE-190 : 정수 오버플로 오류
계산이 응용 프로그램에서 처리되고 결과 값이 정확한 값보다 클 것이라는 논리적 가정이있는 경우 정수 오버플로가 발생합니다. 여기서 정수 값은 위치에 저장할 수없는 값으로 증가합니다.
이런 일이 발생하면 값은 일반적으로 매우 작거나 음수 값으로 래핑됩니다. 포장이 예상되는 경우 괜찮지 만 포장이 예상치 못한 경우 보안 문제가 발생할 수 있습니다. 이 시나리오가 발생하면 그 결과가 루프, 보안 결정, 메모리 할당 등에 사용되므로 중요하다고 할 수 있습니다.
Windows 10 용 최고의 정크 클리너
이 약점은 일반적으로 비정상적인 동작으로 이어지고 충돌로 이어질 수 있습니다. 값이 흐름보다 데이터에 중요한 경우 단순한 데이터 손상이 발생할 수 있습니다. 그러나 랩 어라운드로 인해 버퍼 오버플로와 같은 추가 조건이 발생하면 메모리 손상이 발생할 수 있습니다.
이 문제는 공격자가 임의의 코드를 실행하는 데 사용할 수있는 버퍼 오버플로를 유발할 수 있습니다. 이 정수 오버플로 오류는 일반적으로 SDLC의 설계 및 구현 단계에서 시스템에 도입됩니다.
# 9) CWE-352 : 교차 사이트 요청 위조
이것은 요청이 실제로 올바른 사용자로부터 왔는지 여부에 관계없이 웹 응용 프로그램이 HTTP 요청을 충분히 확인하지 못하는 경우입니다. 웹 서버는 모든 요청을 수락하고 이에 대한 응답을 제공하도록 설계되었습니다.
클라이언트가 하나 또는 여러 세션 내에서 여러 HTTP 요청을 보낸다고 가정 해 보겠습니다. 웹 서버는 모든 요청이 진짜인지 아닌지 알기가 매우 어렵고 일반적으로 처리됩니다. 공격자는 클라이언트가 특수 제작 된 웹 페이지를 방문하도록 강제 할 수 있으며 이제 자금 이체, 이메일 주소 변경 등과 같은 일부 요청을 수행 할 수 있습니다.
공격자는 즉시 액세스 할 수 있으며 데이터를 훔칠 수 있으며 데이터를 파괴 할 수도 있습니다. 그들은 항상 액세스를 유지할 수 있으며 작업이 완료되면 감사 로그를 손상시켜 악용을 노출 할 수있는 향후 포렌식을 방지 할 수 있습니다.
아래 이미지는 사용자가 의도하지 않은 작업을 수행하도록 유도하는 공격자를 보여줍니다.
# 10) CWE-22 : 디렉터리 탐색
디렉터리 통과 또는 파일 경로 통과는 공격자가 현재 애플리케이션을 실행중인 서버에서 임의의 파일을 읽을 수 있도록하는 웹 보안 취약점입니다.
이러한 파일은 애플리케이션 코드, 백엔드 시스템의 자격 증명 및 운영 체제 파일 일 수 있습니다. 일부 다른 시나리오에서 공격자는 서버의 이러한 임의의 파일에 쓸 수있어 응용 프로그램 데이터 또는 동작을 수정할 수 있으며 이로 인해 서버를 완전히 제어 할 수 있습니다.
(영상 출처 )
# 11) CWE-78 : OS 명령 주입
다운 스트림 구성 요소로 전송되는 의도 된 OS 명령의 수정으로 이어질 수있는 특수 요소의 부적절한 삭제에 관한 것입니다. 공격자는 대상 운영 체제에서 이러한 악의적 인 명령을 실행할 수 있으며 읽거나 수정해서는 안되는 환경에 액세스 할 수 있습니다.
이것은 항상 공격자가 운영 체제에 직접 위험한 명령을 실행할 수 있도록합니다.
이 취약점이 권한있는 프로그램에서 발생할 때마다 공격자는 환경에서 허용되는 명령을 사용하거나 공격자가 가지고 있지 않은 권한으로 다른 명령을 호출 할 수 있으며, 이로 인해 발생할 수있는 손상의 양이 증가 할 수 있습니다.
# 12) CWE-787 : 범위를 벗어난 쓰기 오류
이는 애플리케이션이 지정된 버퍼의 끝 또는 시작 이전에 데이터를 쓸 때 발생합니다.
이 경우 최종 결과는 일반적으로 데이터 손상, 시스템 또는 응용 프로그램 충돌입니다. 응용 프로그램이하는 일은 버퍼 경계 외부의 메모리 위치를 참조하는 데 사용되는 일종의 포인터 산술입니다.
# 13) CWE-287 : 부적절한 인증 오류
이것은 공격자가 유효한 신원을 가지고 있다고 주장하지만 소프트웨어가 주장이 옳다는 것을 확인하거나 증명하지 못한 경우입니다.
소프트웨어가 사용자의 로그인 정보를 잘못 검증하므로 공격자는 애플리케이션 내에서 특정 권한을 얻거나 민감한 데이터에 액세스하고 임의의 코드를 실행할 수있는 민감한 정보를 공개 할 수 있습니다.
# 14) CWE-476 : NULL 포인터 역 참조
Null 포인터 역 참조는 응용 프로그램이 유효한 결과를 반환해야하는 포인터를 역 참조하는 경우 대신 NULL을 반환하여 충돌이 발생합니다. 널 포인터 역 참조는 경쟁 조건 및 일부 프로그래밍 오류와 같은 많은 결함을 통해 발생할 수 있습니다.
NULL 포인터의 도움으로 수행되는 프로세스는 일반적으로 실패로 이어지며 프로세스를 수행 할 가능성은 매우 낮습니다. 이는 공격자가 악성 코드를 실행하는 데 도움이됩니다.
(영상 출처 )
# 15) CWE-732 : 잘못된 권한 할당
이 취약점은 악의적 인 사용자가 액세스 할 수있는 리소스를 노출하는 방식으로 애플리케이션이 매우 중요하고 중요한 리소스에 권한을 할당 할 때 발생합니다.
많은 사람에게 리소스에 대한 권한을 부여하면 공격자가 민감한 정보를 노출하거나 수정할 수 있습니다. 리소스에 대한 권한 할당에 대한 이러한 종류의 접근 방식에 대한 검사가없는 경우 프로그램 구성 또는 일부 민감한 데이터가 잘못된 손에 들어가면 매우 비참한 종말을 초래할 수 있습니다.
# 16) CWE-434 : 무제한 파일 업로드
이 취약점은 애플리케이션이 파일을 애플리케이션에 업로드하기 전에 파일 형식의 유효성을 검사하지 않을 때 발생합니다. 이 취약점은 언어 독립적이지만 일반적으로 ASP 및 PHP 언어로 작성된 응용 프로그램에서 발생합니다.
위험한 유형의 파일은 응용 프로그램 환경 내에서 자동으로 처리 될 수있는 파일입니다.
다음 프로그램은 PHP 파일의 업로드를 보여줍니다. webroot 디렉토리에 업로드하기 전에 파일 유형이 확인 및 검증되지 않았습니다. 이러한 취약점으로 인해 공격자는 임의의 PHP 파일을 업로드하고 업로드 된 파일에 직접 접근하여 실행할 수 있습니다.
# 17) CWE-611 : XML 엔티티를 통한 정보 노출
XML 문서가 처리를 위해 애플리케이션에 업로드되고이 문서에 의도 된 위치와 다른 위치에있는 다른 문서로 확인되는 균일 한 리소스 식별자가있는 XML 엔티티가 포함 된 경우. 이 이상 현상으로 인해 응용 프로그램이 잘못된 문서를 출력에 첨부 할 수 있습니다.
XML 문서에는 때때로 XML 엔티티 및 기타 기능을 정의하는 데 사용되는 DTD (문서 유형 정의)가 포함됩니다. DTD를 통해 균일 자원 식별자는 대체 문자열의 형태로 사용될 수 있습니다. XML 파서가 수행하는 작업은 균일 한 리소스 식별자에 포함 된 내용에 액세스하고 이러한 내용을 실행을 위해 XML 문서에 다시 입력하는 것입니다.
(영상 출처 )
# 18) CWE-94 : 코드 삽입
사용자 데이터에 코드 구문이 있으면 공격자가 계획된 제어 동작을 변경하고 임의 코드를 실행할 가능성이 높아집니다. 이 취약점을 '주입 취약점'이라고하며이 취약점으로 인해 데이터 제어가 사용자가 제어 할 수 있습니다.
이 취약점은 소프트웨어가 신뢰할 수없는 데이터를 코드에 허용하고 코드 세그먼트 및 구문의 동작 모두에 부정적인 영향을 미칠 수있는 특수 문자의 유효성 검사를 수행하지 않는 시나리오를 나타냅니다.
요컨대, 공격자는 일종의 임의의 코드를 주입하여 애플리케이션 내에서 실행할 수 있습니다. 다음 PHP 코드는 신뢰할 수없는 데이터에서 eval () 함수의 사용법을 보여줍니다. 아래 코드에서 공격자는 소프트웨어에서 실행될 'param'매개 변수 임의 코드를 코드에 전달할 수 있습니다.
아래 예는 phpinfo () 함수. 이 취약점은 system () 호출을 통해 대상 소프트웨어에서 임의의 OS 명령을 실행하기 위해 다른 곳에서도 악용 될 수 있습니다.
# 19) CWE-798 : 하드 코딩 된 액세스 키
이것은 인바운드 인증 목적과 일부 외부 구성 요소에 대한 아웃 바운드 통신 및 내부 데이터 암호화를 위해 암호 및 액세스 키가 응용 프로그램에 직접 하드 코딩되는 경우입니다. 하드 코딩 된 로그인 세부 정보는 일반적으로 공격자가 소프트웨어 관리자가 구성한 인증을 우회 할 수있는 길을 열어주는 취약성을 유발합니다.
시스템 관리자는 항상이 취약점을 발견하고 고치는 것이 매우 어렵다는 것을 알게 될 것입니다.
이 약점에는 두 가지 주요 흐름이 있습니다.
- 인바운드 : 응용 프로그램에는 하드 코딩 된 세부 정보에 대해 입력 자격 증명의 유효성을 검사하는 인증 시스템이 포함되어 있습니다.
- 배 밖으로 : 응용 프로그램이 다른 시스템에 연결되고 다른 시스템에 연결하기위한 세부 정보가 시스템에 하드 코딩됩니다.
인바운드 스트림에는 항상 생성되는 기본 관리자 계정이 있으며이 계정에 액세스하기위한 자격 증명은 애플리케이션에 하드 코딩되고 해당 기본 관리자 계정과 연결됩니다.
하드 코딩 된 세부 정보는 일반적으로 모든 응용 프로그램 설치에서 동일하며 누구도 변경하거나 비활성화 할 수 없습니다. 시스템 관리자조차도 응용 프로그램을 수동으로 수정할 수 있다는 점을 제외하고는 권한이 없습니다. 암호가 공개 된 경우 공격자는 전체 응용 프로그램에 액세스 할 수 있으며 자신의 이익을 위해 암호를 조작 할 수 있습니다.
응용 프로그램의 모든 설치는 동일한 암호를 갖기 때문에 별도의 조직에 설치하더라도 조직의 모든 경계에 걸쳐 대규모 공격을 일으킬 수 있습니다. 예를 들면 확산 될 응용 프로그램에 웜을 주입합니다.
아웃 바운드 스트림은 백엔드 서비스로 인증하는 프런트 엔드 시스템에만 적용됩니다. 백엔드 서비스에는 쉽게 찾을 수있는 하드 코드 또는 고정 된 암호가 필요할 수 있습니다. 프로그래머가하는 일은 단순히 백엔드 자격 증명을 프런트 엔드 소프트웨어에 하드 코딩하는 것입니다. 해당 응용 프로그램의 모든 사용자는 암호를 추출 할 수 있습니다.
암호 및 액세스 키가 하드 코딩 된 클라이언트 측 소프트웨어는 일반적으로 하드 코딩되지 않은 소프트웨어보다 더 많은 위협을가합니다. 바이너리에서 암호를 추출하는 것은 일반적으로 수행하기가 매우 쉽기 때문입니다.
# 20) CWE-400 : 통제되지 않은 자원 소비
이 취약점은 응용 프로그램이 제한된 리소스의 할당 및 유지 관리를 제대로 제어하지 못할 때 발생하며, 이로 인해 공격자가 소비되는 리소스 양에 영향을 미칠 수 있으며 결국 사용 가능한 리소스가 고갈됩니다.
제한된 리소스에는 메모리, 파일 시스템 스토리지, 데이터베이스 연결 풀 항목 및 CPU가 포함됩니다.
공격자가 이러한 제한된 리소스의 할당을 트리거 할 수 있고 리소스의 수 또는 크기가 제어되지 않는 경우 공격자가 사용 가능한 모든 리소스를 소비하는 서비스 거부를 통해 혼란을 일으킬 수 있다고 가정 해 보겠습니다.
이런 일이 발생하면 유효한 사용자가 응용 프로그램에 액세스하지 못하여 항상 환경에 부정적인 영향을 미칩니다. 예를 들어 응용 프로그램 메모리가 고갈 공격을 받으면 전체 응용 프로그램과 호스트 운영 체제가 느려질 수 있습니다.
리소스 고갈로 이어질 수있는 세 가지 다른 인스턴스는 다음과 같습니다.
- 할당 된 리소스 수에 대한 제한 부족
- 종료 단계에 도달하기 전에 리소스에 대한 모든 참조 손실
- 처리 후 자원 폐쇄 / 반환 실패
리소스 고갈 문제는 일반적으로 다음 시나리오를 잘못 구현 한 결과입니다.
- 오류 조건 및 기타 예외 상황.
- 프로그램의 어느 부분이 리소스를 해제하는지에 대해 혼합 된 반응이 있습니다.
다음 예제는이 취약점의 특성을 설명하고 위험을 완화하는 데 사용할 수있는 방법을 설명하는 데 도움이됩니다.
다음 예는 취약점을 설명합니다.
화이트 박스 테스트와 블랙 박스 테스트의 차이점
(영상 출처 )
이 프로그램은 만들어진 연결 수를 추적하지 않으며 사용 가능한 연결 수를 제한하지 않습니다. Forking은 공격자가 많은 수의 연결을 만들어 시스템의 CPU, 프로세스 또는 메모리가 부족하게 만드는 방법 중 하나 일뿐입니다.
공격자가하는 일은 사용 가능한 모든 연결을 사용하여 다른 사람이 원격으로 시스템에 액세스하지 못하도록하는 것입니다.
자주 묻는 질문
Q # 1) SANS는 무엇을 의미합니까?
대답: SANS는 SysAdmin, Audit, Network 및 Security를 나타냅니다.
Q # 2) 취약점의 몇 가지 예를 나열하십시오.
답변 : 예는 다음과 같습니다.
- 소프트웨어 취약점
- 방화벽 취약성
- 네트워크 취약성
- 운영 체제 취약성
- 웹 서버 취약점
- 데이터베이스 취약점
Q # 3) 위협과 취약성의 차이점은 무엇입니까?
대답: 위협 시스템의 기존 취약점을 통해 컴퓨터 시스템이나 응용 프로그램을 손상시키려는 시도로 악의적이거나 원치 않는 행위를 수행 할 가능성입니다. 예: 랜섬웨어.
취약점 공격자의 원치 않거나 무단 액세스를 허용하여 조직에 해를 끼칠 수있는 시스템 내에 존재하는 약점입니다. 예: 방화벽 구성이 잘못되었습니다.
Q # 4) 가장 일반적인 취약점은 무엇입니까?
답변 : 다음과 같습니다.
- SQL 주입
- 교차 사이트 스크립팅
- 잘못된 보안 구성
- 민감한 데이터 노출
- 깨진 인증
- 세션 관리
결론
이 SANS 상위 20 개 취약성 목록은 규칙이나 정책이 아니라 소프트웨어 취약성을 방지하는 방법에 대한 안내입니다. 우리가 개발자이든 보안 전문가이든, 이제는 행위자가 악의적 인 행위를 실행하는 백도어를 생성 할 수있는 애플리케이션의 취약점으로 이어질 수있는 실수를 방지하기 위해 수행 할 수있는 작업에 대해이 가이드를 따라야합니다.
추천 도서
- 보안 테스트 (전체 가이드)
- Acunetix Web Vulnerability Scanner (WVS) 보안 테스트 도구 (실습 검토)
- 네트워크 취약성 평가 및 관리 가이드
- 2021 년 가장 강력한 취약점 평가 검사 도구 10 가지
- 취약성 평가 및 침투 테스트 차이
- Jenkins Security : 보안 활성화 및 프로젝트 보안 매트릭스
- 소프트웨어를 테스트하는 동안 피해야 할 4 가지 사이버 보안 실수
- 10 BEST 네트워크 보안 소프트웨어 (2021 TOP SELECTIVE ONLY)