취약한 소프트웨어 수정 방법. 스마트 스캔

이 문제를 보는 또 다른 방법은 애플리케이션에 취약점이 있는 경우 기업이 신속하게 대응해야 한다는 것입니다. 이를 위해서는 IT 부서가 설치된 애플리케이션, 자동화 도구 및 표준 도구를 사용하여 구성 요소 및 패치. 소프트웨어 태그(19770-2)를 표준화하려는 업계의 노력이 있습니다. 소프트웨어 태그(19770-2)는 설치된 것을 식별하는 응용 프로그램, 구성 요소 및/또는 패치와 함께 설치된 XML 파일입니다. 소프트웨어, 구성 요소 또는 패치의 경우 해당 응용 프로그램의 일부입니다. 태그에는 게시자 권한 정보, 버전 정보, 파일 이름이 있는 파일 목록, 보안 파일 해시, 설치된 응용 프로그램이 시스템에 있고 바이너리가 시스템에 의해 수정되지 않았는지 확인하는 데 사용할 수 있는 크기가 있습니다. 제3자. 이 레이블에는 서명이 있습니다. 전자 서명발행자.

취약점이 알려지면 IT 부서는 자산 관리 소프트웨어를 사용하여 취약한 소프트웨어가 있는 시스템을 즉시 식별하고 시스템 업데이트 조치를 취할 수 있습니다. 태그는 패치가 설치되었는지 확인하는 데 사용할 수 있는 패치 또는 업데이트의 일부일 수 있습니다. 이러한 방식으로 IT 부서는 자산 관리 도구를 관리하는 수단으로 NIST National Vulnerability Database와 같은 리소스를 사용할 수 있으므로 회사에서 NVD에 취약점을 제출하면 IT 부서는 지금쯤 새로운 취약점을 즉시 자신의 취약점과 비교할 수 있습니다.

이러한 수준의 자동화를 가능하게 하는 ISO 19770-2의 표준 구현에 대해 미국 정부와 함께 IEEE/ISTO 비영리 단체인 TagVault.org(www.tagvault.org)를 통해 작업하는 회사 그룹이 있습니다. 어떤 시점에서 이 구현에 해당하는 이러한 태그는 향후 몇 년 동안 미국 정부에 판매되는 소프트웨어에 대해 의무적일 가능성이 높습니다.

따라서 결국에는 사용 중인 앱과 특정 소프트웨어 버전을 게시하지 않는 것이 좋지만 이전에 언급했듯이 어려울 수 있습니다. 정확한 최신 소프트웨어 인벤토리가 있는지, NVD의 NVID와 같은 알려진 취약점 목록과 정기적으로 비교되는지, IT 부서에서 위협을 수정하기 위한 즉각적인 조치를 취할 수 있는지 확인하고 싶습니다. 최신 검색 침입, 안티바이러스 스캐닝 및 기타 환경 차단 방법과 함께 적어도, 환경을 손상시키는 것은 매우 어려울 것이며, 손상될 경우 오랜 시간 동안 탐지되지 않습니다.

현재 소프트웨어 취약점 검색을 자동화하기 위해 많은 도구가 개발되었습니다. 이 기사에서는 그 중 일부에 대해 설명합니다.

소개

정적 코드 분석은 프로그램의 소스 코드에 대해 수행되고 연구 중인 프로그램을 실제로 실행하지 않고 구현되는 소프트웨어 분석입니다.

소프트웨어는 종종 프로그램 코드의 오류로 인해 다양한 취약점을 포함합니다. 프로그램 개발 중 오류가 발생하면 상황에 따라 프로그램이 충돌하여 프로그램의 정상적인 작동이 중단됩니다. 이 경우 데이터가 자주 변경 및 손상되고 프로그램 또는 시스템이 중지됩니다. . 대부분의 취약점은 외부에서 수신한 데이터의 잘못된 처리 또는 불충분한 검증과 관련이 있습니다.

취약점을 식별하기 위해 프로그램 소스 코드의 정적 분석기와 같은 다양한 도구가 사용되며, 이에 대한 개요는 이 기사에 나와 있습니다.

보안 취약점 분류

가능한 모든 입력 데이터에 대해 프로그램이 올바르게 작동하기 위한 요구 사항을 위반하면 소위 보안 취약성(보안 취약성)의 출현이 가능해집니다. 보안 취약점으로 인해 하나의 프로그램이 전체 시스템의 보안 한계를 극복하는 데 사용될 수 있습니다.

소프트웨어 오류에 따른 보안 취약점 분류:

  • 버퍼 오버 플로우. 이 취약점은 프로그램 실행 중 메모리의 out-of-bounds 배열에 대한 제어 부족으로 인해 발생합니다. 너무 큰 데이터 패킷이 제한된 버퍼를 넘으면 외부 메모리 셀의 내용을 덮어쓰고 프로그램이 충돌하고 충돌합니다. 프로세스 메모리에서 버퍼의 위치에 따라 스택(스택 버퍼 오버플로), 힙(힙 버퍼 오버플로) 및 정적 데이터 영역(bss 버퍼 오버플로)에서 버퍼 오버플로가 구분됩니다.
  • 취약성 "오염된 입력"(오염된 입력 취약성). 손상된 입력 취약점은 사용자 입력이 일부 외부 언어(일반적으로 Unix 셸 또는 SQL 언어)의 인터프리터에 충분한 제어 없이 전달될 때 발생할 수 있습니다. 이 경우 사용자는 실행된 인터프리터가 취약한 프로그램 작성자가 의도한 것과 완전히 다른 명령을 실행하는 방식으로 입력 데이터를 지정할 수 있습니다.
  • 실수 형식 문자열(형식 문자열 취약점). 이 유형보안 취약점은 "손상된 입력" 취약점의 하위 클래스입니다. 이는 C 표준 라이브러리의 printf, fprintf, scanf 등의 형식 I/O 함수를 사용할 때 매개변수 제어가 불충분하기 때문에 발생합니다. 이러한 함수는 후속 함수 인수에 대한 입력 또는 출력 형식을 지정하는 문자열을 매개변수 중 하나로 취합니다. 사용자가 서식 유형을 직접 설정할 수 있는 경우 이 취약점은 문자열 서식 기능의 실패로 인해 발생할 수 있습니다.
  • 동기화 오류(경합 조건)로 인한 취약점. 멀티태스킹과 관련된 문제는 "경합 조건"이라고 하는 상황으로 이어집니다. 예를 들어, 멀티태스킹 환경에서 실행되도록 설계되지 않은 프로그램은 실행할 때 사용하는 파일을 다른 프로그램에서 변경할 수 없다고 생각할 수 있습니다. 결과적으로 이러한 작업 파일의 내용을 적시에 교체하는 공격자는 프로그램이 특정 작업을 수행하도록 할 수 있습니다.

물론 나열된 보안 취약점 외에도 다른 클래스의 보안 취약점이 있습니다.

기존 분석기 개요

다음 도구는 프로그램의 보안 취약성을 감지하는 데 사용됩니다.

  • 동적 디버거. 프로그램이 실행되는 동안 디버그할 수 있는 도구입니다.
  • 정적 분석기(정적 디버거). 프로그램의 정적 분석 중에 축적된 정보를 사용하는 도구입니다.

정적 분석기는 프로그램에서 오류가 발견될 수 있는 위치를 나타냅니다. 이러한 의심스러운 코드 조각은 버그를 포함하거나 완전히 무해할 수 있습니다.

이 문서에서는 기존의 여러 정적 분석기에 대한 개요를 제공합니다. 각각에 대해 자세히 살펴보겠습니다.

경우에 따라 취약점의 발생은 다양한 출처의 개발 도구를 사용하기 때문에 발생하며 이로 인해 프로그램 코드에서 방해 행위 유형의 결함이 발생할 위험이 높아집니다.

소프트웨어에 타사 구성 요소 또는 무료 배포 코드(오픈 소스) 추가로 인해 취약점이 나타납니다. 다른 사람의 코드는 철저한 분석과 보안 테스트 없이 "있는 그대로" 사용되는 경우가 많습니다.

작성 중인 제품에 문서화되지 않은 추가 기능이나 요소를 의도적으로 도입하는 내부 프로그래머가 팀에 있다는 사실을 배제해서는 안 됩니다.

소프트웨어 취약점 분류

설계 또는 작성 단계에서 발생한 오류로 인해 취약점이 발생합니다. 프로그램 코드.

이러한 유형의 위협은 출현 단계에 따라 설계, 구현 및 구성 취약성으로 나뉩니다.

  1. 설계 오류는 감지하고 수정하기 가장 어렵습니다. 알고리즘의 부정확성, 책갈피, 서로 다른 모듈 간의 인터페이스 또는 하드웨어와 상호 작용하기 위한 프로토콜의 불일치, 차선책 기술의 도입입니다. 그것들을 제거하는 것은 매우 시간 소모적인 과정입니다. 또한 트래픽 양이 초과되거나 많은 양의 추가 장비가 연결된 경우와 같이 명확하지 않은 경우에 나타날 수 있기 때문에 필요한 수준의 제공이 복잡해집니다. 보안을 위협하고 방화벽을 우회하는 방법의 출현으로 이어집니다.
  2. 구현 취약점은 프로그램을 작성하거나 보안 알고리즘을 도입하는 단계에서 나타납니다. 이것은 계산 프로세스의 잘못된 구성, 구문 및 논리적 결함입니다. 그러나 이 결함으로 인해 버퍼 오버플로나 다른 종류의 문제가 발생할 위험이 있습니다. 그들의 발견은 오랜 시간이 걸리며 제거에는 기계 코드의 특정 부분을 수정하는 작업이 포함됩니다.
  3. 하드웨어 및 소프트웨어 구성 오류는 매우 일반적입니다. 일반적인 원인은 불충분한 품질 개발과 추가 기능의 올바른 작동을 위한 테스트 부족입니다. 또한 이 범주에 포함되는 것은 간단한 비밀번호그리고 변하지 않은 채로 남겨진 계정기본.

통계에 따르면 취약성은 데스크톱 및 모바일과 같이 널리 보급된 제품에서 가장 자주 발견됩니다. 운영체제, 브라우저.

취약한 프로그램 사용의 위험

가장 많은 취약점이 발견된 프로그램은 거의 모든 컴퓨터에 설치됩니다. 사이버 범죄자의 입장에서는 이러한 결함을 찾아 작성하는 데 직접적인 관심이 있습니다.

취약점이 발견된 순간부터 픽스(패치) 공개까지 꽤 오랜 시간이 걸리기 때문에 프로그램 코드의 보안 허점을 통해 컴퓨터 시스템을 감염시킬 수 있는 기회는 상당히 많다. 이 경우 사용자는 예를 들어 익스플로잇이 있는 악성 PDF 파일을 한 번만 열면 공격자가 데이터에 액세스할 수 있습니다.

후자의 경우 감염은 다음 알고리즘에 따라 발생합니다.

  • 사용자가 받는 이메일신뢰할 수 있는 발신자가 보낸 피싱 이메일.
  • 익스플로잇이 있는 파일은 편지에 첨부되어 있습니다.
  • 사용자가 파일을 열려고 하면 컴퓨터가 바이러스, 트로이 목마(암호화기) 또는 기타 맬웨어에 감염된 것입니다.
  • 사이버 범죄자는 시스템에 대한 무단 액세스를 얻습니다.
  • 귀중한 데이터가 도난당하고 있습니다.

다양한 회사(Kaspersky Lab, Positive Technologies)에서 수행한 연구에 따르면 바이러스 백신을 포함하여 거의 모든 애플리케이션에 취약점이 있습니다. 따라서 설정 확률은 소프트웨어, 다양한 심각도의 결함을 포함하는 매우 높습니다.

소프트웨어의 공백을 최소화하기 위해서는 SDL(Security Development Lifecycle, secure 라이프 사이클개발). SDL 기술은 애플리케이션 생성 및 지원의 모든 단계에서 애플리케이션의 버그 수를 줄이는 데 사용됩니다. 따라서 소프트웨어를 설계할 때 정보 보안 전문가와 프로그래머는 취약점을 찾기 위해 사이버 위협을 모델링합니다. 프로그래밍하는 동안 자동 도구가 프로세스에 포함되어 잠재적인 결함을 즉시 보고합니다. 개발자는 확인되지 않은 사용자가 사용할 수 있는 기능을 크게 제한하여 공격 표면을 줄이는 것을 목표로 합니다.

취약점의 영향과 그로 인한 손상을 최소화하려면 몇 가지 규칙을 따라야 합니다.

  • 응용 프로그램에 대한 개발자 릴리스 수정 사항(패치)을 빠르게 설치하거나 (바람직하게는) 활성화 자동 모드업데이트.
  • 가능하면 품질과 품질이 의심스러운 프로그램을 설치하지 마십시오. 기술적 지원질문을 제기합니다.
  • 보안 오류를 검색하고 필요한 경우 소프트웨어를 업데이트할 수 있는 특수 취약성 스캐너 또는 바이러스 백신 제품의 특수 기능을 사용합니다.

관련 출판물