AppSec은 어렵다

Jan 17 2023
프로그램도 마찬가지...
응용 보안 프로그램은 어렵습니다. 움직이는 부분이 많습니다.

응용 보안 프로그램은 어렵습니다. 움직이는 부분이 많습니다. 그러나 보안 취약성을 최소화하는 방식으로 소프트웨어를 설계, 구축 및 배포하여 잠재적인 사이버 공격으로부터 사용자와 데이터를 보호해야 합니다. 강력한 AppSec 프로그램은 보안 취약성 및 위반의 위험을 최소화하기 위해 소프트웨어 개발 프로세스 전반에 걸쳐 다양한 사례를 통합하는 포괄적인 접근 방식을 갖습니다. 이것은 결코 완전한 목록은 아니지만 범위에 대한 감각을 제공할 것입니다.

위협 모델링은 악용되기 전에 소프트웨어의 잠재적인 보안 위협 및 취약성을 식별하고 평가하는 프로세스입니다. 이는 소프트웨어의 아키텍처와 설계를 분석하고, 중요한 데이터를 식별하고, 잠재적인 공격 벡터를 식별함으로써 수행할 수 있습니다. 애자일 기반 위협 모델링은 애자일 소프트웨어 개발 원칙과 위협 모델링을 결합한 방법론입니다. 이 접근 방식을 통해 팀은 개발 프로세스 초기에 잠재적인 보안 위협과 취약성을 식별하고 해결하는 동시에 변화하는 요구 사항에 신속하게 대응할 수 있습니다.

보안 코딩은 보안 소프트웨어 개발의 또 다른 중요한 방법입니다. 여기에는 일반적인 보안 결함 및 취약성이 없는 코드 작성이 포함됩니다. 이는 OWASP 자료 와 같은 보안 코딩 지침을 사용하여 지원할 수 있습니다 . 이러한 종류의 리소스는 개발자에게 보안 코드 작성을 위한 일련의 모범 사례를 제공하고 보안 취약점으로 이어질 수 있는 일반적인 실수를 방지하는 데 도움이 됩니다.

소프트웨어 패치를 유지하는 것도 또 다른 중요한 방법입니다. 여기에는 소프트웨어 자체뿐만 아니라 타사 라이브러리 및 종속성도 포함됩니다. 이렇게 하면 알려진 보안 취약점이 적시에 해결되어 공격자의 악용 위험이 줄어듭니다.

물론 침투 테스트와 취약성 스캐닝은 소프트웨어의 보안 취약성을 식별하고 해결하는 데 사용되는 기술입니다. 이러한 기술은 소프트웨어에 대한 실제 공격을 시뮬레이션하여 개발자가 공격자에게 악용되기 전에 취약점을 식별하고 해결할 수 있도록 합니다. SCA(Software Composition Analysis), SAST(Static Application Security Testing), DAST(Dynamic Application Security Testing), IAST(Interactive Application Security Testing), MAST(Mobile Application Security Testing) 및 런타임 애플리케이션 자체 보호( RASP)를 사용하여 보안 취약성의 식별 및 수정을 자동화할 수 있습니다. 또한 API 보안은 최신 소프트웨어 개발의 중요한 측면입니다.

보안 소프트웨어 개발의 또 다른 중요한 측면은 데이터 손실 방지(DLP)입니다. DLP 솔루션은 개인 식별 정보(PII), 비밀 등과 같은 중요한 데이터의 무단 노출을 감지하고 방지하는 데 사용할 수 있습니다.

안전한 소프트웨어 개발을 위해서는 교육과 훈련도 중요합니다. 개발자를 위한 보안 챔피언 프로그램 및 교육 프로그램은 개발 팀의 모든 구성원이 보안 코드를 작성하는 데 필요한 지식과 기술을 갖도록 보장할 수 있습니다. 여기에는 가장 중요한 웹 애플리케이션 보안 위험 목록인 OWASP 상위 10개와 일반적인 소프트웨어 약점 목록인 CWE(Common Weakness Enumeration) 상위 25개를 이해하는 것이 포함됩니다.

안전한 소프트웨어 개발을 위해서는 Shift-Left 방법론과 파이프라인의 자동 게이트도 필수적입니다. 이러한 관행을 통해 개발자는 코드베이스의 일부가 되기 전에 잠재적인 취약성을 조기에 식별하고 해결할 수 있으며 도구를 CI/CD(지속적인 통합 및 전달) 파이프라인에 통합하고 이러한 도구의 결과를 얻어 프로덕션에 배포할 수 있습니다. KPI(핵심 성과 지표)를 추적할 수 있고 민첩한 작업 관리를 위해 JIRA 와 같은 것과 통합하여 잠재적인 취약성을 분류할 수 있는 곳입니다 .

Pre-commit git hooks는 안전한 소프트웨어 개발을 위한 유용한 도구이기도 합니다. 이러한 후크를 사용하여 코드가 리포지토리에 커밋되기 전에 보안이 취약한지 자동으로 확인하거나 비밀 커밋을 방지할 수 있습니다.

AppSec의 또 다른 중요한 측면은 취약성을 분류하는 것입니다. 이것은 심각도와 잠재적인 영향을 기반으로 취약성을 식별하고 우선 순위를 지정하는 프로세스입니다. 이 접근 방식을 통해 조직은 가장 심각한 취약점에 리소스를 집중하고 적시에 해결할 수 있습니다. 취약성을 분류할 때 악용 가능성, 잠재적 영향 및 악용 용이성과 같은 요소가 고려됩니다. 경우에 따라 패치 적용이 최선의 조치가 아닐 수 있으며 모니터링, 네트워크 분할 및 액세스 제어와 같은 대안을 고려할 수 있습니다.

강력한 AppSec 프로그램을 관리하려면 올바른 도구와 플랫폼을 갖추는 것이 중요합니다. 일부 인기 있는 옵션에는 가시성을 확보하고 도구, 인력 및 프로세스를 조정하기 위한 Esno가 포함됩니다. Checkmarx 및 Veracode는 정적 및 동적 스캐닝을 위한 많은 기능 범위를 제공하고 Snyk 는 오픈 소스 보안 기능으로 평판이 좋으며 전체 플랫폼은 사용 편의성과 개발자 중심성으로 사랑받고 있지만 Black Duck 은 SCA에서 강한 평판을 얻습니다. Invicti 는 IAST에 적합하고 Wiz 는 CSPM에 인기를 얻고 있습니다. 컨테이너 보안을 위한 Aqua는 검증된 SpectralOps 입니다.DLP, API 보안을 위한 NoName Security 또는 Salt , 모바일 AppSec을 위한 NowSecure , 위협 모델링을 위한 Irius Risk 또는 보다 자동화된 위협 모델링 및 상태 관리 접근을 위한 Bionic . 미지의 것을 테스트하고 취약성을 찾으려고 시도하는 일종의 동적 행동 기반 테스트인 퍼징도 있습니다. 이 공간에서 플랫폼의 매우 현대적인 예는 Mayhem 입니다 .

오픈 소스 및 타사 위험을 계속 추적하려면 소프트웨어 재료 명세서(SBOM)를 유지하는 것도 중요합니다. 이러한 도구 중 일부는 이를 생성할 수 있습니다(Veracode, Black Duck 등).

일부는 이것을 AppSec 프로그램의 일부라고 생각하지 않을 수도 있지만 저는 Deception Engineering 기술이 공격자의 리소스를 낭비하고 더 쉽고 저렴한 대상으로 이동하도록 하는 것을 목표로 하는 더 큰 제품 보안 프로그램의 일부여야 한다고 생각합니다. 이 공간의 최첨단 사례는 CounterCraft입니다. 스테로이드에 대한 허니팟 기술을 생각하십시오.

또한 안전한 소프트웨어 개발을 위해서는 훈련과 교육이 필수적입니다. 보안 코드 검토 교육 옵션에는 Secure Code Warrior , Security Journey , Immersive Labs 및 Avatao 가 포함됩니다 . VDP(취약점 공개 프로그램)는 HackerOne 과 같은 플랫폼을 통해 관리할 수 있으며 Bug Bounty 프로그램은 Intigriti와 같은 플랫폼을 통해 설정 및 관리할 수 있습니다 .

코드로서의 정책의 역할, 게이트를 완전히 자동화하는 방법, 고도로 규제된 상황에서 승인 워크플로가 작동하는 방법과 같이 더 많은 정보를 얻을 수 있지만 지금은 여기에서 그대로 두어야 합니다.

요약하면 보안 소프트웨어 개발에는 소프트웨어 개발 프로세스 전체에서 위에서 언급한 모든 방법을 통합하는 포괄적이고 다면적인 접근 방식이 필요합니다. 그렇게 함으로써 개발자는 사용자와 데이터의 안전과 보안을 보장하고 강력하고 안정적이며 안전한 소프트웨어를 만들 수 있습니다. 보안 환경은 끊임없이 변화하고 있으므로 이를 따라잡기 위해서는 지속적인 검토와 연구가 필요합니다.