애플리케이션 보안(AppSec)은 전체 수명 주기에 걸쳐 애플리케이션 내의 취약성을 탐지하고 완화하는 관행입니다. 여기에는 보안 문제를 찾아 해결하는 것뿐만 아니라 예상되는 응용 프로그램 동작, 관련 위협 모델 및 응용 프로그램 구성 요소, 구성 및 기능과 관련된 위험에 대한 심층적인 이해가 포함됩니다.
시간이 지남에 따라 사이버 보안은 경계 방어에만 집중하는 것에서 애플리케이션 보안을 우선시하는 것으로 바뀌었습니다. 이러한 변화는 애플리케이션을 대상으로 하는 새로운 위협이 공격 표면을 줄이기 위해 정교한 방법을 어떻게 요구하는지 보여줍니다.
일반적인 위협에 대해 자세히 알아보려면 계속 읽으십시오. OWASP 상위 10개 취약점, 그리고 위반의 실제 사례. 또한 응용 프로그램 보안, 도구 및 기술을 강화하기 위한 모범 사례에 대해서도 설명합니다. 시작하자.
The Secure Coding Best Practices [Cheat Sheet]
With curated insights and easy-to-follow code snippets, this 11-page cheat sheet simplifies complex security concepts, empowering every developer to build secure, reliable applications.
Download Cheat SheetDevSecOps: DevOps와 보안 통합
AppSec의 가장 큰 트렌드 중 하나는 시프트 레프트(shift-left) 움직임입니다. "좌회전" 퍼팅을 의미합니다. 보안 코딩 사례 소프트웨어 개발 수명 주기(SDLC)의 시작 부분에 배치됩니다. 개발의 각 단계를 살펴보는 방법은 다음과 같습니다.
Development Phase | Strategies for shifting left |
---|---|
Design | Evaluate risks and incorporate security measures |
Development | Follow secure coding standards; carry out exhaustive testing before deployment |
Deployment and beyond | Continuously monitor applications; keep up with patches and updates |
하루가 끝나면 DevOps를 데브섹옵스(DevSecOps) 왼쪽으로 변속할 수 있습니다. DevSecOps 프레임워크를 사용하면 모든 팀원이 보안에 대한 책임을 공유할 수 있습니다. DevSecOps는 지속적인 모니터링, 빈번한 테스트, 신속한 취약성 수정을 장려함으로써 개발자가 위험을 소유하고 보안에 대한 책임을 질 수 있는 문화를 기업에 제공합니다.
애플리케이션 보안에서 OWASP의 역할
OWASP(Open Web Application Security Project)는 애플리케이션 보안을 개선하는 데 중요한 역할을 하는 세계적으로 인정받는 비영리 조직입니다. 가장 주목할 만한 기여인 OWASP Top Ten Web Application Security Risks는 가장 중요한 웹 애플리케이션 보안 위험을 간략하게 설명하고 이러한 취약성을 완화하여 애플리케이션을 보호하는 방법에 대한 지침을 제공합니다.
OWASP에서 강조한 주요 위협과 그 영향은 다음과 같습니다.]
깨진 액세스 제어: 공격자는 액세스 제어 메커니즘의 결함을 악용하여 데이터 보기, 수정 또는 삭제와 같은 무단 작업을 수행합니다. 이를 완화하려면 최소 권한 원칙을 적용하고, 사용자 역할의 유효성을 엄격하게 검사하고, 액세스 제어 정책을 정기적으로 테스트합니다. DAST(Dynamic Application Security Testing)와 같은 도구는 테스트 중에 이러한 문제를 식별하는 데 도움이 될 수 있습니다.
암호화 실패: 일반 텍스트 암호 또는 취약한 암호화와 같은 민감한 데이터에 대한 보호가 충분하지 않으면 위반으로 이어질 수 있습니다. 강력한 최신 암호화 알고리즘을 사용하고, 키를 안전하게 관리하고, 전송 중 및 저장 중인 데이터가 암호화되도록 합니다. 암호화 검사를 CI/CD 파이프라인에 통합하면 구성 결함을 조기에 포착할 수 있습니다.
인젝션 공격(예: SQL 인젝션): 공격자는 입력 필드에 악성 코드를 삽입하거나 중요한 데이터를 노출하거나 변경하여 쿼리를 조작합니다. 매개 변수가 있는 쿼리와 준비된 문을 사용하여 삽입 공격으로부터 보호합니다. 최신 CI/CD 파이프라인은 SAST 도구를 활용하여 개발 프로세스 초기에 취약성을 감지할 수 있습니다.
안전하지 않은 디자인: 보안 설계가 불량한 애플리케이션은 구현 품질에 관계없이 공격에 취약합니다. 보안 설계 원칙을 채택하고, 위협 모델링을 수행하고, 보안 고려 사항이 설계 단계 초기에 포함되도록 합니다. 아키텍처 검토는 개발을 시작하기 전에 불안정한 패턴을 강조할 수 있습니다.
잘못된 보안 구성: 올바르지 않거나 과도하게 허용적인 설정(예: 열린 클라우드 버킷 또는 불필요한 기능)은 악용될 수 있는 격차를 만듭니다. 구성을 정기적으로 검토 및 강화하고, 보안 기본값을 적용하고, 구성 감사를 자동화합니다. 구성 스캐너와 같은 도구는 지속적인 모니터링을 제공할 수 있습니다.
취약하고 오래된 구성 요소: 알려진 취약성이 있는 오래된 라이브러리 또는 프레임워크는 공격자에게 진입점을 제공합니다. 쓰다 소프트웨어 구성 분석(SCA) 종속성을 추적하고, 구성 요소를 즉시 업데이트하고, 사용하지 않는 라이브러리를 제거하는 도구입니다. 보안 권고를 모니터링하기 위한 강력한 프로세스를 유지 관리합니다.
식별 및 인증 실패: 잘못 구현된 암호 정책과 같은 취약한 인증 메커니즘으로 인해 무단 액세스가 발생할 수 있습니다. 다단계 인증(MFA)을 구현하고, 세션 관리를 보호하고, 강력한 암호 요구 사항을 적용합니다. 인증 흐름을 정기적으로 테스트하면 약점을 식별할 수 있습니다.
소프트웨어 및 데이터 무결성 실패: 확인되지 않은 업데이트나 손상된 소프트웨어 공급망으로 인해 악성 코드가 유입될 수 있습니다. 코드 서명을 사용하여 소프트웨어 무결성을 확인하고, 종속성 검사를 수행하고, CI/CD 파이프라인을 보호하여 변조를 방지합니다. 예기치 않은 변경에 대해 중요한 구성 요소를 정기적으로 감사합니다.
보안 로깅 및 모니터링 실패: 불충분한 로깅 및 모니터링으로 인해 실시간 공격을 탐지하고 대응하기 어렵습니다. 포괄적인 로깅 방법을 구현하고, 로그를 안전하게 저장하고, 비정상적인 활동에 대한 경고를 구성합니다. 자동화된 로그 분석 도구는 탐지 기능을 향상시킬 수 있습니다.
서버 측 요청 위조(SSRF): 공격자는 서버를 속여 악성 URL을 가져오도록 하여 내부 시스템을 노출시킬 수 있습니다. 사용자가 제공한 모든 URL을 검증 및 삭제하고, 발신 요청에 대한 허용 목록을 적용하고, 중요한 리소스에 대한 네트워크 액세스를 제한합니다. 보안 게이트웨이를 통해 모든 외부 요청을 프록시하면 추가 방어 계층이 추가될 수 있습니다.
실제 사례 및 교훈
중대한 위반 사항
에퀴팩스 (2017): Apache Struts의 패치 누락으로 1억 4,700만 명의 민감한 데이터가 노출되었고, Equifax는 최대 7억 달러의 벌금.
메리어트 (2018): 취약한 암호화 및 세분화를 통해 공격자는 5억 개의 고객 레코드에 액세스할 수 있었습니다., 여권 번호 포함.
캐피탈 원 (2019): 잘못 구성된 웹 애플리케이션 방화벽(WAF)으로 인해 위협 행위자가 1억 600만 명의 PII에 액세스할 수 있었습니다.여기에는 은행 계좌 번호, 사회 보장 번호 및 신용 점수가 포함됩니다.
솔라윈즈(2020): 공격자는 SolarWinds를 손상시켰습니다.' 빌드 환경, 로 이어지는 "미국이 겪은 최악의 사이버 스파이 캠페인 중 하나.”
로그4j(2021): 의 취약점 Log4j는 심각한 RCE 위협이 되었습니다., 믿을 수 없을 정도로 많은 웹사이트, 앱 및 서비스에 영향을 미칩니다.
보안 위반에서 배운 모범 사례
주요 보안 침해는 모두 강화에 집중해야 하는 동일한 중요한 영역을 가리킵니다.
패치 및 업데이트: 시기적절한 업그레이드는 알려진 취약점이 악용되는 것을 방지하는 유일한 방법입니다. 강력한 패치 관리 정책을 수립하고 소프트웨어의 최신 인벤토리를 유지 관리하여 어떤 구성 요소도 간과되지 않도록 하며, 배포 전에 통제된 환경에서 주요 변경 사항에 대해 패치를 정기적으로 테스트합니다.
인증 및 권한 부여: 강력한 보안 구성 및 액세스 제어 조치를 구현하면 무단 액세스 및 악용의 위험을 크게 줄일 수 있습니다. 여기에는 최소 권한 원칙을 적용하고, 액세스 권한에 대한 정기적인 감사를 수행하고, 다단계 인증(MFA) 사용이 포함됩니다. 자동화된 구성 관리 도구는 모든 환경에서 보안 기준을 유지하는 데 도움이 될 수 있습니다.
공급망 보안: 타사 구성 요소의 취약성은 조직의 전체 시스템을 손상시킬 수 있습니다. 자신을 안전하게 보호하려면 공급업체 조사에 대한 실사, 타사 구성 요소에 대한 지속적인 모니터링 및 통합을 포함하는 포괄적인 접근 방식을 채택하십시오 소프트웨어 개발 라이프사이클(SDLC)에 대한 보안 관행.
암호화 및 데이터 보호: 효과적인 데이터 암호화 및 세분화는 침해가 발생하더라도 무단 액세스를 방지할 수 있습니다. 저장 및 전송 중인 민감한 데이터 암호화의 우선 순위를 지정하고, 암호화 프로토콜을 정기적으로 업데이트하고, 별도의 데이터 환경을 유지 관리하여 노출을 제한합니다.
클라우드 보안 및 구성 관리: 클라우드 인프라에 대한 의존도가 높아짐에 따라 적절한 클라우드 보안 관행(예: 보안 구성 설정, 정기 검토 및 자동화된 보안 태세 관리)은 타협할 수 없습니다.
취약성 관리: 포괄적인 취약성 관리 프로그램에는 정기적인 취약성 검사, 추적 및 수정이 포함되어야 합니다. 오픈 소스 및 타사 구성 요소에서 새로 발견된 취약성을 신속하게 식별하고 대응하는 것이 중요합니다.
인시던트 대응 준비: 보안 위반을 탐지, 억제 및 완화하기 위한 신속한 대응 계획을 수립합니다. 대비를 유지하는 가장 좋은 방법은 정기적인 인시던트 대응 훈련을 실시하고 팀을 위한 정기적인 교육 세션의 우선 순위를 지정하는 것입니다.
안전한 코딩 방법: 개발 중에 취약점이 도입되지 않도록 확립된 코딩 지침을 준수합니다.
CI/CD Pipeline Security Best Practices [Cheat Sheet]
In this 13 page cheat sheet we'll cover best practices in the following areas of the CI/CD pipeline: Infrastructure security, code security, secrets management, access and authentication, monitoring and response
Download Cheat Sheet응용 프로그램 보안을 위한 도구 및 기술
모범 사례 외에도 다음을 포함하여 응용 프로그램 보안 작업을 지원하는 다양한 도구와 테스트 방법이 있습니다.
정적 애플리케이션 보안 테스트(SAST): 이 기술은 소스 코드 또는 바이너리 코드를 분석하여 개발 주기 초기에 취약점을 식별합니다.
동적 애플리케이션 보안 테스트(DAST): SAST와 달리 다스트 소스 코드에 액세스하지 않고 실행 중인 응용 프로그램을 테스트합니다. 이 블랙박스 테스트 접근 방식은 실제 공격을 시뮬레이션합니다.
응용 프로그램 탐지 및 대응(ADR): 증권 시세 표시기 실시간 애플리케이션을 모니터링하여 런타임 중에 위협과 이상 징후를 감지합니다. 프로덕션에서 활성 익스플로잇 또는 악의적인 활동을 식별하고 이에 대응하여 동적 위험 완화 및 운영 상태의 애플리케이션에 대한 지속적인 보호를 보장하는 데 중점을 둡니다.
소프트웨어 구성 분석(SCA): SCA 도구 응용 프로그램에 사용되는 타사 및 오픈 소스 라이브러리 내의 취약성을 식별하는 데 중점을 둡니다. 오픈 소스 구성 요소의 광범위한 사용을 감안할 때 SCA는 위험 관리에 매우 중요합니다.
비밀 검사: Secrets scanning 도구 개발자가 코드 또는 구성 파일에서 하드 코딩된 비밀을 식별하고 제거할 수 있도록 지원합니다.
Wiz를 사용하여 DevOps 프로세스에서 AppSec 구현하기
지금까지 살펴본 바와 같이, 애플리케이션 보안에 대한 구조화된 접근 방식에는 완화하는 위험과 비즈니스에 미치는 영향에 대한 명확한 이해를 바탕으로 제어를 조정하는 것이 포함됩니다. 이 접근 방식의 주요 구성 요소는 다음과 같습니다.
위험 평가: 취약성의 가능성과 심각도에 따라 취약성의 잠재적 영향을 식별하여 정보에 입각한 의사 결정을 내릴 수 있도록 합니다.
위협 모델링: 공격자가 애플리케이션 구성 요소를 악용하여 개발 수명 주기 초기에 위험을 발견하고 사전에 완화할 수 있는 방법을 분석합니다.
안전한 개발 정책: 코딩, 테스트, 배포에 대한 가이드라인을 수립하여 리스크를 조기에 포착하고 예방한다
교육 및 인식 제고: 개발자에게 보안 위험을 식별하고 완화할 수 있는 지식을 제공합니다.
안전한 코딩 방식을 채택하고, 고급 보안 도구를 사용하고, AppSec에서 위험 관리를 통합하고, DevSecOps를 통해 공동 책임 문화를 조성함으로써 진화하는 위협으로부터 애플리케이션을 보호할 수 있습니다.
하지만 AppSec을 직접 구현할 필요는 없습니다. Wiz는 AppSec의 모든 작업을 단일 창 뒤에서 수행할 수 있는 최첨단 플랫폼을 제공합니다. 개발 주기 초기에 취약점을 발견함으로써 위즈 코드 시작하는 데 중점을 둡니다. 안전 에서의 여행 코드 수준. 대단한'의 광범위한 스캔 기능과 사용자 친화적인 인터페이스를 통해 개발 프로세스에 보안을 쉽게 통합할 수 있습니다.
직접 확인할 준비가 되셨나요? Wiz 데모 예약하기 지금 바로 클라우드에서 구축하고 실행하는 모든 것을 보호하는 것이 얼마나 쉬운지 확인해 보십시오.
Secure your cloud from code to production
Learn why CISOs at the fastest growing companies trust Wiz to accelerate secure cloud development.