AnsweredAssumed Answered

Importante alerta para Alfresco 4

Question asked by wgonzalez on Apr 27, 2012
Incluido en la versión 4.0.1 de Alfresco Enterprise se encuentra una corrección para dos problemas de seguridad críticos. Los dos problemas son:
1. La API de SOLR REST API permite acceso no-autenticado al contenido del repositorio  (ALF-13721)
2. Ejecución remota de código es posible vía el Procesador de XSLT para Web Scripts (Web Script XSLT Processor) (ALF-13726)

Si usted es un usuario de la versión Enterprise, usted ya ha sido notificado de estos problemas y lo que deberá hacer para corregirlos. Ambos problemas han sido resueltos en la versión 4.0.1.

Para usuarios de la versión Community, ustedes verán esta corrección en la próxima liberación de Community. Mientras tanto, aquí hay alguna información adicional en caso que se necesite reparar estos problemas antes de que la versión se libere.

Problema 1:
La API de SOLR REST API permite acceso no-autenticado al contenido del repositorio


Una omisión ha sido encontrada, lo que significa que el acceso HTTP a las APIs del repositorio bajo las rutas /alfresco/s/api/solr, /alfresco/wcservice/api/solr  y  /alfresco/wcs/api/solr no fueron protegidas por el certificado SSL de SOLR y pueden ser potencialmente usadas por un usuario no-autenticado para obtener información del Repositorio. Este problema le puede afectar aunque haya o no configurado e instalado SOLR para búsquedas.

Este problema puede ser fácilmente corregido agregando algo de código XML a su web.xml. Si usted analiza el archivo web.xml, notará un elemento de restricción (security-constraint element) que es igual al patrón (ruta) de "/service/api/solr". El problema es que el Web script a través de otros varios patrones que no son cubiertos por esta restricción.


<security-constraint>
      <web-resource-collection>
         <web-resource-name>SOLR</web-resource-name>
         <url-pattern>/service/api/solr/*</url-pattern>
      </web-resource-collection>

      <auth-constraint>
         <role-name>repoclient</role-name>
      </auth-constraint>

      <user-data-constraint>
         <transport-guarantee>CONFIDENTIAL</transport-guarantee>
      </user-data-constraint>
   </security-constraint>

Usted puede corregir este error en la seguridad agregando restricciones adicionales de seguridad (Constraints):


<security-constraint>
      <web-resource-collection>
         <web-resource-name>SOLR</web-resource-name>
         <url-pattern>/s/api/solr/*</url-pattern>
      </web-resource-collection>

      <auth-constraint>
         <role-name>repoclient</role-name>
      </auth-constraint>

      <user-data-constraint>
         <transport-guarantee>CONFIDENTIAL</transport-guarantee>
      </user-data-constraint>
   </security-constraint>

   <security-constraint>
      <web-resource-collection>
         <web-resource-name>SOLR</web-resource-name>
         <url-pattern>/wcservice/api/solr/*</url-pattern>
      </web-resource-collection>

      <auth-constraint>
         <role-name>repoclient</role-name>
      </auth-constraint>

      <user-data-constraint>
         <transport-guarantee>CONFIDENTIAL</transport-guarantee>
      </user-data-constraint>
   </security-constraint>

   <security-constraint>
      <web-resource-collection>
         <web-resource-name>SOLR</web-resource-name>
         <url-pattern>/wcs/api/solr/*</url-pattern>
      </web-resource-collection>

      <auth-constraint>
         <role-name>repoclient</role-name>
      </auth-constraint>

      <user-data-constraint>
         <transport-guarantee>CONFIDENTIAL</transport-guarantee>
      </user-data-constraint>
   </security-constraint>

Problema 2:
Ejecución remota de código es posible vía el Procesador de XSLT para Web Scripts (Web Script XSLT Processor)


El Procesador de XSLT para Web Scripts de Alfresco (Web Script XSLT Processor) antes permitía que plantillas de XSLT fueran usadas por los Web scripts y formas Web para hacer uso de las extensiones de Xalan de Apache para llamar métodos arbitrarios de Java. Esto puede ser explotado como una vulnerabilidad de seguridad por cualquier persona con permisos para subir un archivo de plantilla de XSLT. Ahora prevenimos el uso de cualquier extensión de espacio de nombres que no estén ya pre-configuradas en el espacio de nombre de Alfresco ('alf' namespace).

Con esta corrección instalada, las extensiones de Xalan no pueden llamar métodos arbitrarios porque las únicas extensiones permitidas son las de Alfresco. Si usted necesita llamar su propio código Java a través de la extensión de Xalan, usted todavía podrá configurar el procesador de XSLT para que lo haga.

El código que implementa esta corrección se encuentra en el Jira (referenciado arriba). esto le permitirá corregir el JAR si es que no puede esperar hasta la próxima liberación de la versión Community Edition.

Este incidente afecta también a versiones anteriores, no sólo a 4.0. Hay un hotfix disponible para la versión 3.4.8 además estará resuleto en la versión 3.4.9.

Outcomes