Update: correção liberada, ver as atualizações abaixo.
Para todos que estão executando Drupal, cuidado: hoje (13 de julho, quando o artigo original foi escrito) uma correção altamente crítica será lançada.
Haverá várias versões dos módulos de contribuição do Drupal na quarta-feira, 13 de julho, que irão corrigir as vulnerabilidades altamente críticas de execução remota de código (escore de risco até 22/25). Esses módulos de contribuição são utilizados entre 1.000 e 10.000 sites. A Equipe de Segurança do Drupal recomenda fortemente a você reservar tempo para atualizações dos módulos, porque exploits são esperados para serem desenvolvidos dentro de horas/dias. Anúncios de lançamento irão aparecer nos locais de anúncio do padrão. PSA-2016-001
É importante saber que o núcleo do Drupal não é afetado.
O núcleo do Drupal não é afetado. Nem todos os sites serão afetados. Você deve rever os alertas publicados em 13 de julho de 2016 para ver se algum dos módulos que você usa serão afetados. PSA-2016-001
A vulnerabilidade é uma “execução de código PHP arbitrário”, o que significa que qualquer pessoa pode usar essa vulnerabilidade para executar código PHP que eles escreveram no servidor. Na maioria dos ambientes, o PHP não está limitado ao que pode e não pode fazer, assim, permitir a execução do PHP arbitrário é tão perigoso como uma execução remota de código Bash. Tenha certeza de ficar de olho na correção!
Atualização 13/07/2016
3 módulos foram atualizados:
- Coder (altamente crítica)
- RESTWS (altamente crítica)
- Webform Multiple File Upload (crítica)
Pegue sua correção!
Aqui está o diff para o módulo Coder:
$ diff -r coder_upgrade/scripts/coder_upgrade.run.php \
coder_upgrade/scripts/coder_upgrade.run.php
54,59d53
< if (!script_is_cli()) {
< // Without proper web server configuration, this script can be invoked from a
< // browser and is vulnerable to misuse.
< return;
< }
<
219,227d212
<
< /**
< * Returns boolean indicating whether script is being run from the command line.
< *
< * @see drupal_is_cli()
< */
< function script_is_cli() {
< return (!isset($_SERVER['SERVER_SOFTWARE']) && (php_sapi_name() == 'cli' || (is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0)));
< }
Aqui está o diff para o módulo RESTWS:
$ diff -r restws.module restws.module
268c268
< 'page arguments' => array($resource, 'drupal_not_found'),
---
> 'page arguments' => array($resource),
287c287
< 'page arguments' => array($resource, 'drupal_not_found'),
---
> 'page arguments' => array($resource),
308c308
< 'page arguments' => array($resource, 'drupal_not_found'),
---
> 'page arguments' => array($resource),
319,327d318
< *
< * @param string $resource
< * The name of the resource.
< * @param string $page_callback
< * The page callback to pass through when the request is not handled by this
< * module. If no other pre-existing callback is used, 'drupal_not_found'
< * should be passed explicitly.
< * @param mixed $arg1,...
< * Further arguments that are passed through to the given page callback.
329c320
< function restws_page_callback($resource, $page_callback) {
---
> function restws_page_callback($resource, $page_callback = NULL) {
431,433c422,427
< // Fall back to the passed $page_callback and pass through more arguments.
< $args = func_get_args();
< return call_user_func_array($page_callback, array_slice($args, 2));
---
> if (isset($page_callback)) {
> // Further page callback arguments have been appended to our arguments.
> $args = func_get_args();
> return call_user_func_array($page_callback, array_slice($args, 2));
> }
> restws_terminate_request('404 Not Found');
***
Mattias Geniar faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://ma.ttias.be/highly-critical-remote-code-execution-patch-drupal-psa-2016-001/




