보안 문제가 있는 경우 유지 관리 플러그인을 WordPress 저장소에서 일시 중단해야 합니까?

게시 됨: 2020-03-12

2020년 2월 27일 오후 9시 34분(CET)에 플러그인 WP 활동 로그가 " 악용으로 인해 WordPress.org 플러그인 디렉토리에서 일시적으로 철회됨"을 알리는 이메일을 받았습니다.

2020년 2월 28일 금요일 오후 4시 88분에 수정 사항을 제출했습니다. 수정 사항을 릴리스하는 데 16.5시간 밖에 걸리지 않았습니다. 지원 응답 시간(참조)이 매우 높기 때문에 정상 근무 시간(유럽에 기반) 중에 이 문제가 발생했다면 훨씬 더 일찍 문제를 수정했을 것입니다.

플러그인이 2020년 3월 2일 월요일 오후 1시에 복원되었습니다. 수정 사항을 제출한 지 69시간이 지난 시점입니다. 주말 때문에 팀이 플러그인을 복원하는 데 너무 오랜 시간이 걸렸다는 점에 유의하는 것이 중요합니다.

리포지토리에서 철회된 WP 활동 로그

내가 이 글을 쓰는 이유는?

보안 문제가 있는 유지 관리되지 않는 플러그인은 WordPress 저장소에서 일시 중단되어야 한다고 생각합니다. 또한 플러그인 리뷰 팀의 자원봉사자들이 하는 일에 대해 깊은 존경심을 갖고 있으며 보고된 보안 문제에 대해서도 전적인 책임을 집니다.

그러나 유지 관리되는 플러그인에서 보고된 보안 문제가 더 잘 처리될 수 있다고 생각합니다. 현재 처리되는 방식 때문에 플러그인의 평판이 크게 나빠지고 해당 사용자와 웹사이트가 위험에 노출됩니다. 따라서 이 게시물의 끝에서 나는 도움이 될 수 있는 몇 가지 가능한 개선 사항을 강조하고 그것들을 고려해야 한다고 생각합니다. 아이디어는 항상 더 적은 사용자를 위험에 처하게 하고 플러그인과 개발자에게 미치는 영향을 줄이는 것입니다.

이 게시물에서는 발생한 모든 세부 사항을 문서화하고 플러그인에서 보고된 심각도가 낮은 엣지 케이스 취약점에 대해서도 설명합니다.

WordPress 플러그인 보안 문제를 보고하는 절차는 무엇입니까?

플러그인 핸드북의 공식 지침에서:

개발자에게 직접 연락하려는 모든 시도는 플러그인을 당사에 보고하기 전에 이루어져야 합니다(이가 어려울 수 있음을 이해하지만 먼저 플러그인의 소스 코드를 확인하고 많은 개발자가 이메일을 나열합니다). 개별적으로 연락할 수 없는 경우 직접 문의해 주시면 도와드리겠습니다.

우리의 경우에는 어떻게 되었습니까?

플러그인을 개발하는 플러그인에서 이를 매우 명확하게 합니다. 저장소의 플러그인 페이지를 보면 아이디어를 얻을 수 있습니다! 우리는 또한 우리에게 매우 쉽게 연락할 수 있습니다.

그러나 플러그인 저장소에서 플러그인이 일시적으로 철회되기 전에 아무도 보안 문제를 보고하지 않았습니다. 그래서 누군가 WordPress 플러그인 검토 팀에 문제를 보고했고 사전 알림 없이 저장소에서 플러그인을 일시적으로 철회했습니다.

이유와 이유, 좋은 점, 나쁜 점, 개선할 수 있는 점에 대해 알아보기 전에 플러그인 취약점과 우리가 누구인지에 대한 간단한 설명을 살펴보겠습니다.

플러그인 취약점은 무엇이었습니까?

사용자가 플러그인을 구성할 수 있도록 WP 활동 로그에 설치 마법사가 있습니다. 마법사의 설정 중 하나를 사용하면 관리자가 아닌 사용자가 활동 로그를 읽을 수 있습니다.

WP 활동 로그 설치 마법사

그러나 우리는 실수를 저질렀습니다. 마법사를 실행하는 사용자가 인증되었는지 확인하지 않았습니다. 따라서 인증되지 않은 사용자가 마법사를 실행하고 다른 사용자 또는 역할이 플러그인 설정에 액세스하도록 허용할 수 있습니다. 그러나 이것은 극단적인 경우 낮은 심각도 문제입니다.

심각도가 낮은 엣지 케이스 보안 문제인 이유는 무엇입니까?

공격자는 다음과 같은 경우에만 이를 악용할 수 있습니다.

  • 설치 마법사가 설치 프로그램에 의해 완료되지 않았습니다.
  • 공격자들은 이미 사용자를 보유하고 있었습니다 / 웹사이트의 사용자에 대한 액세스 권한이 있었고,
  • 공격자는 플러그인 설정 및 활동 로그에만 액세스할 수 있습니다.

이 보안 문제를 악용하여 공격자는 WordPress 웹 사이트의 다른 권한에 대한 액세스 권한을 얻지 못합니다. 따라서 이 익스플로잇은 웹사이트의 동작과 기능 자체에 부정적인 영향을 미치지 않습니다.

개념의 증거

POC는 매우 간단합니다. 인증되지 않은 사용자로 이 페이지를 방문하십시오.

http://example.com/wp-admin/admin-post.php?page=wsal-setup&current-step=access

이것은 로그를 볼 수 있는 사람을 지정할 수 있는 마법사의 단계입니다. HTML 페이지의 소스에서 '_wpnonce' nonce를 검색하고 복사하여 다음 curl 명령에 삽입합니다.

$ curl 'http://example.com/wp-admin/admin-post.php?page=wsal-setup&current-step=access' -d '_wpnonce=INSERT-NONCE-HERE&wsal-access=yes&editors%5B%5D= 구독자&save_step=다음'

가입자로 로그인하면 플러그인 설정에 대한 전체 액세스 권한을 갖게 됩니다.

이 사건이 잘못 처리된 이유는 무엇이라고 생각합니까?

우리가 보낸 이메일에는 다음과 같은 내용이 있었습니다.

우리는 플러그인을 가볍게 닫지 않으며 보안 문제와 관련하여 사용자 수와 개발자 기록을 보고서의 심각성과 손상 가능성과 균형을 맞추려고 시도합니다.

그러나 우리 플러그인이 너무 일찍 철회되었다고 생각합니다. 지금까지;

  1. 과거에 문제가 발생했을 때 우리는 항상 몇 시간 내에 문제를 해결했습니다. 이번에도 똑같이 했습니다.
  2. 플러그인 검토 팀에서 연락이 오면 항상 제 시간에 답변을 드렸습니다.
  3. 보안 문제는 플러그인에만 영향을 미쳤으며(심각도 낮음) 예외적인 경우였습니다.
  4. 보안 문제를 자동으로 악용할 수 없습니다.
  5. 공격자가 할 수 있는 유일한 피해 는 플러그인 설정을 변경하거나 활동 로그를 읽거나 제거하는 것이었습니다.

다른 개발자들은 이러한 상황에 대해 어떻게 생각합니까?

우리 대부분은 이미 유사한 문제에 대한 기사, 트윗 또는 소셜 미디어의 메시지를 읽었습니다. 하지만 다른 사람들, 특히 개발자들이 이에 대해 어떻게 생각하는지 직접 알고 싶었습니다. 내가 보지 못하는 것들이 있을 수 있기 때문에 이것이 중요하다고 생각합니다.

우선 문제를 식별한 사람에게 책임 있는 공개에 대해 감사하는 이메일을 보냈습니다. 그의 대답은 이랬다.

“플러그인의 문제를 빠르게 해결해 주셔서 기쁩니다. BTW, 나는 wordpress.org의 사람들이 며칠 동안 그것을 닫았다는 것을 알았습니다. 그것은 약간 가혹하고 실제로 필요하지 않았습니다.”- Jerome Bruandet.

Facebook 그룹 Selling WordPress Products에서 작은 설문 조사도 했습니다. 이 그룹은 작지만 대부분의 구성원은 플러그인 및 테마 개발자입니다. 설문 조사에서 개발자들은 심각도가 낮거나 중간 정도인 문제의 경우 개발자에게 연락하여 플러그인을 철회하지 않고 수정 사항을 제공할 기회를 주어야 한다는 데 만장일치로 동의한다는 것을 알 수 있습니다.

WordPress 플러그인 개발자가 Facebook 그룹에서 설문 조사

이러한 절차를 어떻게 개선할 수 있습니까?

내가 아는 한, 누군가 플러그인의 보안 문제를 보고할 때 문서화된 절차가 없습니다. 이 경우 다음과 같은 절차가 개발자에게 도움이 될 수 있으며 위험에 처하는 사람도 줄일 수 있습니다.

플러그인을 닫기 전에 개발자에게 연락하고 조치 계획에 동의하십시오.

플러그인 검토 팀은 플러그인을 종료하기 전에 개발자에게 연락하여 취약점을 확인할 수 있습니다. 개발자는 수정을 위한 합당한 날짜를 포함하여 조치 계획과 함께 회신해야 합니다.

필요한 경우 플러그인 검토 팀에서 기한을 설정할 수 있습니다. 예를 들어 개발자는 문제를 해결하는 데 12~24시간이 있어야 합니다. 그러나 어떤 경우에는 시간대 등에 따라 더 많은 시간이 필요할 수 있습니다. 개발자가 응답하지 않으면 저장소에서 플러그인을 철회해야 합니다.

보안 문제의 심각도 및 유형 확인

이것은 논쟁의 여지가 있을 수 있습니다. 그러나 약간의 보안 경험이 있는 사람은 보고된 보안 문제가 자동으로 악용될 수 있는지, 예외적인 경우인지, 보고된 개념 증명(POC)이 어떤 영향을 미치는지 쉽게 알 수 있습니다.

개발자가 실행 계획을 고수하는지 확인

개발자가 수정 사항을 정시에 제출하고 행동 계획에 포함된 다른 작업을 고수하는지 확인하기 위한 일종의 확인이 있어야 합니다.

리포지토리에서 유지 관리 플러그인을 철회해도 도움이 되지 않습니다.

유지되는 플러그인의 경우 저장소에서 플러그인을 철회하면 득보다 실이 더 많습니다. 예를 들어;

  1. 플러그인에 문제가 있음을 공개합니다. 아마도 보안 문제일 가능성이 큽니다. 이것은 많은 경보를 발생시키고 플러그인에 스포트라이트를 줍니다. 이것은 또한 플러그인의 무언가가 악용될 수 있다고 알려주는 공격자를 초대하는 것과 같습니다.
  2. 갑자기 웹 사이트가 대상이 되었기 때문에 현재 플러그인 사용자 기반을 노출합니다. 대부분의 사용자는 특히 플러그인의 기능이 웹사이트와 비즈니스의 핵심인 경우 무엇을 해야 하는지 전혀 모릅니다.
  3. 수정이 지연될 가능성이 높아집니다. 이것은 일반적으로 의사 소통 부족이나 휴일 및 주말 때문에 발생합니다.

저장소에서 플러그인을 철회하면 감염 이 전파 되는 것을 막을 수 있다고 주장할 수도 있습니다. 그러나 보안 문제의 심각도가 낮으면 악용을 자동화할 수 없고 공개 책임이 있거나 관련 위험이 없거나 위험이 매우 낮습니다.

면책 조항: 이것은 공격이 아닙니다.

이것은 WordPress 플러그인 검토 팀이나 이러한 프로세스에 관련된 모든 사람에 대한 공격이 아니라는 점을 지적하고 싶습니다. 나는 정직하게 그들의 일을 존중하며 그들이 하는 일이 선의로 행해진다는 것을 압니다. 그러나 다른 모든 시스템 및 프로세스와 마찬가지로 개선의 여지가 분명히 있습니다.

많은 사람들이 내가 변화를 원하면 이 게시물을 쓰는 대신 자원봉사를 해야 한다고 말할 것입니다.

나는 꽤 오랫동안 가입하려고 노력했습니다. 저는 참여하기 위해 여러 WordCamps의 여러 사람들과 이야기를 나눴고 자원 봉사자 호출을 위해 Make WordPress 플러그인 페이지를 모니터링했습니다. 그러나 지난 몇 년 동안에는 공석이 없었습니다. 도움이 필요할 때 초대를 통해서만 새 회원을 추가했습니다.