>웹 프론트엔드 >JS 튜토리얼 >개발자 및 보안팀을 위한 사전 예방적인 AppSec 지속적인 취약점 관리

개발자 및 보안팀을 위한 사전 예방적인 AppSec 지속적인 취약점 관리

Barbara Streisand
Barbara Streisand원래의
2024-10-03 11:32:29818검색

CISO를 바쁘게 만드는 현대 소프트웨어 개발 환경에서 증가하는 사이버 보안 위험에는 어떤 것이 있나요?

개발자와 보안 팀은 정교한 오픈 소스 및 공급업체가 제어하는 ​​공급망 공격부터 신속한 삽입 및 GitHub Copilot의 열악한 코드 보안과 같은 AI 생성 코드로 인해 발생하는 취약점에 이르기까지 점점 더 증가하는 위협에 직면하고 있습니다. 종종 오픈 소스 구성 요소(예: npm, PyPI 또는 RubyGems에서 찾을 수 있는 구성 요소)와 컨테이너화된 배포에 크게 의존하는 현대 애플리케이션의 복잡성이 문제를 가중시킵니다. 

이러한 위험의 규모와 복잡성을 고려할 때 취약점 관리 자동화는 필수가 되었습니다. 수동 사이버 보안 프로세스로는 잠재적인 취약점과 소프트웨어 개발의 규모와 속도를 따라잡을 수 없습니다. 자동화는 보안 문제의 식별 및 해결 속도를 높일 뿐만 아니라 보안 팀이 정기적으로 따르는 이러한 프로세스가 소프트웨어 개발 수명 주기의 모든 단계에 일관되게 적용되도록 보장합니다.

특정 영역에서 지속적인 취약점 관리의 중요성

  • 오픈 소스 구성 요소에 대한 의존도 증가: 오픈 소스 구성 요소는 현대 소프트웨어 개발에서 널리 사용됩니다. 이러한 구성 요소는 애플리케이션 개발자의 개발을 가속화하고 비용을 절감하는 데 도움이 되지만 심각한 보안 위험도 초래합니다. XZ 백도어 및 SolarWinds 침해와 같은 세간의 이목을 끄는 공급망 공격은 오픈 소스 종속성 및 폐쇄된 공급업체가 제어하는 ​​구성 요소가 악용될 경우 광범위한 피해가 발생할 가능성을 강조했습니다.
  • 개발에서 AI 생성 코드 사용 증가: 소프트웨어 개발에서 GenAI(제너레이티브 AI)의 등장은 기회와 도전을 동시에 가져옵니다. GenAI는 코딩 작업 속도를 크게 높일 수 있지만 새로운 취약점이 발생할 수도 있습니다. AI 생성 코드에는 숙련된 개발자가 일반적으로 포함하는 보안 고려 사항이 부족하여 잠재적인 보안 격차가 발생할 수 있습니다. 이에 대한 한 가지 예는 React에 XSS를 도입한 GitHub Copilot입니다.
  • 컨테이너화된 애플리케이션의 급속한 성장: 컨테이너화된 앱은 최신 소프트웨어 배포의 표준이 되었습니다. 컨테이너는 환경 전반의 일관성, 확장 용이성 등 다양한 이점을 제공합니다. 그러나 특히 컨테이너 이미지 내의 취약성을 관리할 때 새로운 보안 문제가 발생합니다. 따라서 개발자는 최고의 컨테이너 이미지를 선택하는 방법과 일반적인 컨테이너 전문가 팁을 교육하는 데 도움을 받을 수 있지만 Docker 컨테이너 이미지 취약점을 자동화하는 것은 필수입니다.

이를 좀 더 자세히 분석해 보겠습니다. 세간의 이목을 끄는 공급망 공격의 또 다른 예는 Codecov에 대한 공격입니다. Codecov에서는 공격자가 널리 사용되는 코드 검사 도구의 취약점을 악용하여 민감한 데이터에 액세스할 수 있습니다. 개발자의 일상에는 오픈 소스 종속성과 관련된 위험을 관리하는 것이 포함됩니다. 오픈 소스 종속성으로 인해 코드베이스에 직접적 및 전이적 취약점이 모두 발생할 수 있습니다. 직접적인 취약점은 명시적으로 포함된 라이브러리에서 발견되는 반면 전이적 취약점은 해당 라이브러리의 종속성에 존재합니다. 이러한 위험을 수동으로 관리하는 것은 어려운 일이므로 자동화는 강력한 보안 전략의 중요한 구성 요소입니다.

GenAI를 사용하면 GitHub Copilot 또는 ChatGPT와 같은 AI 코드 도우미가 실제 잠재적인 취약점을 드러냅니다. GenAI는 실수로 안전하지 않은 코딩 관행을 도입하거나 상황별 보안 요구 사항을 인식하지 못할 수 있습니다. 예를 들어 AI 모델은 SQL 주입이나 XSS(교차 사이트 스크립팅) 공격에 취약한 코드를 생성할 수 있습니다. 따라서 AI 생성 코드를 모니터링하고 보호하는 것은 애플리케이션 보안을 유지하는 데 중요합니다. 

새로운 컨테이너 취약점을 따라잡는 복잡성은 보안 팀에서도 피할 수 없습니다. 새로운 컨테이너 취약점의 빠른 속도는 압도적일 수 있습니다. 각각의 새로운 취약점은 잠재적인 악용을 방지하기 위해 적시에 식별하고 해결해야 합니다. 이러한 복잡성으로 인해 컨테이너 보안을 효과적으로 관리하려면 보안 전문 지식을 갖춘 자동화된 솔루션이 필요합니다.

컨테이너 취약성은 애플리케이션의 전반적인 보안에 상당한 영향을 미칠 수 있습니다. 취약한 단일 컨테이너 이미지가 전체 애플리케이션 스택을 손상시킬 수 있습니다. Snyk Container와 같은 도구는 컨테이너 이미지의 취약점을 식별하고 해결하는 프로세스를 자동화합니다. Snyk Container는 취약점 수를 최소화하고 풀 요청을 자동화하여 코드 저장소를 업데이트하는 새로운 기본 이미지 태그를 제안할 수 있습니다.

이러한 모든 AppSec 사이버 보안 위협을 어떻게 완화할 수 있나요?

Snyk를 통한 사전 예방적 AppSec 및 지속적인 취약점 관리

AI 생성 코드와 관련된 위험을 완화하려면 Snyk Code와 같은 도구를 사용하는 것이 좋습니다. Snyk DeepCode AI로 구동되는 이 빠른 SAST 도구는 플러그인을 통해 개발자의 IDE에 직접 통합될 수 있습니다. 보안 관련 데이터 교육을 사용하여 취약하고 안전하지 않은 코드를 인식함으로써 개발 초기에 문제를 식별하고 해결할 수 있습니다.

Snyk DeepCode AI를 시작하는 방법은 간단합니다. 플러그인은 Visual Studio Code, IntelliJ IDEA, VS Code, PyCharm과 같은 널리 사용되는 IDE를 지원합니다. 

Visual Studio Code에서 Snyk DeepCode AI 설치 및 통합에 대한 빠른 가이드

  1. Snyk 확장 프로그램 설치:
  • Visual Studio Code를 엽니다.
  • 창 측면의 활동 표시줄에 있는 확장 프로그램 아이콘을 클릭하여 확장 프로그램 보기로 이동하세요.
  • "Snyk"를 검색하고 Snyk 확장 프로그램에서 "설치"를 클릭하세요.
  1. Snyk로 인증:
  • 설치 후 Snyk 계정으로 인증하라는 메시지가 표시됩니다.
  • 화면의 지시에 따라 여기에서 로그인하거나 가입하세요.
  1. Snyk DeepCode AI 활성화:
  • 인증이 완료되면 활동 표시줄에서 Snyk 보기로 이동하세요.
  • Snyk DeepCode AI를 활성화하여 코드의 취약점 스캔을 시작하세요.

설치하고 나면 사이드바의 Snyk 로고에 오픈 소스 종속성, 자체 코드(또는 GenAI에서 생성된 코드) 및 IaC 문제에서 발견된 취약점과 보안 문제가 표시됩니다.

Proactive AppSec continuous vulnerability management for developers and security teams

개발자를 위해 IDE에서 바로 안전하지 않은 코드 패턴을 식별하는 SAST 도구의 이점

  1. 실시간 피드백: 코드를 작성하는 동안 Snyk DeepCode AI가 이를 실시간으로 분석하여 잠재적인 보안 문제에 대한 즉각적인 피드백을 제공합니다. 이를 통해 개발자는 취약점이 코드베이스에 뿌리내리기 전에 이를 해결할 수 있습니다.
  2. AI 기반 통찰력: AI 모델은 보안 관련 데이터의 방대한 데이터 세트에 대해 훈련되어 GenAI에서 도입된 패턴이나 잘못된 프로그래밍 방식도 포함하여 안전하지 않은 코딩 패턴을 인식할 수 있습니다.
  3. 원활한 통합: Snyk DeepCode AI는 IDE에 직접 통합되어 개발자의 작업 흐름에 자연스럽게 적응하여 중단을 최소화하고 생산성을 극대화합니다.

GenAI가 도입한 취약점을 완화한 사례를 살펴보겠습니다. 이 프로젝트에서는 GitHub Copilot을 사용하여 OpenAI API를 쿼리하기 위한 Express POST 엔드포인트 경로를 생성하는 코드를 자동 완성한 다음 res.send()를 사용하여 브라우저에 응답을 보냈습니다.

그러나 이 페이로드의 응답이 브라우저에서 직접 렌더링된다면 어떻게 될까요? 이 요청을 보내는 데 기본 text/html 콘텐츠 유형 헤더가 사용된 경우 크로스 사이트 스크립팅 취약점이 실행 중인 애플리케이션에 영향을 미칠 수 있습니다. 이에 대해 어떻게 해야 할까요?

Proactive AppSec continuous vulnerability management for developers and security teams
31행 위의 주석에서 볼 수 있듯이 Snyk는 이 보안 문제를 해결할 것을 제안합니다. 이를 클릭하자 몇 초 내에 Snyk DeepCode AI 확장 프로그램이 다음과 같이 res.send()를 res.json으로 대체하는 완화 방법을 제안했습니다.

res.json(response.choices[0].message.content);

이러한 변경으로 Express 애플리케이션은 응답의 콘텐츠 유형을 일반 텍스트이고 경고()와 같은 텍스트를 허용할 수 있는 application/json으로 강제 지정합니다.

개발자는 IDE에서 Snyk를 활용함으로써 기본 Snyk DeepCode AI 엔진을 사용하여 취약점을 사전에 식별하고 완화할 수 있으므로 처음부터 코드의 보안을 유지할 수 있습니다. 애플리케이션 보안에 대한 이러한 사전 예방적 접근 방식은 오픈 소스 공급망 및 GenAI 생성 코드와 관련된 위험이 항상 존재하는 오늘날의 환경에서 필수적입니다.

Snyk Open Source로 종속성 관리 자동화

Snyk Open Source는 개발자와 보안 팀이 오픈 소스 종속성과 관련된 위험을 관리할 수 있도록 설계된 강력한 도구입니다. 오픈 소스 라이브러리에 대한 의존도가 높아짐에 따라 강력하고 자동화된 종속성 관리에 대한 필요성이 그 어느 때보다 중요해졌습니다. Snyk Open Source는 포괄적인 취약성 검색 및 해결 기능을 제공하여 프로젝트의 보안과 규정 준수를 보장합니다.

이전 Node.js 애플리케이션에서는 Snyk가 다음과 같이 보안 문제를 경고하는 SQLite 종속성을 사용하기도 했습니다.

Proactive AppSec continuous vulnerability management for developers and security teams
This vulnerability information is helpful to understand which transitive dependency is introducing the security risk and how to mitigate it, if at all possible. In this case, the transitive dependency inflight is detected to have a medium vulnerability.

Snyk detects that my lockfile and dependency is potentially out of date and so it can’t find a remediation path. However, let’s see the automation in practice when we import the GitHub code repository to Snyk. Doing so, shows the following information on the Snyk application:

Proactive AppSec continuous vulnerability management for developers and security teams
From this point on, Snyk will automatically open new Pull Requests to suggest dependency upgrades when security vulnerabilities are detected in my package manifest.

Managing dependencies is not just about the libraries you directly include in your project. Transitive dependencies—those pulled in by your direct dependencies—can also introduce vulnerabilities. Snyk excels at identifying and remediating vulnerabilities in both direct and transitive dependencies.

Consider the following scenario:

{
  "dependencies": {
    "express": "^4.17.1",
    "lodash": "^4.17.20"
  }
}

In this example, express and lodash are direct dependencies. However, express might have its own set of dependencies, which in turn might have their own dependencies. Snyk will traverse this entire dependency tree, identifying and addressing vulnerabilities at every level.

When it comes to managing container vulnerabilities, Snyk Container helps remove the burden of keeping base image tags up-to-date with security patches.

Snyk Container is a comprehensive solution designed to help developers and security teams manage container vulnerabilities effectively. Containerized application workloads is prevalent at the Enterprise and as is the need to secure these environments. Snyk Container integrates seamlessly into your CI/CD pipeline, providing continuous monitoring and proactive remediation of vulnerabilities in your container images.

One of the standout features of Snyk Container is its ability to automate the creation of Pull Requests to address vulnerabilities in your container images. This automation is a game-changer for both developers and security teams, as it significantly reduces the manual effort required to keep container images secure.

Here's an example of how Snyk Container might automate a PR to update a vulnerable package in a Dockerfile:

FROM node:14.1.0
RUN npm install express
COPY . /app
CMD ["node", "/app/index.js"]

When Snyk Container detects a vulnerability, it automatically generates a PR with the necessary changes to mitigate the issue. This could include updating a vulnerable package or applying a security patch. By automating this process, Snyk Container ensures that vulnerabilities are addressed promptly, reducing the window of exposure.

Proactive AppSec continuous vulnerability management for developers and security teams
By following these recommended base images, you can significantly reduce the number of vulnerabilities in your container images, enhancing the overall security of your applications.

Proactive AppSec continuous vulnerability management for developers and security teams
Snyk Container identified multiple vulnerabilities in this base image and automatically generated PRs to update the image and associated dependencies. The team was able to review and merge these PRs quickly, reducing their vulnerability count by over 30% within seconds by merging the Pull Request and ensuring the CI/CD pipeline tests pass with flying colors.

Proactive AppSec continuous vulnerability management for developers and security teams
This proactive approach not only improved the security posture of their applications but also freed up valuable time for developers to focus on building new features rather than managing vulnerabilities.

위 내용은 개발자 및 보안팀을 위한 사전 예방적인 AppSec 지속적인 취약점 관리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.