HyperAI초신경
Back to Headlines

AI로 플러그인 문제 해결, 코드 수정 없이 등록 스팸 차단 성공

2일 전

ChatGPT를 이용해 코드 한 줄도 건드리지 않고 중요 플러그인을 신속히 수정한 이야기 저는 아침형 인간이 아니라지만, 매일 오전 5시 30분에 알람이 울립니다. 제가 소속된 편집팀은 동부 시각을 따르고 있고, 저는 오레곤에 있기 때문입니다. 이메일과 슬랙(Slack)을 빠르게 확인하고, 사이트에 문제가 없는지 확인한 후 첫 커피를 즐깁니다. 카페인의 도움으로 하루를 시작하게 됩니다. 하지만 6월 초에 제 웹사이트가 상당히 심각한 상황에 처했습니다. 호스팅 제공업체에서 보안 취약점을 가진 플러그인이 비활성화되어야 한다는 알림을 보냈습니다. 이 플러그인은 사이트의 보안을 유지하는 데 중요한 역할을 하는 것이었는데, WordPress 플러그인 저장소에서도 업데이트가 제공되지 않았습니다. 플러그인 저장소를 살펴보니 크로스-사이트 스크립팅 등 여러 보안 문제로 인해 사용자 다운로드가 차단되었다는 공지를 발견했습니다. 이러한 취약점은 악의적인 사용자가 사이트에 해를 끼치는 스크립트를 주입할 수 있는 통로를 제공하기 때문에 무시할 수 없는 문제였습니다. 즉시 해당 플러그인을 비활성화했습니다. 비활성화 직후, 사이트에 새로운 사용자 등록 알림이 쉬지 않고 쏟아져 들어왔습니다. 이 플러그인은 등록 스팸을 막는 역할을 했는데, 스팸 또는 해커들이 이와 같은 공격을 하는 이유는 대부분 미래에 발생할 가능성이 있는 다른 취약점을 이용하기 위한 교두보를 마련하기 위해서입니다. 이로 인해 서버 부하가 증가하고, 사이트 운영자의 이메일 상자가 범람하여 중요한 알림을 놓칠 위험이 있으며, 이메일 목록 비용이 증가하거나 실패한 이메일 주소로 인해 이메일 목록이 오염될 수도 있습니다. WordPress 플러그인 저장소에는 다양한 반스팸 도구가 있었지만, 대부분은 매우 광범위한 기능을 제공했습니다. 이미 다른 보안 도구를 사용 중이었기 때문에, 단순히 등록 스팸만 막는 도구가 필요했습니다. 그러나 그러한 특정 기능을 수행하는 도구를 찾을 수 없었습니다. 그래서 저는 AI에게 이런 도구를 만들어달라고 요청하기로 결정했습니다. 이때 오픈 소스의 힘이 진정으로 드러났습니다. WordPress와 모든 WordPress 플러그인은 주로 PHP와 JavaScript로 작성됩니다. 이 언어들은 컴파일되지 않고 해석되는 언어로, 프로그램이 실행될 때 컴퓨터가 코드를 읽고 해석합니다. 따라서 소스 코드가 사용자에게 제공되어야 합니다. WordPress 플러그인 저장소에 포함되려면, 모든 플러그인은 오픈 소스 형태로 배포되어야 하며, 포크(fork)가 허용되는 라이선스를 가져야 합니다. 이는 코드가 공개되어 누구나 수정할 수 있다는 것을 의미합니다. 등록 스팸을 막는 플러그인의 개발자가 지원을 중단했기 때문에, 6월 초에 저장소에서 사용자 다운로드가 차단되었습니다. 하지만 저는 서버에 플러그인의 사본이 있어, 소스 코드를 접근하고 수정할 수 있는 권한이 있었습니다. 그래서 ChatGPT Plus o3 모델을 활용해 깊은 연구(Deep Research)를 진행했습니다. ChatGPT에게 플러그인의 코드를 분석하도록 요청한 결과, 20분 만에 16페이지 분량의 분석 보고서를 받았습니다. 이 보고서는 플러그인이 등록 스팸을 막는 방법과 함께 보안 취약점들을 자세히 설명해 주었습니다. 분석 결과, "이러한 취약점들은 악의적인 사용자가 사이트의 보안을 저해할 수 있게 만들었으며, 아이러니하게도 반스팸 플러그인을 통해 공격 경로를 제공했다"고 결론지었습니다. 각각의 문제에 대해 상세한 정보를 제공하며, 플러그인을 디버깅하거나 수정하는 것은 불가능하다는 점이 명확해졌습니다. 하지만 분석 보고서는 유사한 기능을 제공하면서 보안성을 확보하는 새로운 플러그인을 만들기 위한 단계별 안내서를 제공했습니다. 이 분석을 바탕으로, 저는 원래 플러그인의 복잡한 기능을 그대로 재현하고 싶지 않았습니다. 제가 필요한 것은 기본적인 스팸 방지 기능만 갖춘 최소한의 플러그인입니다. 그래서 ChatGPT에게 원래 구현에서 파생된 지식을 바탕으로, 가장 간단한 등록 스팸 방지 기능만을 포함한 새로운 사양을 작성하도록 요청했습니다. 이 과정에서는 AI에게 코드를 작성하라고 요구하지 않았습니다. 대신, 코드를 작성해야 할 내용을 설명하도록 요청했습니다. 새로운 세션을 시작하여 이전 분석 과정의 영향을 최소화했습니다. ChatGPT는 세션이 길어질수록 방향성을 잃기 쉽기 때문에, 새로운 세션을 시작함으로써 더 명확한 결과를 얻을 수 있었습니다. 이전 깊은 연구 결과를 PDF로 저장하고, 이를 새로운 세션에 업로드했습니다. 이렇게 함으로써 AI는 실패한 플러그인의 분석과 세부 정보를 바탕으로 새로운 사양을 작성할 수 있었습니다. AI는 다음과 같은 세 가지 기본 스팸 방지 메커니즘을 제안했습니다: 1. 숨겨진 "honeypot" 폼 필드. 이 필드가 채워지면 폼이 프로그래밍적으로 채워졌음을 의미하며, 대부분 봇(bot)이 해당 필드를 채웁니다. 2. 무료 서비스 API 조회. 사용자 이름이나 IP 주소가 의심스러운지 여부를 확인합니다. 3. MX(Mail Exchange) 레코드 확인. 등록되는 도메인의 실제 존재 여부를 확인합니다. 또한 다음과 같은 WordPress 플러그인 최상의 관행들을 따라야 한다고 권장했습니다: - 모든 파일은 defined( 'ABSPATH' ) || exit;로 보호합니다. - 모든 관리자 페이지 텍스트는 esc_html()로 탈출 처리합니다. - 로그 삭제 액션은 check_admin_referer( 'rsg_clear_log' )로 감싸습니다. - wp_remote_get()을 사용할 때는 [ 'timeout' => 5 ];를 설정하고, WP_Error는 스팸이 아닌 것으로 처리합니다. - eval(), unserialize(), 또는 base64 블롭(base64 blob)을 저장하지 않습니다. - WordPress 코딩 표준(간격, 명명, i18n)을 준수합니다. 이렇게 사양서를 작성한 후, 이제 코드 생성 단계로 넘어갔습니다. 작성된 PDF를 ChatGPT에 업로드하고, 다음 프롬프트를 입력했습니다. "첨부된 PDF를 읽고, 사양에 따라 zip 파일을 생성하여 다운로드하고 설치할 수 있도록 제공해주세요." AI는 단 21초 만에 이를 완료했습니다. 21초라는 시간은 믿기 어려울 정도였습니다. 새로 생성된 플러그인을 사이트에 설치한 후, 등록 스팸이 급감했습니다. 일반적인 새로운 사용자 등록에는 전혀 문제가 발생하지 않았습니다. 이 플러그인은 약 한 달 동안 무사히 작동하고 있습니다. 이 프로젝트가 성공한 이유는 문맥 관리에 있었던 것 같습니다. 각 단계에서 AI와의 상호작용을 이전 단계와 분리하여, AI가 필요한 정보만을 바탕으로 작업할 수 있도록 하였습니다. 결국, 오픈 소스와 생성형 AI의 두 강력한 흐름을 결합하여 실제 문제를 해결했습니다. 전체 프로젝트는 약 한 시간이 소요되었으며, 이후 몇 주 동안 플러그인은 문제 없이 실행되고 있습니다. 이 글을 작성하는 데 걸린 시간이 실제 코드 작성 시간보다 훨씬 길었습니다. 이 AI 기술은 여러모로 유용할 수 있습니다. 여러분은 ChatGPT나 다른 AI 도구를 이용해 실제 코드를 분석하거나 재구축한 적이 있나요? 여러분의 프로젝트에서 깊은 연구(Deep Research)를 어떻게 사용할까요? 이러한 수준의 자동화된 법적 분석을 생산 시스템에 적용할 수 있다고 생각하시나요? 플러그인 실패나 보안 경고를 경험한 적이 있다면, 어떻게 처리하셨는지 알려주세요. 아래 댓글로 의견을 남겨주시면 감사하겠습니다. 제 일상적인 프로젝트 업데이트는 소셜 미디어에서 확인할 수 있습니다. 주간 업데이트 뉴스레터를 구독하시고, 트위터/X(@DavidGewirtz), 페이스북(Facebook.com/DavidGewirtz), 인스타그램(Instagram.com/DavidGewirtz), Bluesky(@DavidGewirtz.com), 유튜브(YouTube.com/DavidGewirtzTV)에서 저를 팔로우하세요. AI에 대한 더 많은 이야기를 원하신다면, 주간 뉴스레터 Innovation에 구독하세요.

Related Links