WordPress 플러그인을 사용해도 안전한가요?
게시 됨: 2020-04-16수년에 걸쳐 연구에 따르면 가장 인기 있는 50개 WordPress 플러그인 중 20% 이상이 일반적인 웹 공격에 취약합니다. 또한 전자 상거래 플러그인에 대한 대상 연구에 따르면 가장 인기 있는 전자 상거래 플러그인 10개 중 7개에 취약점이 포함되어 있습니다. 불행히도 해커는 일반적으로 이러한 취약한 응용 프로그램을 악용하여 건강 기록 및 재정 세부 정보와 같은 민감한 정보에 액세스합니다. 다른 경우에는 취약점으로 인해 해커가 사이트를 변조하거나 다른 공격자가 제어하는 사이트로 리디렉션할 수 있습니다.

보다 최근의 사례에서 악성 WordPress 플러그인이 손상된 서버에 대한 액세스를 유지하는 것뿐만 아니라 암호화폐를 채굴하는 데에도 사용되는 것을 보았습니다. 따라서 이것은 WordPress 플러그인이 얼마나 안전한지에 대한 질문을 제기합니다.
이 블로그에서는 보안 침해의 잠재적인 소스로서 WordPress 플러그인에 대해 집중적으로 집중할 것입니다.
플러그인 기반 웹 개발.
일반적으로 WordPress는 웹의 30% 이상을 차지하므로 세계에서 가장 인기 있는 CMS(콘텐츠 관리 시스템)입니다.
즉, WordPress의 핵심 강점은 수만 개의 플러그인 및 테마를 광범위하게 제공하여 사이트를 사용자 정의할 수 있다는 것입니다. 이러한 플러그인은 사이트에 문의 양식을 추가하는 것부터 SEO에 맞게 블로그를 최적화하거나 Facebook에 새 게시물을 자동으로 게시하는 것까지 유형과 기능이 다양합니다.
제3자 개발.
플러그인 기반 개발의 기본 아이디어는 시스템의 핵심 기능을 확장하는 추가 기능을 제공하는 것입니다. 기본적으로 응용 프로그램의 핵심은 일반적으로 장기 개발자 집합에 의해 유지 관리되는 반면 타사는 응용 프로그램의 핵심 주위에 여러 플러그인을 구축합니다.
이 프로세스는 애플리케이션 제공자가 핵심 기능에 더 집중할 수 있는 반면 플러그인 제공자는 애플리케이션의 핵심 기능에 의해 제공되는 플러그인의 인프라에 대해 걱정할 필요가 없기 때문에 애플리케이션 제공자와 플러그인 제공자 모두에게 유익합니다. 일반적으로 WordPress는 수천 명의 상용 및 오픈 소스 소프트웨어 개발자와 애호가로 구성된 글로벌 커뮤니티에서도 지원합니다.
보안 지침 없음
전반적으로 일부 코딩 표준 및 권장 사항이 존재하지만 기술적으로 플러그인 개발자가 엄격하게 준수해야 하는 보안 지침이나 표준 요구 사항은 없습니다. 이는 하나의 플러그인에 있는 취약점이 수백만 개의 웹사이트에 전파될 수 있음을 의미합니다.
그리고 WordPress가 광범위하게 사용되기 때문에 결과적으로 인기 있는 공격 대상입니다. 따라서 본질적으로 플러그인의 취약점을 악용하는 해커는 수천 개의 사이트를 감염시킬 수 있습니다. 이미 많은 블로거들이 목격한 시나리오.
불행히도 플러그인 관련 취약점은 반복적이고 악용 가능하며 탐지하기 어려운 경향이 있습니다. 따라서 관련 보안 위협을 완화하기 위해 이러한 취약점을 더 자세히 이해할 필요가 있습니다. 더 깊이 파헤쳐 볼까요?

워드프레스는 정말 안전한가요?
먼저 이 질문에 답해 보겠습니다. 대부분의 경우 WordPress 보안 모범 사례를 준수하는 한 원시 생태계로서의 WordPress는 매우 안전합니다. 평균적으로 매일 약 30,000개의 새로운 웹사이트가 웹에서 해킹됩니다. 이러한 해커는 플러그인 취약성, 취약한 암호 및 구식 소프트웨어로 인해 WordPress 웹사이트를 표적으로 삼는 경향이 있습니다. 따라서 최상의 보안을 얻으려면 의도 수준이 필요합니다. 즉, 몇 가지 기본 WordPress 보안 모범 사례를 따라 공격에 대한 취약성을 줄일 수 있습니다.
더 읽어보기: 높은 트래픽을 위해 WordPress 웹사이트를 확장하는 11가지 효과적인 방법
이러한 취약점은 어디에서 왔습니까?
wpscan.org의 최근 보고서에 따르면 WordPress에는 거의 4,000개의 알려진 보안 취약점이 있습니다. 이러한 취약점의 대부분은 플러그인으로 인해 발생했습니다. 이러한 플러그인 관련 취약점 중 일부는 심각한 결과를 초래할 수 있지만 많은 취약점은 수정되기 전까지 수년 동안 눈에 띄지 않는 상태로 남아 있습니다. 대부분의 경우 일반적으로 소스 코드에 대한 작고 지역화된 변경으로 수정할 수 있습니다.
그러나 앞서 나가기 전에 한 발짝 뒤로 물러서자.
플러그인이란 무엇입니까?
기본적으로 플러그인은 새로운 맞춤형 기능과 동작으로 애플리케이션을 보완하는 소프트웨어 확장입니다. 특히, WordPress는 수천 개의 맞춤형 웹 애플리케이션을 구축하는 데 사용된 수천 개의 플러그인(52,000개 이상)을 제공합니다.
플러그인 기반 웹 응용 프로그램이 주류가 되면서 더 많은 개발자가 최첨단 기능으로 다양한 플러그인을 구성, 구성 및 확장하여 웹 응용 프로그램을 재창조할 수 있는 가능성을 탐색하는 데 관심을 돌렸습니다.
플러그인 개발의 의미
즉, 플러그인을 활용하여 추가 및 사용자 지정 기능으로 웹 시스템을 확장하는 기능은 개발자에게 긍정적인 영향과 부정적인 영향을 모두 미칩니다. 첫째, 긍정적인 점은 일반적으로 선택할 수 있는 여러 사용자 지정 옵션이 있으므로 개발자가 사용자의 요구에 맞게 사용자 지정되는 웹 응용 프로그램을 빠르고 쉽게 구축할 수 있다는 것입니다. 따라서 신속한 프로토타이핑 및 개발을 촉진합니다.
그러나 부정적인 측면에서 웹 애플리케이션은 결국 다른 소스의 여러 플러그인으로 구성된 복잡한 구성이 될 수 있습니다. 이는 궁극적으로 플러그인 보안과 관련된 문제를 제기합니다. 예를 들어 수백만 개의 WordPress 기반 애플리케이션에서 사용하는 플러그인인 TimThumb은 공격자가 의도적으로 원격 코드를 실행할 수 있는 익스플로잇에 노출된 것으로 보고되었습니다.
사실, 미국의 NVD(National Vulnerability Database)에 따르면 웹 시스템의 취약점 중 약 15%가 심각한 것으로 간주될 수 있으며 그 중 거의 35%는 쉽게 악용될 수 있는 취약점입니다.
손상된 플러그인의 결과는 무엇입니까?
사용자가 재무 정보를 잃거나 건강 기록이 손상되는 것 외에도 취약점이 더 심각할수록 소프트웨어 회사에 더 큰 재정적 영향을 미칩니다. 또한 개발자가 공개 시점에 실행 가능한 경로를 공개하지 않으면 이는 더욱 악화됩니다. 따라서 플러그인 공급업체는 일반적으로 보다 안전한 애플리케이션을 만들기 위해 노력합니다.
이제 플러그인에서 일반적으로 발견되는 몇 가지 보안 취약점을 조사하여 결과와 의미를 더 폭넓게 이해해 보겠습니다.
보안 취약점
우리가 수집한 바와 같이, 취약성은 소프트웨어 시스템의 잠재적인 오용의 기회를 열어줍니다. 궁극적으로 WordPress는 전 세계 수백만 명의 개발자가 자신의 플러그인을 만들 수 있도록 하기 때문에 플러그인에서 어느 정도의 타협이 일어날 것이라고 기대하지 않는 것은 비현실적입니다.
결과적으로 핵심 시스템과의 예상치 못한 플러그인 상호 작용으로 인해 보안이 침해될 수 있으며, 이는 공격자가 잠재적으로 악용할 수 있는 취약점으로 이어집니다. 이는 웹 시스템의 보안이 핵심 시스템과 플러그인 취약점을 모두 점검하는 데 달려 있음을 의미합니다.
워드프레스 복잡성
WordPress의 복잡성으로 인해 때때로 취약점에 시달리는 경향이 있습니다. 예를 들어 WordPress는 플러그인이 공유 전역 상태를 수정하거나 시스템 코어 실행의 특정 지점에서 기능을 실행하여 새로운 기능을 제공할 수 있는 직관적인 인프라를 제공합니다. 결과적으로 플러그인이 적절한 삭제 또는 입력 유효성 검사 없이 핵심 구성 요소에 악성 입력 데이터를 보낼 때 플러그인 취약점이 나타날 수 있습니다.
플러그인 취약점의 예
궁극적으로 가장 일반적인 플러그인 취약점은 사이트 간 스크립팅, SQL 주입 및 사이트 간 요청 위조입니다. 전반적으로 공격자가 쉽게 악용할 수 있는 가장 위험한 취약점 유형은 SQL 주입입니다. 그러나 다음과 같은 다른 취약성, 위반 및 침해 소스가 존재합니다.
- 데이터 처리 오류
- 부적절한 입력 검증
- 정보 노출
- 경로 순회
- 보안 기능
- 액세스 제어
- 부적절한 접근 통제
- 부적절한 승인
- 부적절한 인증
- 사이트 간 요청 위조
- 파일의 무제한 업로드
- 외부 당사자가 액세스할 수 있는 파일
- 링크 팔로잉
- 리디렉션 열기
- 명령 주입
- OS 명령 주입
- 사이트 간 스크립팅
- SQL 주입
- 코드 주입

더 자세한 내용을 위해 가장 일반적인 공격과 취약점을 살펴보겠습니다.
- · SQL 주입: SQL 주입은 일반적으로 공격자가 사용자의 WordPress 데이터베이스와 웹사이트의 모든 데이터에 액세스할 때 발생합니다. SQL 인젝션은 악성 또는 스팸 웹사이트에 대한 링크를 포함하여 데이터베이스에 새로운 데이터를 삽입하는 데에도 사용할 수 있습니다.
SQL 주입을 사용하면 민감한 정보 추출과 같은 백엔드 서버에서 명령을 실행할 수 있습니다. 호스팅 환경에서 SQL 주입 공격은 취약하지 않은 사이트에 대한 공격의 디딤돌로 사용될 수 있습니다.
- · 교차 사이트 스크립팅: 이 공격은 액세스 제어를 우회하기 위해 클라이언트에서 스크립트를 실행할 수 있도록 합니다. 일반적으로 사이트의 모든 방문자를 대상으로 합니다. 호스팅된 환경에서 이러한 공격은 사이트 관리자의 세션 쿠키를 훔쳐 공격자가 관리자로 가장할 수 있도록 하는 데 사용될 수 있습니다.
- · Cross-Site Request Forgery: 이 취약점을 통해 해커는 피해자를 대신하여 애플리케이션 수준의 트랜잭션을 수행할 수 있습니다. 호스팅된 환경에서 공격자는 관리자를 대신하여 사이트에 로그온하여 사용자를 리디렉션하거나 관리자 트랜잭션을 수행하는 등의 악의적인 활동을 수행할 수 있습니다.
WordPress 플러그인에서 흔히 볼 수 있는 Cross-site scripting 취약점은 다음과 같은 방식으로 작동합니다. 공격자는 피해자가 안전하지 않은 JavaScript 스크립트로 웹 페이지를 로드하도록 하는 방법을 찾습니다.

대부분의 취약점은 어디에 나타납니까?
기술 연구에 따르면 대부분의 취약점(약 92%)이 플러그인 코드에 나타납니다. 또한, 결과에 따르면 Cross-site Scripting 및 Cross-site Request Forgery와 같은 취약점은 플러그인 코드에서 더 흔한 반면, 다른 취약점은 코어 코드에서 더 많이 나타났습니다. 이와 관련하여 연구는 플러그인의 품질이 다양하고 플러그인의 등급과 발견된 취약점의 수 사이에는 상관관계가 없는 것으로 나타났습니다.

PHP 코드 작성 프로세스
코드 작성 프로세스는 취약점이나 손상의 근원이 될 수 있습니다. 일반적으로 PHP는 호스트 운영 체제를 직접 호출하지 않고 서버 측에서 임의의 코드 실행을 지원하는 것으로 잘 알려져 있습니다. 즉, 개발자가 코드 작성 과정에서 소홀할 때마다 플러그인 코드에 Cross-site Scripting 취약점이 도입될 가능성이 높아집니다.
반면에 SQL Injection과 관련하여 쉽게 탐지되고 악용될 수 있기 때문에 일반적인 취약점입니다. 아이러니하게도 사용자 기반이 적은 웹사이트라도 SQL Injection 공격을 받을 가능성이 있습니다.
취약성에 대한 노출 중 일부는 개발자가 안전하지 않은 리소스를 사용하는 데서 비롯됩니다. 마찬가지로, 최근에 개발된 많은 플러그인이 숙련되지 않은 개발자가 만들었기 때문에 적절한 입력 유효성 검사는 플러그인 개발자에게 여전히 주요 과제입니다.
WordPress 플러그인으로 인한 취약점이 중요합니까?
모든 것을 고려; 취약점은 여러 가지 방법으로 웹 시스템에 부정적인 영향을 미칠 수 있습니다. 예를 들어 취약점을 성공적으로 악용하면 가용성 손실 없이 기밀성이 완전히 손실될 수 있습니다.
언급한 바와 같이 SQL 주입은 시스템의 무결성, 가용성 및 기밀성에 부분적으로만 영향을 미치지만 가장 위험한 취약점 유형인 것 같습니다. 그러나 이러한 취약점은 공격자가 파일이나 정보에 무제한으로 액세스할 수 있도록 허용할 가능성이 있습니다.
따라서 실수로 대부분의 취약성은 데이터 침해로 이어질 가능성이 있지만 일부 취약성은 반드시 웹 애플리케이션을 심각한 보안 위험에 노출시키는 것은 아닙니다. 어느 쪽이든, 그러한 확률로 기회를 잡는 것을 피하는 것이 중요합니다.
WordPress 플러그인 코드에서 취약점이 얼마나 오래 생존할 수 있습니까?
일반적으로 코드의 취약성은 보안 위협을 수정하는 패치가 릴리스될 때까지 도입에서 공개를 거쳐 다양한 상태로 전환되는 경향이 있습니다.
일반적으로 취약점은 발견자가 보안 위협의 세부 사항을 더 많은 청중에게 공개할 때 공개됩니다. 결국 개발자가 근본적인 보안 위협을 수정하는 패치를 출시하면 취약점이 수정됩니다. 그러나 때때로 취약점이 식별되어 수정되기 전에 웹 애플리케이션에서 몇 년 동안 눈에 띄지 않은 채로 남아 있는 경우가 있습니다.
가능한 완화 및 탐지 방법
대부분의 사람들이 말하듯이 예방이 치료보다 낫습니다. 따라서 플러그인 개발자가 사이트 간 스크립팅, SQL 삽입 및 사이트 간 요청 위조를 완전히 이해, 감지 및 제거할 수 있다면 취약점이 75% 적은 플러그인을 갖게 될 가능성이 있습니다.
그러나 이 세 가지 취약점이 공격자가 악용할 수 있는 유일한 취약점은 아닙니다. 그러나 오히려 가장 일반적인 취약점입니다.
따라서 이러한 제안된 완화 전략이 주어진 플러그인이 완전히 안전하다는 것을 보장하지는 않지만 취약성 방지를 위한 좋은 원칙을 설정합니다. 예를 들어:
- 데이터가 사용되는 방식과 WordPress의 핵심 부분에서 예상하는 인코딩을 이해합니다. 이 경우 개발자는 항상 모든 입력을 악의적인 것으로 가정하고 필수 인코딩 패턴을 엄격하게 준수하지 않는 입력을 거부하거나 유효한 입력으로 변환해야 합니다.
- SQL 주입으로부터 데이터베이스를 보호하기 위해 개발자는 데이터 조작에서 코드를 분리하여 매개변수화된 SQL 문을 사용해야 합니다. 또한 항상 헤더를 확인하여 요청이 동일한 출처에서 온 것인지 확인하십시오. 또한 인증되지 않은 공격자에게 데이터가 노출되는 것을 방지하는 것도 유용할 수 있습니다.
- 상태 변경을 유발하는 모든 요청에 대해 GET 메서드를 사용하지 않는 것이 좋습니다.
취약점 탐지
불행히도 100% 정확도와 적용 범위로 가장 일반적인 코드 약점을 탐지하는 일관된 방법은 없습니다. 불행히도 데이터 흐름 분석을 사용하여 사이트 간 스크립팅을 감지하는 최신 기술도 때때로 가양성을 제공합니다.
대조적으로, 코드 검토와 같은 수동 분석 방법은 특히 설계와 관련된 취약성에 대해 완전히 자동화된 방법보다 더 효과적인 경향이 있습니다. 예를 들어, Cross-site Request Forgery는 각 애플리케이션이 사용자가 요청을 하려는 강한 확신이 필요한 요청을 나타내는 고유한 보안 정책과 방식이 있기 때문에 자동화된 방법을 사용하여 안정적으로 탐지하기가 특히 어렵습니다.
그러나 수동 분석은 제한된 시간 제약 내에서 원하는 코드 범위를 달성하지 못할 수도 있지만 SQL 주입을 찾는 데 유용할 수 있습니다. 이는 공격 표면이 지나치게 클 수 있기 때문에 모든 입력에 대해 고려해야 하는 약점에 대해 어려울 수 있습니다.
결과적으로 일부 조직에서는 웹 시스템 개발 프로세스의 모든 단계를 포괄하는 수동 검토와 자동 분석을 모두 포함하는 균형 잡힌 접근 방식의 중요성을 강조합니다.
WordPress 애플리케이션을 보호하기 위한 모범 사례
- WordPress.org와 같은 평판이 좋은 소스에서만 플러그인 다운로드: 누구나 WordPress 플러그인을 개발할 수 있으므로 해커는 이 취약점을 악용하여 자신의 악성 플러그인을 숨깁니다. 평판이 좋은 시장은 무해한 플러그인에 대한 액세스를 완전히 보장하지 않을 수 있지만 완화 방법으로 권장됩니다.
- 항상 모든 플러그인이 최신 상태인지 확인하십시오. WordPress 사용자는 일반적으로 종종 무시하는 알림 이메일을 받습니다. 플러그인이 자동으로 업데이트되도록 설정하거나 최소한 수동으로 직접 업그레이드하십시오.
- 보안 문제를 검사하여 플러그인의 보안 상태를 확인합니다. 대부분의 플러그인은 소스 코드를 사용할 수 있는 오픈 소스입니다. 따라서 플러그인의 "건강 명세서"를 제공하는 정적 소스 코드 분석 도구를 사용해야 합니다. 일부 고급 스캐너는 최적의 가장 빠른 수정 권장 사항을 알려줄 수도 있습니다.
- 사용하지 않는 모든 플러그인 제거: 불행히도 사용하지 않는 오래된 플러그인의 코드는 플러그인이 비활성화된 경우에도 일반적으로 서버에 남아 있습니다. 따라서 WordPress 사이트 유지 관리의 일환으로 사용하지 않는 플러그인을 항상 제거하십시오.
플러그인 개발자를 위한 권장 사항
- 플러그인 개발 중 항상 보안 통합: 취약점은 나중에 수정하는 데 더 높은 비용이 발생하므로 보안 SDLC(소프트웨어 개발 수명 주기) 프로세스의 일부로 플러그인 개발 내에 보안을 항상 통합하십시오.
- 코드 스캐너를 통해 플러그인을 실행하여 최신 보안 표준을 준수하는지 확인하십시오. 개발 중 및 릴리스 전에 포괄적인 소스 코드 분석 테스트를 수행해야 합니다.
보안 플러그인 개발
언급했듯이 플러그인 개발자는 보안 코드를 작성하기 위해 노력해야 합니다. 불행히도 많은 개발자들은 아직 숙련되지 않았기 때문에 방법을 모릅니다. 특히, 위에서 언급한 가장 일반적인 취약점의 특성을 감안할 때 많은 개발자가 일반적인 공격, 사용하는 언어 및 플랫폼에서 제공하는 보안 기능, 적용 가능한 사례를 사용하여 보안 문제를 완화하는 방법을 이해하지 못하는 것이 분명합니다.
따라서 Creole Studios의 권장 사항은 플러그인 개발자에 맞게 새로운 방법론을 개발해야 한다는 것입니다. 이러한 방법론은 개발자가 소프트웨어 보안에서 가장 중요한 주체이기 때문에 요구 사항 및 설계 단계에서 보안을 촉진해야 합니다.
마지막 생각들
주제를 요약하면 WordPress 플러그인이 손상될 수 있으며 가장 일반적인 취약점은 Cross-site Scripting, SQL Injection 및 Cross-site Request Forgery입니다.
불행히도 연구에 따르면 이러한 취약점이 발생하는 빈도는 시간이 지남에 따라 감소하지 않는 것 같습니다. 그 주된 이유는 대부분의 WordPress 플러그인 개발자가 보안 프로그래밍과 관련하여 기술이 다소 부족하기 때문이라고 가정하는 것이 안전합니다.
즉, 1차 방어선은 개발팀이 되어야 합니다! 그리고 우리는 최고의 보안 관행이 시행되면 사용자가 사이버 범죄자로부터 보호받고 있다는 사실을 알고 밤에 잠을 더 잘 수 있다고 믿습니다.
WordPress 보안 관행에 대한 자세한 내용은 상담을 위해 친절하게 연락하십시오.