LLM: 보안 코딩을 위한 (거의) 완벽한 인간적 접근 방식?

게시일: 2024년 2월 1일
작성자: 피터 댄히외
사례 연구

LLM: 보안 코딩을 위한 (거의) 완벽한 인간적 접근 방식?

게시일: 2024년 2월 1일
작성자: 피터 댄히외
리소스 보기
리소스 보기
화면에서 줄무늬 빛이 나오는 어둠 속의 노트북.
화면에서 줄무늬 빛이 나오는 어둠 속의 노트북.

이 문서의 버전은 어두운 읽기에나타났다. 여기에 업데이트되고 신디케이트되었습니다.

문화를 뒤흔드는 최신 AI 도구에 대한 과대 광고가 처음 등장했을 때부터 개발자와 코딩에 관심이 많은 사람들은 버튼 하나만 누르면 코드를 생성하는 데 이 도구를 사용해 왔습니다. 보안 전문가들은 많은 경우 생성되는 코드의 품질이 낮고 취약하며, 보안에 대한 인식이 거의 없는 사람들이 안전하지 않은 앱과 웹 개발을 통해 순진한 소비자를 공격할 수 있다는 점을 빠르게 지적했습니다.

그리고 보안 지식이 충분한 사람들이 이를 악용하는 경우도 있습니다. 모든 놀라운 인공지능의 업적 뒤에는 동일한 기술이 악의적인 목적으로 사용되는 카운터 펀치가 있는 것 같습니다. 피싱, 정교한 가짜 사기 동영상, 멀웨어 제작, 일반적인 스크립트 장난... 이러한 파괴적인 활동은 진입 장벽을 낮추면서 훨씬 더 빠르게 달성할 수 있습니다.

이 도구가 혁신적이거나 적어도 '평균적인' 인간의 기술과 비교했을 때 우위에 있다고 선전하는 클릭베이트는 분명 많습니다. LLM 스타일의 AI 기술이 소프트웨어 개발뿐만 아니라 업무의 여러 측면에 접근하는 방식을 변화시키는 것은 피할 수 없는 것처럼 보이지만, 한 걸음 물러서서 헤드라인 너머에 있는 위험을 고려해야 합니다. 

그리고 코딩의 동반자로서 가장 '인간적인' 속성이라는 결점도 있습니다.

잘못된 코딩 패턴으로 인해 자주 사용하는 솔루션은 다음과 같습니다.

수십 년간의 기존 코드와 지식 베이스를 기반으로 학습된 ChatGPT는 그 놀라움과 신비함에도 불구하고 사람들이 코드를 탐색할 때 직면하는 일반적인 함정을 그대로 가지고 있다는 것은 놀라운 일이 아닙니다. 잘못된 코딩 패턴은 여전히 존재하며, 올바른 질문을 하고 올바른 엔지니어링을 제공함으로써 안전한 코딩 예제를 생성하려면 보안을 인식하는 드라이버가 필요합니다. 

그럼에도 불구하고 보안 관점에서 볼 때 제공된 코드 조각이 정확하고 제대로 작동한다는 보장은 없으며, 마이크 셰마가 발견한 것처럼 이 기술은 특정 JSON 연산을 수행하라는 요청을 받으면 존재하지 않는 라이브러리를 구성하는 등 환각에 빠지기 쉽습니다. 이로 인해 위협 공격자들은 '환각 스쿼팅'을 할 수 있으며, 이들은 ChatGPT가 자신 있게 추천하는 조작된 라이브러리로 위장한 멀웨어를 기꺼이 실행할 것입니다.

궁극적으로, 우리는 일반적으로 개발자들이 보안에 대해 충분히 인식할 것으로 기대하지 않았고, 업계에서도 개발자들이 보안 코드를 기본 상태로 작성할 수 있도록 충분히 준비하지 않았다는 현실을 직시해야 합니다. 이는 ChatGPT에 입력되는 방대한 양의 학습 데이터에서 분명하게 드러나며, 적어도 초기에는 그 결과물에서 이와 유사한 보안 취약점이 발견될 것으로 예상할 수 있습니다. 개발자는 보안 버그를 식별하고 이를 직접 수정하거나 더 나은 프롬프트를 설계하여 보다 강력한 결과를 얻을 수 있어야 합니다.

스탠포드 대학의 연구진이 수행한 다양한 보안 관련 기능을 해결하기 위해 사용자가 AI 코딩 어시스턴트와 어떻게 상호 작용하는지를 조사한 최초의 대규모 사용자 연구는 이러한 개념을 뒷받침하는 한 가지 관찰 결과를 제시합니다:

"AI 어시스턴트에 액세스할 수 있는 참가자는 대부분의 프로그래밍 작업에서 보안 취약점을 노출할 가능성이 더 높았지만, 안전하지 않은 답변을 안전하다고 평가하는 비율도 대조군에 비해 더 높았습니다."

이는 AI 코딩 도구의 결과물이 항상 본질적으로 안전한 코드를 생성할 것이라고 기본적으로 신뢰하는 수준을 말하는데, 실제로는 그렇지 않습니다.


이러한 위협은 물론, 미래에 닥칠 피할 수 없는 AI 기반 위협까지, 개발자는 그 어느 때보다 보안 기술을 연마하고 출처에 관계없이 코드 품질 기준을 높여야 합니다.

데이터 유출 재해로 가는 길은 좋은 의도로 포장되어 있습니다.

특히 개발자가 더 많은 책임과 촉박한 마감일, 그리고 회사의 혁신에 대한 야망을 어깨에 짊어지고 있는 상황에서 AI 코딩 컴패니언이 인기를 끌고 있는 것은 놀라운 일이 아닙니다. 하지만 아무리 좋은 의도를 가지고 있다고 해도 코딩에 AI를 사용할 때 보안에 대한 인식이 부족하면 필연적으로 보안 문제가 발생할 수밖에 없습니다. AI/ML 툴을 사용하는 모든 개발자는 더 많은 코드를 생성하게 되며, 그 보안 위험 수준은 개발자의 기술 수준에 따라 달라집니다. 조직은 교육을 받지 않은 사람들이 코드를 더 빨리 생성하는 것은 분명하지만, 그만큼 기술 보안 부채의 속도도 빨라진다는 점을 분명히 인식해야 합니다.

저희의 예비 테스트(2023년 4월)에서도 ChatGPT는 치명적인 결과를 초래할 수 있는 아주 기본적인 실수를 생성하는 것으로 나타났습니다. MySQL 데이터베이스를 사용하여 PHP로 로그인 루틴을 구축하도록 요청했을 때 기능적인 코드가 빠르게 생성되었습니다. 하지만 기본적으로 비밀번호를 데이터베이스에 일반 텍스트로 저장하고, 데이터베이스 연결 자격 증명을 코드에 저장하고, SQL 인젝션을 초래할 수 있는 코딩 패턴을 사용했습니다(물론 입력 매개 변수를 어느 정도 필터링하고 데이터베이스 오류를 뱉어내긴 했지만요). 모든 루키 오류:

ChatGPT의 권장 사항이 반드시 안전한 것은 아니며, 경우에 따라서는 위험할 수도 있습니다.


추가 프롬프트를 통해 실수를 수정할 수 있었지만, 이를 바로잡으려면 상당한 보안 지식이 필요합니다. 이러한 도구를 확인하지 않고 광범위하게 사용하는 것은 주니어 개발자를 프로젝트에 투입하는 것과 다를 바 없으며, 이 코드가 민감한 인프라를 구축하거나 개인 데이터를 처리하는 것이라면 시한폭탄을 안고 있는 것과 같습니다.

물론 주니어 개발자가 시간이 지남에 따라 실력이 향상되는 것처럼 AI/ML 기능도 향상될 것으로 기대합니다. 1년 뒤에는 지금처럼 명백하고 단순한 보안 실수를 하지 않을 수도 있습니다. 그러나 이는 여전히 발생할 위험이 있는 더 심각하고 숨겨진 사소하지 않은 보안 오류를 추적하는 데 필요한 보안 기술을 획기적으로 향상시키는 효과가 있을 것입니다.

보안 취약점을 발견하고 수정할 준비가 제대로 되어 있지 않은 상황에서 AI는 그 격차를 더욱 벌리고 있습니다.

이 시점에서 수년 동안 "왼쪽으로 이동"에 대한 많은 이야기가 있었지만, 대부분의 조직에서 개발 집단 사이에 실질적인 보안 지식이 현저히 부족하다는 사실은 여전히 남아 있으며, 우리는 그들이 나아가는 데 도움이 되는 적절한 도구와 교육을 제공하기 위해 더 열심히 노력해야 합니다.

현재로서는 우리가 익숙한 보안 버그는 물론이고, 산불처럼 번져나갈 완전히 새로운 공격 벡터를 나타내는 프롬프트 인젝션 및 환각 스쿼트 같은 새로운 AI 기반 문제에 대해서도 준비가 되어 있지 않습니다. AI 코딩 도구는 개발자의 코딩 무기고의 미래를 대표하지만, 이러한 생산성 무기를 안전하게 사용하기 위한 교육은 지금 당장 이루어져야 합니다.

자세히 알아보고 싶으신가요? 최신 백서를 다운로드하세요.
리소스 보기
리소스 보기

저자

피터 다뉴

피터 댄히외는 보안 컨설턴트로 12년 이상 경력을 쌓았으며, 조직, 시스템 및 개인의 보안 취약점을 타겟팅하고 평가하는 방법에 대한 공격 기법을 가르치는 SANS의 수석 강사로 8년 이상 활동한 세계적으로 인정받는 보안 전문가입니다. 2016년에는 호주에서 가장 멋진 기술자 중 한 명으로 선정(비즈니스 인사이더)되었고, 올해의 사이버 보안 전문가(AISA - 호주 정보 보안 협회)로 선정되었으며, GSE, CISSP, GCIH, GCFA, GSEC, GPEN, GWAPT, GCIA 자격증을 보유하고 있습니다.

더 알고 싶으신가요?

블로그에서 최신 보안 코딩 인사이트에 대해 자세히 알아보세요.

Atlassian의 광범위한 리소스 라이브러리는 안전한 코딩 숙련도를 확보하기 위한 인적 접근 방식을 강화하는 것을 목표로 합니다.

블로그 보기
더 알고 싶으신가요?

개발자 중심 보안에 대한 최신 연구 보기

광범위한 리소스 라이브러리에는 개발자 중심의 보안 코딩을 시작하는 데 도움이 되는 백서부터 웨비나까지 유용한 리소스가 가득합니다. 지금 살펴보세요.

리소스 허브

LLM: 보안 코딩을 위한 (거의) 완벽한 인간적 접근 방식?

게시일: 2024년 2월 1일
By 피터 댄히외

이 문서의 버전은 어두운 읽기에나타났다. 여기에 업데이트되고 신디케이트되었습니다.

문화를 뒤흔드는 최신 AI 도구에 대한 과대 광고가 처음 등장했을 때부터 개발자와 코딩에 관심이 많은 사람들은 버튼 하나만 누르면 코드를 생성하는 데 이 도구를 사용해 왔습니다. 보안 전문가들은 많은 경우 생성되는 코드의 품질이 낮고 취약하며, 보안에 대한 인식이 거의 없는 사람들이 안전하지 않은 앱과 웹 개발을 통해 순진한 소비자를 공격할 수 있다는 점을 빠르게 지적했습니다.

그리고 보안 지식이 충분한 사람들이 이를 악용하는 경우도 있습니다. 모든 놀라운 인공지능의 업적 뒤에는 동일한 기술이 악의적인 목적으로 사용되는 카운터 펀치가 있는 것 같습니다. 피싱, 정교한 가짜 사기 동영상, 멀웨어 제작, 일반적인 스크립트 장난... 이러한 파괴적인 활동은 진입 장벽을 낮추면서 훨씬 더 빠르게 달성할 수 있습니다.

이 도구가 혁신적이거나 적어도 '평균적인' 인간의 기술과 비교했을 때 우위에 있다고 선전하는 클릭베이트는 분명 많습니다. LLM 스타일의 AI 기술이 소프트웨어 개발뿐만 아니라 업무의 여러 측면에 접근하는 방식을 변화시키는 것은 피할 수 없는 것처럼 보이지만, 한 걸음 물러서서 헤드라인 너머에 있는 위험을 고려해야 합니다. 

그리고 코딩의 동반자로서 가장 '인간적인' 속성이라는 결점도 있습니다.

잘못된 코딩 패턴으로 인해 자주 사용하는 솔루션은 다음과 같습니다.

수십 년간의 기존 코드와 지식 베이스를 기반으로 학습된 ChatGPT는 그 놀라움과 신비함에도 불구하고 사람들이 코드를 탐색할 때 직면하는 일반적인 함정을 그대로 가지고 있다는 것은 놀라운 일이 아닙니다. 잘못된 코딩 패턴은 여전히 존재하며, 올바른 질문을 하고 올바른 엔지니어링을 제공함으로써 안전한 코딩 예제를 생성하려면 보안을 인식하는 드라이버가 필요합니다. 

그럼에도 불구하고 보안 관점에서 볼 때 제공된 코드 조각이 정확하고 제대로 작동한다는 보장은 없으며, 마이크 셰마가 발견한 것처럼 이 기술은 특정 JSON 연산을 수행하라는 요청을 받으면 존재하지 않는 라이브러리를 구성하는 등 환각에 빠지기 쉽습니다. 이로 인해 위협 공격자들은 '환각 스쿼팅'을 할 수 있으며, 이들은 ChatGPT가 자신 있게 추천하는 조작된 라이브러리로 위장한 멀웨어를 기꺼이 실행할 것입니다.

궁극적으로, 우리는 일반적으로 개발자들이 보안에 대해 충분히 인식할 것으로 기대하지 않았고, 업계에서도 개발자들이 보안 코드를 기본 상태로 작성할 수 있도록 충분히 준비하지 않았다는 현실을 직시해야 합니다. 이는 ChatGPT에 입력되는 방대한 양의 학습 데이터에서 분명하게 드러나며, 적어도 초기에는 그 결과물에서 이와 유사한 보안 취약점이 발견될 것으로 예상할 수 있습니다. 개발자는 보안 버그를 식별하고 이를 직접 수정하거나 더 나은 프롬프트를 설계하여 보다 강력한 결과를 얻을 수 있어야 합니다.

스탠포드 대학의 연구진이 수행한 다양한 보안 관련 기능을 해결하기 위해 사용자가 AI 코딩 어시스턴트와 어떻게 상호 작용하는지를 조사한 최초의 대규모 사용자 연구는 이러한 개념을 뒷받침하는 한 가지 관찰 결과를 제시합니다:

"AI 어시스턴트에 액세스할 수 있는 참가자는 대부분의 프로그래밍 작업에서 보안 취약점을 노출할 가능성이 더 높았지만, 안전하지 않은 답변을 안전하다고 평가하는 비율도 대조군에 비해 더 높았습니다."

이는 AI 코딩 도구의 결과물이 항상 본질적으로 안전한 코드를 생성할 것이라고 기본적으로 신뢰하는 수준을 말하는데, 실제로는 그렇지 않습니다.


이러한 위협은 물론, 미래에 닥칠 피할 수 없는 AI 기반 위협까지, 개발자는 그 어느 때보다 보안 기술을 연마하고 출처에 관계없이 코드 품질 기준을 높여야 합니다.

데이터 유출 재해로 가는 길은 좋은 의도로 포장되어 있습니다.

특히 개발자가 더 많은 책임과 촉박한 마감일, 그리고 회사의 혁신에 대한 야망을 어깨에 짊어지고 있는 상황에서 AI 코딩 컴패니언이 인기를 끌고 있는 것은 놀라운 일이 아닙니다. 하지만 아무리 좋은 의도를 가지고 있다고 해도 코딩에 AI를 사용할 때 보안에 대한 인식이 부족하면 필연적으로 보안 문제가 발생할 수밖에 없습니다. AI/ML 툴을 사용하는 모든 개발자는 더 많은 코드를 생성하게 되며, 그 보안 위험 수준은 개발자의 기술 수준에 따라 달라집니다. 조직은 교육을 받지 않은 사람들이 코드를 더 빨리 생성하는 것은 분명하지만, 그만큼 기술 보안 부채의 속도도 빨라진다는 점을 분명히 인식해야 합니다.

저희의 예비 테스트(2023년 4월)에서도 ChatGPT는 치명적인 결과를 초래할 수 있는 아주 기본적인 실수를 생성하는 것으로 나타났습니다. MySQL 데이터베이스를 사용하여 PHP로 로그인 루틴을 구축하도록 요청했을 때 기능적인 코드가 빠르게 생성되었습니다. 하지만 기본적으로 비밀번호를 데이터베이스에 일반 텍스트로 저장하고, 데이터베이스 연결 자격 증명을 코드에 저장하고, SQL 인젝션을 초래할 수 있는 코딩 패턴을 사용했습니다(물론 입력 매개 변수를 어느 정도 필터링하고 데이터베이스 오류를 뱉어내긴 했지만요). 모든 루키 오류:

ChatGPT의 권장 사항이 반드시 안전한 것은 아니며, 경우에 따라서는 위험할 수도 있습니다.


추가 프롬프트를 통해 실수를 수정할 수 있었지만, 이를 바로잡으려면 상당한 보안 지식이 필요합니다. 이러한 도구를 확인하지 않고 광범위하게 사용하는 것은 주니어 개발자를 프로젝트에 투입하는 것과 다를 바 없으며, 이 코드가 민감한 인프라를 구축하거나 개인 데이터를 처리하는 것이라면 시한폭탄을 안고 있는 것과 같습니다.

물론 주니어 개발자가 시간이 지남에 따라 실력이 향상되는 것처럼 AI/ML 기능도 향상될 것으로 기대합니다. 1년 뒤에는 지금처럼 명백하고 단순한 보안 실수를 하지 않을 수도 있습니다. 그러나 이는 여전히 발생할 위험이 있는 더 심각하고 숨겨진 사소하지 않은 보안 오류를 추적하는 데 필요한 보안 기술을 획기적으로 향상시키는 효과가 있을 것입니다.

보안 취약점을 발견하고 수정할 준비가 제대로 되어 있지 않은 상황에서 AI는 그 격차를 더욱 벌리고 있습니다.

이 시점에서 수년 동안 "왼쪽으로 이동"에 대한 많은 이야기가 있었지만, 대부분의 조직에서 개발 집단 사이에 실질적인 보안 지식이 현저히 부족하다는 사실은 여전히 남아 있으며, 우리는 그들이 나아가는 데 도움이 되는 적절한 도구와 교육을 제공하기 위해 더 열심히 노력해야 합니다.

현재로서는 우리가 익숙한 보안 버그는 물론이고, 산불처럼 번져나갈 완전히 새로운 공격 벡터를 나타내는 프롬프트 인젝션 및 환각 스쿼트 같은 새로운 AI 기반 문제에 대해서도 준비가 되어 있지 않습니다. AI 코딩 도구는 개발자의 코딩 무기고의 미래를 대표하지만, 이러한 생산성 무기를 안전하게 사용하기 위한 교육은 지금 당장 이루어져야 합니다.

자세히 알아보고 싶으신가요? 최신 백서를 다운로드하세요.

우리는 당신에게 우리의 제품 및 / 또는 관련 보안 코딩 주제에 대한 정보를 보낼 수있는 귀하의 허가를 바랍니다. 우리는 항상 최대한의주의를 기울여 귀하의 개인 정보를 취급 할 것이며 마케팅 목적으로 다른 회사에 판매하지 않을 것입니다.

전송
양식을 제출하려면 '분석' 쿠키를 활성화하세요. 완료되면 언제든지 다시 비활성화할 수 있습니다.