5G, 클라우드 컴퓨팅, 인공지능, 빅 데이터, 블록 체인 등의 기술이 급속히 발전하면서 디지털 변환 과정이 점차 추진되고 있으며, 소프트웨어는 일상적인 생산 생활에 없어서는 안 될 요소 중 하나가 되어 다양한 산업과 분야에 침투하고 있습니다. 컨테이너, 미들웨어, 마이크로서비스 등의 기술의 진화는 소프트웨어 산업의 급속한 발전을 촉진하면서 소프트웨어 설계 개발의 복잡성 증가, 소프트웨어 공급망의 복잡성 증가, 전체 링크 보안 보호의 어려움이 커지고 있습니다. 최근 몇 년 동안 소프트웨어 공급망 보안 사건이 빈번하게 발생하여 사용자의 프라이버시, 재산안전, 심지어 국가안보에 큰 위협이 되고 있습니다. 자동화 보안 도구는 소프트웨어 공급망 보안을 보호하는 데 필요한 수단 중 하나입니다. 소프트웨어 공급망 및 도구의 보안을 연구하는 것은 국가 네트워크 공간 보안 유지, 사용자 개인 정보 보호 및 재산 보안 유지에 큰 역할을 합니다.
첫째, 소프트웨어 공급망 보안 개요
소프트웨어 공급망의 정의는 전통적인 공급망의 개념에서 확장되었다. 업계에서는 일반적으로 소프트웨어 공급망이 소프트웨어 설계 및 개발의 하나 이상의 단계를 통해 소프트웨어를 컴파일하고 소프트웨어 공급 채널을 통해 소프트웨어 공급자로부터 소프트웨어 사용자로 소프트웨어를 전송하는 시스템을 가리킨다고 생각합니다. 소프트웨어 공급망의 보안이란 공급망 상류의 코딩 프로세스, 도구, 장비 또는 코드, 모듈 및 서비스 보안, 소프트웨어 공급망의 소프트웨어 설계 및 개발 단계에서 소프트웨어 제공 채널의 보안을 말합니다. 소프트웨어 공급망 공격은 저비용, 고효율 특성을 가지고 있습니다. 정의에 따르면 소프트웨어 자체의 보안 취약점에 대한 기존의 공격에 비해 소프트웨어 공급망에 대한 공격은 소프트웨어 자체에서 소프트웨어 자체 내부의 모든 코드, 모듈 및 서비스, 이러한 모듈 및 서비스와 관련된 공급망 업스트림 공급업체의 코딩 프로세스, 개발 도구 및 장비에 이르기까지 공격자의 공격 난이도를 크게 줄였습니다. 동시에 소프트웨어 설계 및 개발로 인한 모든 보안 문제는 공급망의 모든 다운스트림 소프트웨어의 보안에 직접적인 영향을 미치고 공격의 영향을 확대할 수 있습니다.
최근 몇 년 동안 소프트웨어 자체의 보안 방어가 지속적으로 강화되면서 공격자는 대상 소프트웨어에서 소프트웨어 공급망의 가장 약한 부분으로 공격 목표를 이전하여 소프트웨어 공급망 보안 사건이 빈번하게 발생하여 사용자 개인 정보 보호, 재산 보안 및 국가 안보에 큰 위협이 되고 있습니다. 가장 전형적인 예는 2020 년 6 월 5438+2 월 미국 네트워크 보안 관리 소프트웨어 공급업체 네트워크 보안 관리 소프트웨어 제품이 국가 APT 조직의 고도로 복잡한 공급망 공격을 받아 미국 핵심 인프라, 군대, 정부를 포함한 18000 이상의 고객에게 직접적인 영향을 미쳤다는 것입니다.
소프트웨어 공급망의 보안 영향은 크며, 각국은 매우 중시하며, 잇달아 정책 법규를 실시하여 소프트웨어 공급망의 안전을 촉진한다. 202 1 05 월1 같은 해 7 월 미국 국가 표준과 기술 (NIST) 은 개발자 소프트웨어 검증 최소 표준 가이드를 발표했다. 소프트웨어 공급망의 보안을 강화하기 위해 자동 일관성 테스트, 수동 테스트 최소화, 정적 코드 분석을 통한 중요한 취약점 파악, 포함 코드 (라이브러리, 패키지, 서비스) 해결 등 소프트웨어 검증을 위한 1 1 권장 사항을 명확하게 제시했습니다.
중국도 소프트웨어 공급망의 안전을 중시한다. 2065438+2007 년 6 월, 중국은 소프트웨어 제품 테스트, 제공 및 기술 지원 과정에서 공급망 보안 위험에 초점을 맞춘' 네트워크 제품 및 서비스 보안 검토 방법' 을 발표했습니다. 20 19 12 1 "정보 보안 기술 네트워크 보안 수준 보호 기본 요구 사항" 버전 2.0 이 공식적으로 구현되어 일반 요구 사항 및 클라우드 컴퓨팅 확장에서 서비스 공급업체 및 공급망 관리를 명시적으로 선택해야 합니다.
둘째, 소프트웨어 공급망 보안 과제
현재 소프트웨어 공급망의 보안은 매우 중시되고 있지만, 여전히 여러 가지 현실적인 과제에 직면해 있으며, 다음과 같은 다섯 가지 범주로 요약할 수 있습니다.
1. 소프트웨어 설계와 개발의 복잡성은 이미 필연적인 추세가 되었다.
컨테이너, 미들웨어, 마이크로서비스 등 신기술이 발전함에 따라 소프트웨어 산업이 급속히 발전하면서 소프트웨어 기능 및 성능에 대한 요구도 높아지고 있습니다. 소프트웨어 설계와 개발의 복잡화는 이미 필연적인 추세가 되었다. 이와 함께 소프트웨어 설계, 개발 및 유지 관리의 어려움이 급격히 증가하면서 설계 및 개발 과정에서 보안 취약점이 생겨 소프트웨어 공급망 보안에 숨겨진 위험을 초래할 수밖에 없습니다.
오픈 소스는 주류 개발 모델이되었습니다.
현재 오픈 소스는 이미 주류 개발 모델 중 하나가 되었다. 소프트웨어의 소스 코드는 대부분 혼합 소스 코드이며, 기업이 자체 개발한 소스 코드와 오픈 소스 코드로 구성됩니다. 202 1 오픈 소스 보안 및 위험 분석' 보고서에 따르면 최근 5 년간 오픈 소스 코드의 애플리케이션 비중이 40% 에서 70% 이상으로 상승했다. 오픈 소스의 도입은 소프트웨어 개발의 효율성을 가속화했지만 오픈 소스 소프트웨어의 보안 문제도 소프트웨어 공급망에 도입하여 소프트웨어 공급망 보안 문제의 다양성을 야기했습니다.
신속한 배송이 최우선 과제입니다.
업계 경쟁 환경이 치열하기 때문에 보안에 비해 기능의 빠른 구현으로 소프트웨어의 신속한 제공이 여전히 1 위를 차지하고 있습니다. 소프트웨어는 일반적으로 인증, 암호화 해독, 로그 보안 감사 등 보안의 기본 기능 요구 사항을 충족하지만 , 전반적인 안전 보호 메커니즘은 상대적으로 뒤떨어져 있으며, 사후 보호가 지배적이다. 자체 보안의 초기 동기화 건설은 종종 간과되고, 소프트웨어 자체의 보안 취약점의 조기 제거에도 짧은 판이 존재한다.
소프트웨어 제공 메커니즘은 보안 위험에 직면 해 있습니다.
소프트웨어 제공은 소프트웨어가 소프트웨어 공급업체에서 소프트웨어 사용자로 이전되는 프로세스입니다. 기존 소프트웨어 제공은 CD-ROM 및 기타 스토리지 장치를 기반으로 합니다. 인터넷과 같은 기술이 발달하면서 인터넷을 통한 빠른 배포 소프트웨어가 기본 모델이 되면서 안전하지 않은 배포 채널도 소프트웨어 공급망의 보안에 큰 영향을 미칠 수 있습니다.
5. 소프트웨어 패치 사이트 공격 시 사용
소프트웨어 공급망 보안의 경우, 소프트웨어 수명 주기는 소프트웨어 제공 후 끝나는 것이 아니라 소프트웨어가 다운될 때까지 계속됩니다. 보안 결함은 소프트웨어 설계 및 개발 과정에서 불가피하며 패치 배포 및 배포는 소프트웨어 결함 및 취약점을 복구하는 가장 일반적인 방법입니다. 소프트웨어 패치의 배포 및 배포도 배포 채널의 영향을 받으며, 오염된 패치 다운로드 사이트도 소프트웨어 공급망의 보안 문제를 야기합니다.
셋째, 소프트웨어 공급망 보안 도구
소프트웨어 공급망의 보안에는 많은 요소와 링크가 포함됩니다. 참조 업계에서 흔히 볼 수 있는 구분으로, 소프트웨어 공급망의 링크는 개발, 전달, 사용의 세 부분으로 추상화될 수 있습니다. 배송과 사용의 안전보호는 주로 배송장소와 전송 채널의 안전을 보장함으로써 이뤄진다. 개발 프로세스는 소프트웨어 소스 코드와 밀접하게 관련되어 있으며 코딩 프로세스, 도구, 장비 및 공급망 상류의 코드, 모듈 및 서비스 보안을 포함하여 보안이 복잡합니다. 소프트웨어 생산 프로세스의 도구 및 소프트웨어 공급망 관리 도구를 포함한 네 가지 유형의 보안 도구가 포함됩니다.
1. 정적 어플리케이션 보안 테스트 도구
정적 응용 프로그램 보안 테스트 (static application security testing, SAST) 는 프로그램 자체를 실행하지 않고 소스 프로그램의 구문, 구조, 프로세스 및 인터페이스만 분석하거나 검사하여 프로그램의 정확성을 확인하는 것을 의미합니다. 소스 코드 정적 분석 기술의 발전은 컴파일 기술 및 컴퓨터 하드웨어 장비의 발전과 밀접한 관련이 있습니다. 소스 코드의 보안 분석 기술은 대부분 컴파일 기술이나 프로그램 검증 기술을 기반으로 합니다. 이 기술을 사용하면 코드의 보안 결함 및 보안 규칙 위반을 자동으로 찾을 수 있습니다. 현재 주류 분석 기술은 (1) 어휘 분석 기술로, 코드의 텍스트 또는 토큰 흐름만 알려진 요약 결함 패턴과 일치시키고 코드의 의미와 코드 컨텍스트를 심층적으로 분석하지 않습니다. 어휘 분석 검사 효율이 높지만, 단순한 결함만 발견할 수 있고, 오보율이 높다. (2) 추상 해석 기술은 코드에 오류가 없음을 증명하는 데 사용되지만 보고된 오류의 진실성을 보장하지는 않습니다. 이 기술의 기본 원칙은 프로그램 변수의 값을 더 간단한 추상 도메인에 매핑하여 프로그램 실행을 시뮬레이션하는 것입니다. 따라서 이 기술의 정확성과 성능은 실제 프로그램 값 필드에 대한 추상 도메인의 근사화에 따라 달라집니다. (3) 프로그램 시뮬레이션 기술, 시뮬레이션 프로그램 실행은 모든 실행 상태를 얻고 분석 결과는 더욱 정확합니다. 논리가 복잡하고 트리거 조건이 까다로운 결함을 찾는 데 주로 사용되지만 성능을 향상시키기는 어렵다. 주로 모델 검사와 기호 실행의 두 가지 기술로 구성됩니다. 모델 검사는 소프트웨어를 상태 머신 또는 직접 그래프와 같은 추상 모델로 구성하고, 모달/시제 논리 공식과 같은 형식 표현식을 사용하여 보안 속성을 설명하고, 모델을 반복하여 이러한 속성이 충족되는지 확인합니다. 기호 실행은 프로그램 변수 값을 기호 값으로 나타내고, 에뮬레이터 실행은 취약성 탐지 규칙을 준수하는 상황을 찾습니다. (4) 정리 증명 기술, 프로그램 오류의 전제 조건 및 프로그램 자체를 논리 표현식 세트로 설명한 다음 만족 이론을 기반으로 제약 해결자를 사용하여 프로그램 오류를 일으킬 수 있는 실행 경로를 찾습니다. 이 방법은 유연하여 논리 공식을 사용하여 소프트웨어 결함을 쉽게 설명하고 분석 성능 및 정밀도에 따라 제약 조건을 조정할 수 있으며 대규모 산업 소프트웨어 분석에 효과적입니다. (5) 흐름 분석 기술은 제어 흐름 그래프를 기반으로 제어 흐름 그래프의 각 명령을 특정 방식으로 스캔하여 명령 동작을 이해하여 프로그램의 위협 취약점을 판단합니다. 데이터 흐름 분석의 일반적인 방법은 제어 흐름 그래프에서 방정식 세트를 정의하고 반복적으로 해결하는 것입니다. 일반적으로 순방향 전파와 역방향 전파로 나뉩니다. 순방향 전파는 제어 흐름 경로를 따라 상태가 앞으로 전달되고 이전 블록의 값이 다음 블록으로 전달되는 것을 의미합니다. 역방향 전파는 후속 블록의 값이 제어 흐름 경로를 반대로 이전 블록으로 다시 전송됨을 의미합니다.
2. 안전 테스트 도구의 동적 적용
동적 응용 보안 테스트 (DAST) 기술은 테스트 또는 런타임 시 응용 프로그램의 동적 작동 상태를 분석합니다. 해커가 응용 프로그램을 동적으로 공격하는 동작을 시뮬레이션하고 응용 프로그램의 반응을 분석하여 응용 프로그램이 공격에 취약한지 여부를 판단합니다. 웹 사이트 테스트를 예로 들어 동적 애플리케이션 보안 테스트를 소개합니다. 주로 (1) 정보 수집의 세 가지 측면을 다룹니다. 테스트가 시작되기 전에 정적 리소스와 동적 인터페이스를 포함하여 테스트할 웹 사이트의 모든 URL 을 수집합니다. 각 URL 에는 경로와 전체 매개변수 정보가 포함되어야 합니다. (2) 테스트 절차. 테스터는 테스트에 필요한 URL 목록을 테스트 도구로 가져옵니다. 테스트 툴은 테스터가 테스트 계획에 따라 다른 위험 테스트 항목을 선택할 수 있는' 위험 항목 검색' 선택 목록을 제공합니다. 테스트 중 테스트 도구는 대상 웹 사이트에 액세스하는 속도를 제어하여 대상 웹 사이트가 동시 요청 수가 너무 많아 느려지거나 충돌하지 않도록 합니다. 테스터는 테스트 작업에 대한 기본 정보를 설정할 때 대상 웹 사이트의 성능에 따라 초당 요청 최대 값을 채웁니다. 테스트 툴은 테스트 중 초당 전송되는 총 요청 수가 이 값을 초과하지 않도록 합니다. (3) 테스트 보고서. 보안 테스트의 모든 단계가 완료되면 테스트 보고서를 출력합니다. 테스트 보고서에는 일반적으로 테스트 과정에서 생성된 다양한 데이터를 기준으로 대상 웹 사이트 보안에 대한 요약 결론을 출력하는 개요 페이지가 포함됩니다. 테스트 중 발견된 총 취약성 수 및 다양한 보안 수준 차원의 취약성 데이터
3. 안전 테스트 도구의 대화식 적용
대화형 애플리케이션 보안 테스트 (IAST) 는 요청 및 런타임 컨텍스트에 대한 포괄적인 분석을 기반으로 플러그인 기술을 통해 보안 결함 및 취약점을 효율적이고 정확하게 식별하고 보안 결함 및 취약점에 대한 코드 위치를 파악합니다. 트래픽 수집, 에이전트 모니터링 및 대화형 스캔이라는 세 가지 영역에서 주로 작동합니다. (1) 트래픽 수집은 애플리케이션 테스트 중 HTTP/HTTPS 요청 트래픽의 수집으로 에이전트 계층이나 서버 에이전트를 통해 수집할 수 있습니다. 수집된 트래픽은 테스터가 제출한 승인 정보가 있는 유효한 데이터로, 기존 스캔에서 테스트 대상의 권한 문제와 다단계 문제로 인한 잘못된 스캔을 최소화할 수 있습니다. 또한 트래픽 수집은 파충류의 기능을 보존하여 대상 파충류 크롤링 실패로 인한 스캔 누수 문제를 방지합니다. (2) 에이전트 모니터링은 웹 서버에 배포된 에이전트로, 일반적으로 웹 서비스 프로그래밍 언어의 확장입니다. 에이전트는 SQL 쿼리 함수, 명령 실행 함수, 코드 실행 함수, 디직렬화 함수, 파일 조작 함수, 네트워크 조작 함수, XML 구문 분석 함수 및 취약점 활용을 트리거할 수 있는 기타 민감한 함수를 포함하여 모니터링 웹 애플리케이션 프로그래밍 실행 중 함수 실행을 확장합니다. (3) 대화형 스캔은 웹 응용 프로그램 취약성 스캐너가 에이전트 모니터링의 도움을 받아 소량의 수집된 요청 트래픽만 재생하면 재생 시 웹 응용 프로그램 취약점 감지를 완료할 수 있음을 의미합니다. 예를 들어 SQL 주입 취약점을 감지할 때 단일 매개변수 감지, 잘 알려진 오픈 소스 SQL 주입 감지 프로그램 SQLMAP 는 수천 개의 HTTP 요청 패킷을 보내야 합니다. 대화형 검색에서는 하나의 scanner 태그만 사용하여 요청을 재생할 수 있습니다. 에이전트는 SQL 쿼리 함수에서 scanner 태그를 모니터링하여 취약점이 있는지 여부를 확인할 수 있으므로 검색 패키지를 크게 줄일 수 있습니다.
4. 소프트웨어 구성 분석
(SCA) 는 주로 오픈 소스 구성 요소를 대상으로 하며, 식별을 스캔하고, 구성 요소의 보안 취약성 정보, 라이센스 등의 정보를 얻고, 보안 및 법적 규정 위험을 방지할 수 있습니다. 현재 5 가지 오픈 소스 스캐닝 기술이 있습니다. (1) 소스 코드 조각을 비교하여 구성 요소 및 라이센스 유형을 식별합니다. (2) 파일 레벨에서 해시 값을 추출하고, 파일 레벨 해시 값을 비교하고, 모든 파일의 해시 값이 성공적으로 일치하면 오픈 소스 구성 요소를 식별합니다. (3) 패키지 구성 파일을 스캔하여 정보를 읽고 구성 요소를 식별하여 구성 요소 및 라이센스 유형을 식별합니다. (4) 오픈 소스 프로젝트의 파일 디렉토리 및 구조를 분석하고 오픈 소스 구성 요소의 경로 및 종속성을 분석합니다. (5) 오픈 소스 프로젝트를 컴파일하고 컴파일된 오픈 소스 프로젝트의 의존성을 분석하여 오픈 소스 프로젝트에 사용된 오픈 소스 구성 요소에 대한 정보를 식별할 수 있습니다.
넷째, 소프트웨어 공급망 보안 연구 제안
1. 소프트웨어 보안 도구 관련 기술 개발.
소프트웨어 공급망의 보안은 보안 도구의 개발과 사용과 불가분의 관계에 있다. 소프트웨어 보안 도구 기술을 적극적으로 개발하고, 보안 개발의 어려운 요구 사항을 해결하고, 보안 예약을 수행하며, 보안 조치를 소프트웨어 설계 개발과 동시에 추진합니다.
2. 소프트웨어 공급망에서 보안 이벤트를 보호, 감지 및 응답할 수 있는 능력을 향상시킵니다.
소프트웨어 공급망의 안전은 사전, 일, 사후 전방위적인 안전방어 체계를 필요로 한다. 소프트웨어 공급망의 보안 공격은 은폐성이 높고 전파성이 강하며 영향이 깊은 특징을 가지고 있다. 복잡하고 방대한 시스템으로서, 소프트웨어 공급망에는 불가피하게 취약한 노드가 존재한다. 따라서 보안 이벤트의 중대한 영향을 피하기 위해 소프트웨어 공급망에서 보안 공격을 보호, 감지 및 응답할 수 있는 능력을 높여야 합니다.
3. 소프트웨어 공급망 보안 관련 표준 시스템을 수립하고 개선합니다.
과학 연구 기관 및 표준 기관을 통해 소프트웨어 공급망 보안 표준 시스템을 개선하고, 소프트웨어 공급망 보안 의식을 보급하며, 소프트웨어 공급망 보안에 대한 기업 조직의 중시를 높이고, 소프트웨어 공급망 보안에 투자하고, 보안 구축을 촉진합니다.
안전하고 신뢰할 수있는 소프트웨어 공급망 생태계를 구축하십시오.
소프트웨어 공급망의 안전을 실현하려면 각 분야 기업의 공동 노력이 필요하다. 기업 * * * 은 안전하고 신뢰할 수 있는 생태계를 구축하여 사용자, 업종, 시나리오의 요구 사항을 충족하고 업계 전체 소프트웨어 공급망의 보안 수준을 높입니다.
(이 기사는 "중국 정보 보안" 잡지, 10 호, 202 1) 에 발표되었습니다.