[{"data":1,"prerenderedAt":246},["ShallowReactive",2],{"seo-verification":3,"blog-drupal-commerce-cve-2026-118539-actualizar-y-auditar-pedidos-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-drupal-commerce-cve-2026-118539-actualizar-y-auditar-pedidos-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":192,"ctaBody":193,"ctaButton":194,"ctaUrl":195,"relatedPosts":196},556,"drupal-commerce-cve-2026-118539-actualizar-y-auditar-pedidos",{"fr":12,"en":13,"ar":14,"es":10},"drupal-commerce-core-cve-2026-118539-sa-contrib-2026-254-mettre-a-jour","drupal-commerce-cve-2026-118539-update-and-audit-orders","ثغرة-drupal-commerce-cve-2026-118539-التحديث-وتدقيق-الطلبات","Drupal Commerce CVE-2026-118539: corregir y auditar pedidos","Fallo de Commerce Core explotado, aviso SA-CONTRIB-2026-254: localice las versiones afectadas, pase a 3.3.13 u 8.x-2.41 y audite los pedidos.",10,0,false,"2026-11-01T00:00:00+00:00","2026-11-01T14:14:31+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},8,"Seguridad y monitorización","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdrupal-commerce-core-cve-2026-118539-sa-contrib-2026-254-mettre-a-jour-poster.svg","El aviso SA-CONTRIB-2026-254, publicado el 28 de octubre de 2026, describe una elusión de acceso en Commerce Core, el módulo que sostiene el proceso de compra de muchas tiendas Drupal. No exige autenticación y drupal.org lo declara explotado en la práctica. Corregir la versión no basta: un pedido alterado antes del parche sigue en la base de datos. Para una agencia que aloja varias tiendas, la pregunta es doble: cuáles están afectadas y cuál ya ha sido objeto de abuso. Este es el procedimiento, entorno por entorno, con una auditoría de pedidos que entregar al cliente.",[35,39,74,77,96,99,120,123,150,168,172,183,186,189],{"type":36,"title":37,"body":38},"h2","El fallo en un párrafo, el resto es procedimiento","El aviso SA-CONTRIB-2026-254 afecta al módulo Commerce Core (`drupal\u002Fcommerce`). Drupal.org lo clasifica como «Highly critical», 21 sobre 25, y describe una elusión de acceso: el módulo no protege lo suficiente ciertas rutas y ciertos campos de entidad. El aviso sitúa el nivel de autenticación requerido en «todos\u002Fanónimos» y precisa que el fallo puede tener consecuencias financieras para el vendedor. También afirma que se explota activamente.\n\nEl aviso no nombra ni las rutas ni los campos afectados. Por eso no deducimos nada: ni lista de rutas que bloquear, ni firma que buscar en los registros. El identificador CVE-2026-118539 se toma de la página del aviso; no lo hemos contrastado con la base NVD, así que cítelo como «identificador publicado por el aviso» mientras no se haga esa comprobación.",{"type":40,"title":41,"headers":42,"rows":46},"comparison","Tabla de referencia: rama, versión afectada, versión corregida",[43,44,45],"Su situación","Estado según el aviso","Acción",[47,51,54,58,62,66,70],[48,49,50],"Commerce 3.x, de 3.0.0 hasta antes de 3.3.13","Vulnerable","Pasar a 3.3.13 o posterior",[52,49,53],"Commerce 2.x (8.x-2.x), antes de 8.x-2.41","Pasar a 8.x-2.41 o posterior",[55,56,57],"Commerce 3.3.13 u 8.x-2.41 ya instalado","Corregido","Auditar igualmente los pedidos anteriores a la actualización",[59,60,61],"Drupal ^10.3 u 11","Rama 3.x indicada como compatible","Actualizar dentro de la rama 3.x",[63,64,65],"Drupal ^9.3 o ^10","Rama 2.x indicada como compatible","Actualizar dentro de la rama 2.x, sin cambiar de rama a la vez",[67,68,69],"Módulo ausente de `composer.lock`","Fuera del alcance de este aviso","Anotar la ausencia en el inventario",[71,72,73],"Tienda sin acceso a Composer o con código copiado a mano","Versión desconocida","Averiguar la versión antes de sacar conclusiones",{"type":36,"title":75,"body":76},"Por qué corregir no basta","El aviso lo dice con todas las letras: los sitios deben auditar sus pedidos, porque el fallo se explota. Una tienda que hoy pasa a 3.3.13 pudo ser visitada antes. La actualización cierra el acceso; no pone en orden un pedido cuyo importe, estado o situación de pago haya sido modificado. El aviso no dice desde cuándo se explota: elija una ventana de auditoría amplia, anótela en el expediente y no la reduzca al día de la actualización.\n\nLuego viene un obstáculo corriente: sin inventario central, nadie sabe qué tiendas incluyen Commerce ni en qué rama. El método de inventario es el de un fallo de plugin de WordPress, descrito en \u003Ca href=\"\u002Fes\u002Fblog\u002Fbricksforge-cve-2026-85097-wordpress-actualizar\">nuestra guía de Bricksforge\u003C\u002Fa>. El orden de trabajo es, pues: inventario, copia de seguridad, actualización, auditoría, prueba fechada. Las tiendas que más cobran van primero.",{"type":78,"title":79,"steps":80},"steps","Inventariar la versión de Commerce en cada tienda",[81,84,87,90,93],{"title":82,"body":83},"Leer la versión con Composer","`cd \u002Fvar\u002Fwww\u002Fboutique-client`\n`composer show drupal\u002Fcommerce`\nEl comando muestra la versión instalada. Para la rama 2.x, drupal.org habla de 8.x-2.41; Composer presenta el número sin el prefijo 8.x. Compare el número, no la cadena. La ruta es un ejemplo: adáptela a su alojamiento.",{"title":85,"body":86},"Contrastar con Drush","`drush pm:list --type=module --status=enabled --filter=commerce`\nLa lista indica si Commerce está activado y en qué versión. Un sitio puede tener el código sin que el módulo esté activado: anótelo, porque la situación cambia si alguien lo activa más tarde.",{"title":88,"body":89},"Leer el archivo de bloqueo en lugar de la carpeta","`grep -A1 '\"name\": \"drupal\u002Fcommerce\"' composer.lock`\nEl archivo `composer.lock` dice lo que está realmente instalado, sin arrancar Drupal. Es la lectura más segura en una tienda que no quiere solicitar durante la auditoría.",{"title":91,"body":92},"Recorrer todas las tiendas de un servidor","`find \u002Fhome -name composer.lock -not -path '*\u002Fvendor\u002F*' -exec grep -H -A1 '\"name\": \"drupal\u002Fcommerce\"' {} +`\nCada archivo citado contiene Commerce, y la línea `version` sigue al nombre. Revise la lista: una carpeta de pruebas olvidada o una copia de seguridad también cuentan.",{"title":94,"body":95},"Anotar el resultado en una tabla","Una fila por tienda: cliente, alojamiento, ruta, rama, versión detectada, versión de Drupal, fecha y hora de la lectura. Añada dos columnas para rellenar más tarde, «actualización hecha» y «auditoría de pedidos hecha». Esta tabla se convierte en la pieza central del expediente que se entrega a los clientes.",{"type":36,"title":97,"body":98},"Hacer copia de seguridad antes de tocar el código","Una actualización de módulo se deshace mal sin un punto de retorno. Antes de cada tienda: una copia de la base de datos y del código, en un soporte que la actualización no toque, con su fecha anotada en la tabla. En una tienda activa la base cambia con cada pedido: la copia fija el estado a partir del cual podrá comparar los pedidos después. No la sobrescriba con la siguiente mientras la auditoría no esté cerrada. Sirve dos veces: volver atrás y demostrar lo que contenía la tienda antes de la corrección.",{"type":78,"title":100,"steps":101},"Actualizar una tienda",[102,105,108,111,114,117],{"title":103,"body":104},"Congelar el estado","`drush sql:dump --gzip --result-file=\u002Fchemin\u002Fsauvegarde\u002Fboutique-avant.sql`\nCopie también la carpeta del proyecto: código, `composer.json`, `composer.lock` y archivos. Anote en la tabla dónde queda la copia.",{"title":106,"body":107},"Comprobar lo que permite la restricción de Composer","`composer why-not drupal\u002Fcommerce 3.3.13`\nSi `composer.json` fija una versión, este comando nombra lo que bloquea. Una tienda en 2.x sigue en 2.x y apunta a 8.x-2.41: cambiar de rama es un proyecto aparte, que se planifica por separado.",{"title":109,"body":110},"Actualizar el módulo y sus dependencias","`composer update drupal\u002Fcommerce --with-dependencies`\nRevise la lista de paquetes modificados antes de confirmar: otro módulo de Commerce puede moverse con él.",{"title":112,"body":113},"Aplicar las actualizaciones de base de datos","`drush updatedb -y`\n`drush cache:rebuild`\nEl primer comando ejecuta las actualizaciones de esquema pendientes, el segundo vacía las cachés.",{"title":115,"body":116},"Comprobar la versión instalada","Vuelva a lanzar `composer show drupal\u002Fcommerce`. La versión debe alcanzar 3.3.13 en la rama 3.x, o el número 2.41 en la rama 2.x. Anótela en la tabla, con fecha y hora.",{"title":118,"body":119},"Hacer un pedido de prueba","En preproducción, o en el modo de prueba de la pasarela de pago, añada un producto al carrito, haga el pedido y compruebe el importe, el estado y el pago. Una actualización que rompe el proceso de compra debe verse antes que el cliente.",{"type":36,"title":121,"body":122},"Un procedimiento por entorno","La misma corrección no se aplica igual en todas partes. La tabla siguiente fija, para cada entorno, el gesto esperado y la prueba que conservar. Una preproducción pública cuenta como una tienda.\n\nLas actualizaciones automáticas del sistema, descritas en \u003Ca href=\"\u002Fes\u002Fblog\u002Factualizaciones-seguridad-vps-debian-ubuntu\">nuestra guía sobre Debian y Ubuntu\u003C\u002Fa>, no tocan un módulo de Drupal: ese gesto sigue siendo de la agencia.",{"type":40,"title":124,"headers":125,"rows":129},"Desarrollo, preproducción, producción: el gesto y la prueba",[126,127,128],"Entorno","Gesto","Prueba que conservar",[130,134,138,142,146],[131,132,133],"Producción","Copia de seguridad, actualización, `drush updatedb`, pedido de prueba y después auditoría","Copia fechada, versión detectada, resultado de la auditoría",[135,136,137],"Preproducción accesible desde Internet","Actualizar primero si el código es idéntico, o protegerla con contraseña mientras tanto","Versión detectada, protección elegida",[139,140,141],"Preproducción cerrada o local","Actualizar y repetir el pedido de prueba antes de producción","Captura del pedido de prueba, fecha",[143,144,145],"Desarrollo","Alinear `composer.lock` con producción para no reintroducir la versión antigua en el próximo despliegue","Commit del archivo de bloqueo, versión detectada",[147,148,149],"Copia o respaldo restaurado","No volver a ponerlo en línea sin la actualización","Mención en el expediente del cliente",{"type":78,"title":151,"steps":152},"Auditar los pedidos sin presumir el método del atacante",[153,156,159,162,165],{"title":154,"body":155},"Fijar la ventana","Elija una fecha de inicio amplia y anótela. El aviso no da fecha de inicio de la explotación: tome como mínimo el periodo cubierto por sus copias y sus registros, y escriba por qué.",{"title":157,"body":158},"Listar los pedidos de la ventana","Exporte los pedidos con su número, sus fechas de creación y de realización, su estado, su total y su moneda. Basta con la interfaz de administración. En la base de datos, empiece por leer los nombres de las columnas:\n`drush sql:query \"DESCRIBE commerce_order\"`\nLos nombres exactos dependen de su versión: no los suponga.",{"title":160,"body":161},"Buscar discrepancias internas","Para cada pedido, compare el total con el cálculo de sus líneas y ajustes. Un total que no cuadra con sus líneas, un descuento que nadie configuró o un precio de línea distinto del catálogo: cada discrepancia debe investigarse.",{"title":163,"body":164},"Cruzar con la pasarela de pago","Un pedido terminado sin pago correspondiente en el proveedor, o un pago de importe distinto del total, merece un examen. El extracto del proveedor es la referencia para el dinero cobrado: haga el cruce con las exportaciones, no con lo que muestra la tienda.",{"title":166,"body":167},"Revisar los cambios de estado","Localice los pedidos cuyo estado cambió sin acción humana ni pago coherente: validados sin pasar por el pago, o llegados a un estado final en pocos segundos. Los registros de acceso ayudan a fechar lo ocurrido. El aviso no detalla ninguna ruta: una búsqueda por ruta es un indicio, nunca una prueba de ausencia.",{"type":169,"title":170,"body":171},"tip","Lo que la auditoría no demuestra","Una auditoría limpia dice que no se ve ninguna incoherencia en los pedidos. No dice que ninguna petición abusara del fallo: el aviso habla de rutas y de campos de entidad sin nombrarlos. Escriba en el informe lo que ha mirado y lo que no ha mirado.",{"type":173,"title":174,"items":175},"ul","Si un pedido es incoherente",[176,177,178,179,180,181,182],"**No borrar nada** — conserve el pedido, sus pagos y la copia fechada: son las piezas del expediente.","**Suspender la entrega** — bloquee el envío o el acceso al producto digital hasta que el pago esté confirmado en el proveedor.","**Avisar al cliente de la agencia** — su informe indica el pedido, la discrepancia detectada, la fecha y el importe afectado.","**Consultar al proveedor de pago** — él guarda el extracto de los cobros; pida el detalle de la transacción.","**Conservar los registros** — copie los registros de acceso y de la aplicación del periodo antes de su rotación.","**Revisar las cuentas** — si encuentra una cuenta o un rol que nadie creó, cambie las contraseñas de administración y las claves de la pasarela.","**Medir antes de restaurar** — volver a una copia anterior al incidente borra también los pedidos legítimos realizados desde entonces.",{"type":36,"title":184,"body":185},"Los otros avisos de Commerce del mismo día","El 28 de octubre de 2026, drupal.org publicó otros avisos que afectan al ecosistema Commerce, del número 255 al 265: Commerce Core, Commerce Shipping, Commerce License y Commerce Stripe. Están clasificados como menos graves que el 254, y solo el 254 declara una explotación activa. Uno de ellos, sobre Commerce Stripe, alcanza sin embargo «Critical» (15 sobre 25).\n\nNo actualice, pues, solo Commerce Core. Liste los paquetes de Commerce de cada tienda con `composer outdated 'drupal\u002Fcommerce*'` y lea cada aviso en drupal.org\u002Fsecurity antes de decidir.",{"type":36,"title":187,"body":188},"Quién mantiene la relación con el cliente y qué se entrega","Cuando se encuentra un pedido fraudulento, el cliente llama a la agencia. Conserve ese papel: la agencia mantiene la relación, el informe de auditoría y la decisión de reembolso o restauración. La plataforma mantiene la infraestructura: una cuenta aislada por cliente, copias de seguridad que restaurar, acceso SSH o WHM para actualizar sin esperar un ticket. No modificamos el código de aplicación de una tienda en su lugar; actualizar Commerce sigue siendo un gesto de la agencia.\n\nEntregue al cliente una página fechada: versión anterior, versión posterior, fecha y hora de la actualización, referencia de la copia, ventana de auditoría, número de pedidos examinados, discrepancias halladas o ausencia de ellas, y lo que no se ha mirado. Conserve la plantilla: el próximo aviso sobre un módulo de Drupal seguirá la misma secuencia, con otra fila en el inventario. El ritmo mensual de control se describe en \u003Ca href=\"\u002Fes\u002Fblog\u002Fauditoria-seguridad-mensual-vps-clientes-agencia-checklist\">la checklist de auditoría de un VPS de cliente\u003C\u002Fa>.",{"type":36,"title":190,"body":191},"La documentación oficial","\u003Ca href=\"https:\u002F\u002Fwww.drupal.org\u002Fsa-contrib-2026-254\">Aviso SA-CONTRIB-2026-254\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.drupal.org\u002Fsecurity\">Lista de avisos de seguridad\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.drupal.org\u002Fproject\u002Fcommerce\">Página del proyecto Commerce\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgetcomposer.org\u002Fdoc\u002F03-cli.md\">Documentación de la línea de comandos de Composer\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.drush.org\u002Flatest\u002F\">Documentación de Drush\u003C\u002Fa>","Conserve el control de las tiendas de sus clientes","Cuentas aisladas por cliente, copias de seguridad antes de actualizar, acceso WHM y SSH para aplicar una corrección sin esperar, vencimientos y parque visibles en un solo lugar: la relación con el cliente sigue siendo suya.","Ver la solución para agencias","\u002Fsolutions\u002Fagences",[197,215,230],{"id":198,"slug":199,"slugs":200,"title":204,"excerpt":205,"readTime":17,"views":18,"isPinned":19,"publishedAt":206,"updatedAt":207,"category":208,"categories":209,"featuredImage":30,"bgImage":31,"posterImage":211,"relatedSolution":212},525,"bricksforge-cve-2026-85097-wordpress-actualizar",{"fr":201,"en":202,"ar":203,"es":199},"bricksforge-cve-2026-85097-wordpress-mettre-a-jour","bricksforge-cve-2026-85097-wordpress-update","ثغرة-bricksforge-cve-2026-85097-ووردبريس-التحديث","Bricksforge CVE-2026-85097: actualizar y auditar su parque","Bricksforge 3.1.8.10 corrige CVE-2026-85097, una subida sin autenticar explotada. Inventario wp-cli, archivos PHP depositados, registros y secretos a rotar.","2026-10-29T00:00:00+00:00","2026-10-29T15:45:55+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[210],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fbricksforge-cve-2026-85097-wordpress-mettre-a-jour-poster.svg",{"categorySlug":213,"appSlug":214},"cms-sitios-web","wordpress",{"id":216,"slug":217,"slugs":218,"title":222,"excerpt":223,"readTime":17,"views":18,"isPinned":19,"publishedAt":224,"updatedAt":225,"category":226,"categories":227,"featuredImage":30,"bgImage":31,"posterImage":229,"relatedSolution":30},521,"auditoria-seguridad-mensual-vps-clientes-agencia-checklist",{"fr":219,"en":220,"ar":221,"es":217},"checklist-audit-securite-mensuel-vps-clients-agence","monthly-security-audit-checklist-client-vps-agency","قائمة-تدقيق-أمان-vps-شهرية-للعملاء-للوكالات","Auditoría mensual de un VPS cliente: checklist en 45 min","Siete controles para repetir cada mes en un VPS cliente: actualizaciones, kernel, cuentas SSH, puertos, certificados, copias, registros. Con informe fechado.","2026-10-28T00:00:00+00:00","2026-10-29T03:10:22+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[228],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fchecklist-audit-securite-mensuel-vps-clients-agence-poster.svg",{"id":231,"slug":232,"slugs":233,"title":237,"excerpt":238,"readTime":17,"views":239,"isPinned":19,"publishedAt":240,"updatedAt":241,"category":242,"categories":243,"featuredImage":30,"bgImage":31,"posterImage":245,"relatedSolution":30},382,"actualizaciones-seguridad-vps-debian-ubuntu",{"fr":234,"en":235,"ar":236,"es":232},"securite-vps-mises-a-jour-automatiques-debian-ubuntu","vps-automatic-security-updates-debian-ubuntu","تحديثات-أمان-تلقائية-vps-debian-ubuntu","Actualizaciones de seguridad automáticas en VPS Debian\u002FUbuntu","Configure unattended-upgrades en sus VPS Debian\u002FUbuntu para automatizar los parches de seguridad y reducir la superficie de ataque en su flota de clientes.",2,"2026-09-26T00:00:00+00:00","2026-09-29T14:40:42+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[244],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fsecurite-vps-mises-a-jour-automatiques-debian-ubuntu-poster.svg",1793543092028]