Seguretat

Obteniu més informació sobre la seguretat del programari principal de WordPress en aquest document tècnic gratuït. També podeu descarregar-lo enformat PDF.

Resum

Aquest document és una anàlisi i explicació del desenvolupament del programari principal del WordPress i els processos de seguretat relacionats, així com un examen de la seguretat inherent integrada directament al programari. Els qui prenen decisions que avaluen el WordPress com un sistema d'administració de contingut o un entorn de treball d'aplicació web, han d'usar aquest document en l'anàlisi i presa de decisions, i els desenvolupadors referir-se a ell per familiaritzar-se amb els components de seguretat i les millors pràctiques del programari.

La informació en aquest document està actualitzada per a l'última versió estable del programari, el WordPress 4.7 al moment de la publicació, però ha de considerar-se rellevant també per a les versions més recents del programari, ja que la compatibilitat amb versions anteriors és un enfocament important per a l'Equip de desenvolupament de WordPress. Les mesures de seguretat específiques i els canvis s'anotaran a mesura que s'hagin afegit al nucli del programari en versions específiques. Es recomana encaridament executar sempre l'última versió estable del WordPress per garantir l'experiència més segura possible.

Resum executiu

El WordPress és un sistema dinàmic de gestió de contingut de codi obert que s'utilitza per impulsar milions de llocs web, aplicacions web i blogs. Actualment potencia més de 33% dels 10 milions de llocs web més importants d'Internet. La usabilitat, l'extensibilitat i la madura comunitat de desenvolupament converteixen el WordPress en una opció popular i segura per a llocs web de totes les mides.

Des de la seva ideació l'any 2003, el WordPress ha anat millorant de manera constant de forma que el nucli del programari pugui resoldre i mitigar amenaces de seguretat comunes, incloses les 10 identificades a la llista de l'Open Web Application Security Project (OWASP) com a vulnerabilitats de seguretat comunes, que es discuteixen en aquest document.

L'equip de seguretat del WordPress, en coŀlaboració amb l'equip de lideratge dels components centrals del WordPress i recolzat per la comunitat global del WordPress, treballa per identificar i resoldre els problemes de seguretat al programari principal, disponible per a la distribució i instaŀlació a WordPress.org, així com per recomanar i documentar les millors pràctiques de seguretat per als autors d'extensions i temes de tercers.

Els desenvolupadors i administradors del lloc han de prestar especial atenció a l'ús correcte de les API principals i la configuració del servidor subjacent que han estat l'origin de vulnerabilitats comuns, així com garantir que tots els usuaris emprin contrasenyes segures per accedir al WordPress.

Una visió general del WordPress

El WordPress és un sistema de gestió de continguts (CMS) lliure i de codi obert. És el programari CMS més utilitzat en el món, i gestiona més del 33% dels 10 milions de llocs web més importants1, amb una quota de mercat estimada del 60% de tots els llocs web que utilitzen CMS.

WordPress is licensed under the General Public License (GPLv2 or later) which provides four core freedoms, and can be considered as the WordPress “bill of rights”:

  1. La llibertat d'executar el programa, per a qualsevol propòsit.
  2. La llibertat d'estudiar com funciona el programa i canviar-ho perquè faci el que vulgueu.
  3. La llibertat de redistribuir.
  4. La llibertat de distribuir còpies de les versions modificades a uns altres.

L'equip de direcció del WordPress Core

The WordPress project is a meritocracy, run by a core leadership team, and led by its co-creator and lead developer, Matt Mullenweg. The team governs all aspects of the project, including core development, WordPress.org, and community initiatives.

L'equip de direcció del Core, o del nucli, consisteix de Matt Mullenweg, cinc desenvolupadors líders i més de mitja dotzena de desenvolupadors del nucli amb accés permanent per a fer canvis. Aquests desenvolupadors tenen autoritat final en decisions tècniques, i lideren les discussions d'arquitectura i els esforços d'implementació.

El WordPress té una sèrie de desenvolupadors contribuents. Alguns d'aquests són antics o actuals que pugen canvis, i alguns són probablement futurs desenvolupadors que pujaran. Aquests desenvolupadors contribuents són coŀlaboradors confiables i veterans del WordPress que s'han guanyat un gran respecte entre els seus companys. Segons sigui necessari, el WordPress també compta amb convidats que pugen canvis, persones a les quals se'ls atorga accés per pujar canvis, de vegades per a un component específic, de forma temporal o de prova.

Els desenvolupadors principals i contribuents guien principalment el desenvolupament del WordPress. Cada versió, centenars de desenvolupadors contribueixen amb el codi de WordPress. Aquests col·laboradors principals són voluntaris que contribueixen d'alguna manera al codi.

El cicle de publicació de versions del WordPress

Cada cicle de llançament del WordPress està dirigit per un o més dels desenvolupadors centrals del WordPress. Un cicle de llançament generalment dura al voltant de 4 mesos des de la reunió inicial d'abast fins al llançament de la versió.

Un cicle de publicació segueix el següent patró2:

  • Fase 1: Planificació i assegurament de líders d'equip. Això es fa a la sala de xat #core en Slack. El líder de la versió analitza les característiques de la propera versió del WordPress. Els coŀlaboradors de WordPress s'involucren amb aquesta discussió. El líder de llançament identificarà els líders de l'equip per a cadascuna de les funcions.
  • Fase 2: comença el treball de desenvolupament. Els líders d'equip reuneixen equips i treballen en les funcions assignades. Els xats regulars estan programats per garantir que el desenvolupament segueixi avançant.
  • Fase 3: Beta. Es llancen betes i se'ls demana als beta-testers que comencin a reportar errors. A partir d'aquesta fase, no es realitzen més confirmacions per a millores o sol·licituds de funcions noves. Es recomana als autors d'extensions i temes de tercers que provin el seu codi en relació amb els propers canvis.
  • Fase 4: Versió candidata. Hi ha una congelació de cadenes per a cadenes traduïbles a partir d'aquest punt. El treball està dirigit a regressions i bloquejadors solament.
  • Fase 5: Llançament. La versió de WordPress es llança i es posa a disposició en l'administrador de WordPress per a actualitzacions.

Numeració de versions i versions de seguretat

A major WordPress version is dictated by the first two sequences. For example, 3.5 is a major release, as is 3.6, 3.7, or 4.0. There isn’t a “WordPress 3” or “WordPress 4” and each major release is referred to by its numbering, e.g., “WordPress 3.9.”

Major releases may add new user features and developer APIs. Though typically in the software world, a “major” version means you can break backwards compatibility, WordPress strives to never break backwards compatibility. Backwards compatibility is one of the project’s most important philosophies, with the aim of making updates much easier on users and developers alike.

A minor WordPress version is dictated by the third sequence. Version 3.5.1 is a minor release, as is 3.4.23. A minor release is reserved for fixing security vulnerabilities and addressing critical bugs only. Since new versions of WordPress are released so frequently — the aim is every 4-5 months for a major release, and minor releases happen as needed — there is only a need for major and minor releases.

Compatibilitat amb versions anteriors

El projecte WordPress té un compromís molt fort amb la compatibilitat cap enrere. Aquest compromís vol dir que temes, extensions i codi personalitzat continuarà funcionant quan s'actualitzi el nucli del WordPress, encoratjant els propietaris de llocs web a mantenir la seva versió de WordPress actualitzada a l'última versió segura.

El WordPress i la seguretat

L'equip de seguretat del WordPress

The WordPress Security Team is made up of approximately 50 experts including lead developers and security researchers — about half are employees of Automattic (makers of WordPress.com, the earliest and largest WordPress hosting platform on the web), and a number work in the web security field. The team consults with well-known and trusted security researchers and hosting companies3.

The WordPress Security Team often collaborates with other security teams to address issues in common dependencies, such as resolving the vulnerability in the PHP XML parser, used by the XML-RPC API that ships with WordPress, in WordPress 3.9.24. This vulnerability resolution was a result of a joint effort by both WordPress and Drupal security teams.

Riscos, processos i història de seguretat de WordPress

The WordPress Security Team believes in Responsible Disclosure by alerting the security team immediately of any potential vulnerabilities. Potential security vulnerabilities can be signaled to the Security Team via the WordPress HackerOne5. The Security Team communicates amongst itself via a private Slack channel, and works on a walled-off, private Trac for tracking, testing, and fixing bugs and security problems.

Each security report is acknowledged upon receipt, and the team works to verify the vulnerability and determine its severity. If confirmed, the security team then plans for a patch to fix the problem which can be committed to an upcoming release of the WordPress software or it can be pushed as an immediate security release, depending on the severity of the issue.

For an immediate security release, an advisory is published by the Security Team to the WordPress.org News site6 announcing the release and detailing the changes. Credit for the responsible disclosure of a vulnerability is given in the advisory to encourage and reinforce continued responsible reporting in the future.

Administrators of the WordPress software see a notification on their site dashboard to upgrade when a new release is available, and following the manual upgrade users are redirected to the About WordPress screen which details the changes. If administrators have automatic background updates enabled, they will receive an email after an upgrade has been completed.

Actualitzacions automàtiques en segon pla per a llançaments de seguretat

Starting with version 3.7, WordPress introduced automated background updates for all minor releases7, such as 3.7.1 and 3.7.2. The WordPress Security Team can identify, fix, and push out automated security enhancements for WordPress without the site owner needing to do anything on their end, and the security update will install automatically.

When a security update is pushed for the current stable release of WordPress, the core team will also push security updates for all the releases that are capable of background updates (since WordPress 3.7), so these older but still recent versions of WordPress will receive security enhancements.

Individual site owners can opt to remove automatic background updates through a simple change in their configuration file, but keeping the functionality is strongly recommended by the core team, as well as running the latest stable release of WordPress.

Top 10 de l'OWASP 2013

The Open Web Application Security Project (OWASP) is an online community dedicated to web application security. The OWASP Top 10 list8 focuses on identifying the most serious application security risks for a broad array of organizations. The Top 10 items are selected and prioritized in combination with consensus estimates of exploitability, detectability, and impact estimates.

The following sections discuss the APIs, resources, and policies that WordPress uses to strengthen the core software and 3rd party plugins and themes against these potential risks.

A1 - Injecció

There is a set of functions and APIs available in WordPress to assist developers in making sure unauthorized code cannot be injected, and help them validate and sanitize data. Best practices and documentation are available9 on how to use these APIs to protect, validate, or sanitize input and output data in HTML, URLs, HTTP headers, and when interacting with the database and filesystem. Administrators can also further restrict the types of file which can be uploaded via filters.

A2 - Gestió de sessions i autenticació trencada

WordPress core software manages user accounts and authentication and details such as the user ID, name, and password are managed on the server-side, as well as the authentication cookies. Passwords are protected in the database using standard salting and stretching techniques. Existing sessions are destroyed upon logout for versions of WordPress after 4.0.

A3 - Cross Site Scripting (XSS)

WordPress provides a range of functions which can help ensure that user-supplied data is safe10. Trusted users, that is administrators and editors on a single WordPress installation, and network administrators only in WordPress Multisite, can post unfiltered HTML or JavaScript as they need to, such as inside a post or page. Untrusted users and user-submitted content is filtered by default to remove dangerous entities, using the KSES library through the wp_kses function.

As an example, the WordPress core team noticed before the release of WordPress 2.3 that the function the_search_query() was being misused by most theme authors, who were not escaping the function’s output for use in HTML. In a very rare case of slightly breaking backward compatibility, the function’s output was changed in WordPress 2.3 to be pre-escaped.

A4 - Referència directa insegura a un objecte

WordPress often provides direct object reference, such as unique numeric identifiers of user accounts or content available in the URL or form fields. While these identifiers disclose direct system information, WordPress’ rich permissions and access control system prevent unauthorized requests.

A5 - Mala configuració de seguretat

La majoria de les operacions de configuració de seguretat del WordPress estan limitades a un sol administrador autoritzat. La configuració predeterminada per al WordPress s'avalua contínuament a nivell de l'equip central, i l'equip central del WordPress proporciona documentació i millors pràctiques per reforçar la seguretat de la configuració del servidor per executar un lloc amb WordPress11.

A6 - Exposició a dades sensibles

WordPress user account passwords are salted and hashed based on the Portable PHP Password Hashing Framework12. WordPress’ permission system is used to control access to private information such an registered users’ PII, commenters’ email addresses, privately published content, etc. In WordPress 3.7, a password strength meter was included in the core software providing additional information to users setting their passwords and hints on increasing strength. WordPress also has an optional configuration setting for requiring HTTPS.

A7 - Manca de control d'accés al nivell de funcions

WordPress checks for proper authorization and permissions for any function level access requests prior to the action being executed. Access or visualization of administrative URLs, menus, and pages without proper authentication is tightly integrated with the authentication system to prevent access from unauthorized users.

A8 - Cross Site Request Forgery (CSRF)

WordPress usa testimonis criptogràfics, anomenats números utilitzats una vegada (nonces)13, per validar la intenció de les soŀlicituds d'acció d'usuaris autoritzats, per protegir-se contra possibles amenaces CSRF. El WordPress proporciona una API per a la generació d'aquests testimonis per crear i verificar testimonis únics i temporals. El testimoni es limita a un usuari específic, una acció específica, un objecte específic i un període de temps específic, que es pot afegir als formularis i URLs segons sigui necessari. A més, tots els números utilitzats una vegada, s'invaliden en tancar la sessió.

A9 - Ús de components amb vulnerabilitats conegudes

L'equip central del WordPress supervisa de prop les poques biblioteques i entorns de treball del WordPress integrats amb la funcionalitat dels components principals. En el passat, l'equip central ha realitzat contribucions a diversos components de tercers per fer-los més segurs, com l'actualització per corregir una vulnerabilitat entre llocs del TinyMCE en el WordPress 3.5.214.

Si és necessari, l'equip central pot decidir bifurcar o reemplaçar components externs crítics, com quan la biblioteca SWFUpload va ser oficialment reemplaçada per la biblioteca Plupload en la versió 3.5.2, i l'equip de seguretat va posar a disposició una bifurcació segura de SWFUpload<15 per a aquelles extensions que van continuar usant SWFUpload a curt termini.

A10 - Redireccions i reenviaments no validats

WordPress’ internal access control and authentication system will protect against attempts to direct users to unwanted destinations or automatic redirects. This functionality is also made available to plugin developers via an API, wp_safe_redirect()16.

Altres riscos i preocupacions de seguretat

Atacs de processament XXE (XML eXternal Entity)

Quan processa XML, el WordPress deshabilita la càrrega d'entitats XML personalitzades per prevenir els atacs d'entitats externes i d'expansió d'entitats. A més de la funcionalitat de PHP, el WordPress no proporciona cap API de processament segur d'XML per als autors d'extensions.

Atacs SSRF (Server Side Request Forgery)

Les sol·licituds HTTP emeses per WordPress es filtren per evitar l'accés a les adreces IP privades i de bucle invertit. A més, l'accés només està permès a certs ports HTTP estàndard.

Seguretat de temes i extensions del WordPress

El tema predeterminat

WordPress requires a theme to be enabled to render content visible on the frontend. The default theme which ships with core WordPress (currently "Twenty Nineteen") has been vigorously reviewed and tested for security reasons by both the team of theme developers plus the core development team.

El tema predeterminat pot servir com a punt de partida per al desenvolupament d'un tema personalitzat, i els desenvolupadors del lloc poden crear un tema secundari que inclogui certa personalització, però torni al tema predeterminat per a la major part de la funcionalitat i la seguretat. El tema predeterminat pot ser eliminat fàcilment per un administrador si no és necessari.

Repositoris de temes i extensions de WordPress.org

There are approximately 50.000+ plugins and 5.000+ themes listed on the WordPress.org site. These themes and plugins are submitted for inclusion and are manually reviewed by volunteers before making them available on the repository.

Inclusion of plugins and themes in the repository is not a guarantee that they are free from security vulnerabilities. Guidelines are provided for plugin authors to consult prior to submission for inclusion in the repository17, and extensive documentation about how to do WordPress theme development18 is provided on the WordPress.org site.

Cada extensió i tema té la capacitat de ser desenvolupat contínuament pel propietari del mateix o del tema, ​​qualsevol correcció posterior o desenvolupament de característiques es pot penjar al repositori i posar a disposició dels usuaris aquesta extensió o tema instaŀlat amb una descripció d'aquest canvi. Els administradors del lloc són notificats dels complements que han d'actualitzar-se a través del tauler d'administració.

Quan l'equip de seguretat de WordPress descobreix una vulnerabilitat en una extensió, es posa en contacte amb l'autor de l'extensió i treballen junts per corregir i llançar-ne una versió segura. Si hi ha una falta de resposta per part de l'autor de l'extensió o si la vulnerabilitat és greu, l'extensió o tema s'extreu del directori públic i, en alguns casos, l'equip de seguretat ho corregeix i actualitza directament.

L'equip de revisió de temes

The Theme Review Team is a group of volunteers, led by key and established members of the WordPress community, who review and approve themes submitted to be included in the official WordPress Theme directory. The Theme Review Team maintains the official Theme Review Guidelines19, the Theme Unit Test Datas20, and the Theme Check Plugins21, and attempts to engage and educate the WordPress Theme developer community regarding development best practices. Inclusion in the group is moderated by core committers of the WordPress development team.

El rol del proveïdor d'allotjament en la seguretat de WordPress

WordPress can be installed on a multitude of platforms. Though WordPress core software provides many provisions for operating a secure web application, which were covered in this document, the configuration of the operating system and the underlying web server hosting the software is equally important to keep the WordPress applications secure.

Una nota sobre WordPress.com i la seguretat del WordPress

WordPress.com is the largest WordPress installation in the world, and is owned and managed by Automattic, Inc., which was founded by Matt Mullenweg, the WordPress project co-creator. WordPress.com runs on the core WordPress software, and has its own security processes, risks, and solutions22. This document refers to security regarding the self-hosted, downloadable open source WordPress software available from WordPress.org and installable on any server in the world.

Apèndix

APIs del nucli del WordPress

La Interfície de programació d'aplicacions (API) del nucli WordPress es compon de diverses API individuals23, cada una cobreix les funcions involucrades i l'ús d'un conjunt de funcionalitats. Juntes, formen la interfície del projecte que permet que els complements i els temes interactuïn, alterin i estenguin la funcionalitat central de WordPress de forma segura.

Mentre que cada API de WordPress proporciona les millors pràctiques i maneres estandarditzades d'interactuar i estendre el programari bàsic de WordPress, les següents API de WordPress són les més pertinents per fer complir i reforçar la seguretat de WordPress:

API de base de dades

L'API24 de la base de dades, agregada a WordPress 0.71, proporciona el mètode correcte per accedir a les dades com a valors anomenats que s'emmagatzemen a la capa de la base de dades.

API del sistema de fitxers

El sistema de fitxers API25, afegit al WordPress 2.626, va ser creat originalment per a la funcionalitat d'actualitzacions automàtiques del WordPress. L'API del sistema de fitxers resumeix la funcionalitat necessària per llegir i escriure fitxers locals al sistema de fitxers per fer-los de forma segura, en diversos tipus d'amfitrions.

Ho fa a través de la classe WP_Filesystem_Base i diverses subclasses que implementen diferents maneres de connectar-se al sistema de fitxers local, depenent del suport individual de l'amfitrió. Qualsevol tema o complement que necessiteu escriure fitxers localment hauria de fer-ho utilitzant la família de classes de WP_Filesystem.

API HTTP

L'API HTTP27, afegida en WordPress 2.728 i ampliada més en WordPress 2.8, estandarditza les sol·licituds HTTP de WordPress. L'API maneja les galetes, la codificació i descodificació de gzip, la descodificació de trossos (si HTTP 1.1) i diverses altres implementacions del protocol HTTP. L'API estandarditza les sol·licituds, comprova cada mètode abans de l'enviament i, segons la configuració del vostre servidor, fa servir el mètode adequat per fer la sol·licitud.

Permisos i API de l'usuari actual

Els permisos i l'API29 d'usuari actuals són un conjunt de funcions que us ajudaran a verificar els permisos i l'autoritat de l'usuari actual per realitzar qualsevol tasca o operació que es sol·liciti, i pot protegir encara més els usuaris no autoritzats que accedeixen o realitzen funcions més enllà de les seves capacitats permeses.

Llicència de contingut de paper blanc

El text d'aquest document (sense incloure el logotip de WordPress o marca comercial ) està llicenciat sota CC0 1.0 Universal (CC0 1.0) Dedicació de domini públic. Podeu copiar, modificar, distribuir i realitzar el treball, fins i tot amb fins comercials, tot sense demanar permís.

Gràcies especials al llibre blanc de seguretat del Drupal, que ens va aportar inspiració.

Lectura addicional


Autoritzat per Sara Rosso

Contribucions de Barry Abrahamson, Michael Adams, Jon Cave, Helen Hou-Sandí, Dion Hulse, Mo Jangda, Paul Maiorana

Versió 1.0 Març de 2015


Notes de peu de pàgina