"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > AI로 코드 취약점을 자동으로 수정

AI로 코드 취약점을 자동으로 수정

2024-11-08에 게시됨
검색:851

Snyk의 SecRel 고객 워크숍 라이브러리에는 Breaking AI라는 워크숍이 있습니다. 이 워크숍에서는 Copilot 및 Codium과 같은 생성 AI 도우미가 개발자가 코드를 더 빠르게 작성하는 데 어떻게 도움이 되는지 다룹니다. 워크숍의 가장 큰 핵심은 AI 보조원이 코딩 훈련 캠프를 막 마친 주니어 개발자와 같다는 것입니다. 매우 열정적이고 도움이 되지만 - 당신은 정말로 자신의 코드를 확인하고 싶어합니다(후배 개발자에게는 그늘이 없습니다. - 우리는 그것들이 필요하고 정말 훌륭합니다!). 워크숍에서는 AI 비서와 Snyk를 결합하여 빠르고 안전하게 코드를 작성하는 초능력을 제공하는 방법을 보여줍니다.

유명한 요리사의 말을 인용하자면, Snyk는 이제 Deep Code AI Fix 기능을 통해 "한 단계 더 발전"했습니다. Snyk Code는 보안 취약점을 발견할 때 항상 좋은 교정 조언을 제공했습니다. 동일한 취약점이 있는 다른 오픈 소스 프로젝트에 대한 세 가지 좋은 참고 자료를 제공하고 해당 프로젝트가 이를 어떻게 해결했는지 보여줄 수도 있습니다. 이제 Snyk의 보안 연구팀이 세심하게 선별한 데이터, 생성적 AI와 상징적 AI의 성능을 결합한 하이브리드 AI 모델, 기계 학습 모델 덕분에 Snyk는 이제 사용자의 편안함 속에서 바로 많은 일반적인 보안 취약성을 자동으로 수정할 수 있습니다. 가장 좋아하는 IDE.

이 블로그에서는 워크샵에서 사용하는 Java 예제 프로젝트에서 DCAIF(Deep Code AI Fix)를 가장 잘 활용할 수 있는 방법을 보여 드리겠습니다. 소스 코드는 여기에서 찾을 수 있습니다. 참고: 이 프로젝트는 여러 면에서 의도적으로 취약하므로 어떤 프로덕션 환경에서도 사용하기에 적합하지 않습니다.

회의 예약 앱으로 즐거운 시간을 보내세요

기술 컨퍼런스에 참석했거나 연설을 해본 적이 있다면 가장 어려운 측면 중 하나가 일정을 만들고 발표하는 것임을 아실 것입니다.

참조 앱은 이 버전의 끔찍한 버전이지만(저는 훌륭한 프런트엔드 개발자가 아닙니다!) 코드가 기술적으로 작동하는 동시에 안전하지 않은 방법을 보여주는 데 유용합니다.

Thymeleaf 템플릿 엔진을 사용하는 Spring Boot 앱입니다. 시작 시 인기 있는 faker 라이브러리를 사용하여 무작위 화자, 강연 제목, 강연 설명 데이터를 생성합니다. 강연 제목과 설명은 모두 은하수를 여행하는 히치하이커를 위한 안내서(The Hitchhiker's Guide to the Galaxy) 책의 텍스트에서 따왔습니다. 참고: 제목과 설명이 모두 작업에 100% 안전하지는 않을 수 있습니다. 경고를 받았습니다!

이벤트를 위해 생성된 각 연설자에게는 컨퍼런스에서 발표한 연설 목록을 볼 수 있는 전용 페이지도 있습니다. 우리는 앱에서 이 부분에 중점을 둘 것입니다.

앱을 컴파일하고 실행하려면 다음을 실행합니다.

mvn clean install
mvn spring-boot:run

앱을 실행하면 일반적인 Spring Boot 배너 및 기타 출력 외에도 다음과 같은 내용이 표시됩니다.

Access talks for heath.davis at: http://localhost:8081/talks?username=heath.davis
Access talks for russell.bernier at: http://localhost:8081/talks?username=russell.bernier
Access talks for kenyetta.jones at: http://localhost:8081/talks?username=kenyetta.jones
Access talks for howard.bailey at: http://localhost:8081/talks?username=howard.bailey
Access talks for buddy.jast at: http://localhost:8081/talks?username=buddy.jast
Access talks for jeanice.kertzmann at: http://localhost:8081/talks?username=jeanice.kertzmann
Access talks for deborah.hamill at: http://localhost:8081/talks?username=deborah.hamill
Access talks for horacio.renner at: http://localhost:8081/talks?username=horacio.renner
Access talks for winfred.schuster at: http://localhost:8081/talks?username=winfred.schuster
Access talks for tommie.hane at: http://localhost:8081/talks?username=tommie.hane
Access talks for micah at: http://localhost:8081/talks?username=micah

참고: 앱을 시작할 때마다 발표자와 대화가 무작위로 생성되므로 정확히 이와 같지는 않습니다.

링크 중 하나를 클릭하거나 복사/붙여넣으면 강연 목록이 포함된 발표자 페이지가 표시됩니다.

Automatically fix code vulnerabilities with AI

놀자: 취약점 찾기

TalkController.java를 살펴보세요. 이것이 발표자의 페이지가 렌더링되는 방식입니다. 취약점을 발견할 수 있나요?

눈알에만 의존하는 것을 원하지 않습니다! 우리는 개발자가 빠르게 움직이고 안전한 코드를 작성하기를 원합니다.

저는 IntelliJ Idea를 사용하여 Java 애플리케이션을 작성합니다. 나는 또한 Snyk의 IDE 확장을 사용합니다. 좋은 소식은 널리 사용되는 모든 IDE에 대한 Snyk IDE 확장이 있으며 다양한 프로그래밍 언어를 지원한다는 것입니다.

따라가고 싶지만 Snyk 계정이 없다면 여기에서 무료로 계정을 만들 수 있습니다.

이 앱에 취약점이 많다고 제가 언급했나요? 그 이유는 우리가 워크샵에서 그것을 사용하기 때문입니다. 제가 집중하고 싶은 것은 TalkController.java에 있는 것입니다:

Automatically fix code vulnerabilities with AI

  1. 교차 사이트 스크립팅(XSS) 취약점이 발견되었음을 표시합니다.
  2. 동일한 취약점을 지닌 세 가지 오픈 소스 프로젝트 중 하나와의 차이점을 보여줍니다. 수정된 모습입니다(녹색 부분).
  3. 빨간색 구불구불한 선은 코드에서 취약점이 있는 위치를 나타냅니다.

이 내용은 모두 문제 해결에 매우 유용한 정보입니다. 그러나 #1의 취약점 왼쪽에 작은 번개 모양 아이콘(⚡️)이 있습니다. 이는 이 취약점이 자동으로 수정될 수 있음을 나타냅니다.

빨간색 물결 모양 위에 마우스를 놓으면 이 문제 해결:

옵션이 표시됩니다.

Automatically fix code vulnerabilities with AI
Deep Code AI Fix 결과를 보기 전에 부조종사가 우리에게 어떤 역할을 하는지 살펴보겠습니다.

다음은 42행에서 제가 부조종사에게 준 프롬프트와 여기에 삽입된 코드입니다.

// guard against XSS
username = username.replaceAll("", ">");

이것은 순진한 공격에 대해 작동할 수 있지만 모든 유형의 XSS 공격에 대해 작동합니까? 잘 모르겠습니다. 실제로 Snyk 스캔을 다시 실행해도 XSS 취약점이 여전히 존재합니다.

Snyk 수정 사항을 살펴보겠습니다.

String usernameStr = ""   HtmlUtils.htmlEscape(username)   "'s talks";
================================================


이제 이것 마음에 듭니다. 이는 내장된 Spring Boot 라이브러리인 HtmlUtils와 함께 관용적이고 예상되는 접근 방식을 사용합니다. 나는 이것이 입력된 사용자 이름을 철저하게 정리할 것이라고 확신합니다. 새로운 Snyk 스캔을 통해 취약점이 더 이상 존재하지 않는 것으로 나타났습니다.

Automatically fix code vulnerabilities with AI
정말 엄지손가락을 치켜세워요! Snyk 자동 수정은 취약점을 해결했을 뿐만 아니라 사용 중인 프레임워크(이 경우 Spring Boot)와 일치하는 방식으로 해결했습니다.

DCAIF는 속도를 늦추지 않습니다

이 게시물에서는 Snyk의 Deep Code AI Fix가 단순한 교정 조언을 넘어 사용자를 대신하여 문제를 해결할 수 있는 방법을 보여 주었습니다. 원래 보안 취약점이 더 이상 존재하지 않는 것을 확인하여 수정 사항의 이점을 확인할 수도 있습니다.

Snyk에서는 AI 비서를 좋아하지만 보안에는 그다지 능숙하지 않습니다. 우리의 연구에 따르면 Gen AI는 인간과 거의 동일한 비율(약 40%)로 안전하지 않은 코드를 생성하는 경향이 있는 것으로 나타났습니다. Copilot과 같은 순수 Gen AI 솔루션은 주로 기존 코드를 기반으로 모델을 교육하므로 이는 의미가 있습니다. 상징적 AI, Gen AI, 기계 학습, 보안 팀의 엄선된 교육을 포함하는 Snyk의 하이브리드 접근 방식은 결과적으로 보안 우선 접근 방식을 제공합니다.

릴리스 선언문 이 글은 https://dev.to/snyk/automatically-fix-code-vulnerability-with-ai-4dbf?1에서 복제됩니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3