SCW 아이콘
영웅 배경, 구분선 없음
블로그

Cómo evitar la enumeración de nombres de usuario | Secure Code Warrior

피터 드 크레머
2017년 10월 09일 게시
마지막 업데이트: 2026년 3월 6일

Un ataque de canal lateral se produce cuando un pirata informático puede recopilar información de la implementación física de un sistema de software en lugar de una debilidad teórica en el algoritmo o un error en el código del software.

Un ejemplo que me gusta usar para dejar esto más claro es una forma de enumerar nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestro sitio web para ver explicación en vídeo o juega un desafío para ver si puedes identificarlo en código.

Ahora, para entender cómo se puede realizar la enumeración de nombres de usuario mediante un ataque de canal lateral, es necesario tener un cierto conocimiento de cómo se gestionan (o al menos se deben gestionar) las contraseñas en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no la guarda ni la almacena en ningún sitio. Entonces, ¿cómo sabe que lo que escribiste es correcto y, de hecho, tu contraseña? Bueno, tu contraseña está cifrada.

Una función de hash es una operación matemática que es fácil de realizar de una manera (aunque es algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de buenos algoritmos de hash, la salida es única según la entrada. Cuando te registras en un sitio web, ese hash se almacena de forma segura, no tu contraseña en sí. Esto significa que cada vez que inicias sesión, la aplicación web aplica un hash a los datos introducidos y compara los resultados del hash con el hash almacenado. Si quieres obtener más información sobre almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algo de tiempo en una computadora y los desarrolladores siempre intentan optimizar todo lo que escriben para que los usuarios tengan una experiencia fluida. Una cosa que acelera el programa es omitir el hashing cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (por lo que no es necesario comprobar ninguna contraseña), pueden responder al usuario de inmediato. De esta forma, pueden evitar el lento cálculo que supone el uso del hash de la contraseña. Si el nombre de usuario era correcto, codificarán la contraseña ingresada y la compararán con el hash almacenado.

En este punto, es posible que haya adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing solo tarda unos pocos milisegundos, un hacker puede aprovechar este retraso adicional para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto responderá un poco más rápido porque no se ha realizado ningún hashing. Este tipo de ataque de canal lateral se denomina ataque cronometrado y es un buen ejemplo de cómo diferentes requisitos no funcionales pueden contrarrestarse entre sí. A veces, el código no puede ser rápido y seguro al mismo tiempo.

Por lo tanto, aunque las contraseñas se manejan perfectamente y el mensaje que se muestra es genérico y no informa si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es sencilla: usar siempre un hash para la contraseña o retrasar el envío de la respuesta el tiempo necesario para hacerlo.

Un atacante puede utilizar la información obtenida para obtener una lista de usuarios del sistema. Esta información se puede usar para atacar la aplicación web, por ejemplo, mediante un ataque de fuerza bruta o con un nombre de usuario o contraseña predeterminados.

https://www.owasp.org/index.php/Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)

리소스 보기
리소스 보기

La enumeración de nombres de usuario se produce cuando los piratas informáticos utilizan ataques de fuerza bruta para obtener información sobre el nombre de usuario y la contraseña. Aprenda a evitar la enumeración de nombres de usuario con Secure Code Warrior.

더 알고 싶으신가요?

응용 프로그램 보안 연구원 - R&D 엔지니어 - 박사 후보

더 알아보세요

Secure Code Warrior 귀사의 조직이 소프트웨어 개발 라이프사이클 전반에 걸쳐 코드를 보호하고 사이버보안을 최우선으로 하는 문화를 조성하도록 Secure Code Warrior . AppSec 관리자, 개발자, CISO 또는 보안 관련 담당자라면 누구든, 저희는 귀사의 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.

데모 예약하기
공유하기:
링크드인 브랜드사회적x 로고
저자
피터 드 크레머
2017년 10월 9일 게시

응용 프로그램 보안 연구원 - R&D 엔지니어 - 박사 후보

공유하기:
링크드인 브랜드사회적x 로고

Un ataque de canal lateral se produce cuando un pirata informático puede recopilar información de la implementación física de un sistema de software en lugar de una debilidad teórica en el algoritmo o un error en el código del software.

Un ejemplo que me gusta usar para dejar esto más claro es una forma de enumerar nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestro sitio web para ver explicación en vídeo o juega un desafío para ver si puedes identificarlo en código.

Ahora, para entender cómo se puede realizar la enumeración de nombres de usuario mediante un ataque de canal lateral, es necesario tener un cierto conocimiento de cómo se gestionan (o al menos se deben gestionar) las contraseñas en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no la guarda ni la almacena en ningún sitio. Entonces, ¿cómo sabe que lo que escribiste es correcto y, de hecho, tu contraseña? Bueno, tu contraseña está cifrada.

Una función de hash es una operación matemática que es fácil de realizar de una manera (aunque es algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de buenos algoritmos de hash, la salida es única según la entrada. Cuando te registras en un sitio web, ese hash se almacena de forma segura, no tu contraseña en sí. Esto significa que cada vez que inicias sesión, la aplicación web aplica un hash a los datos introducidos y compara los resultados del hash con el hash almacenado. Si quieres obtener más información sobre almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algo de tiempo en una computadora y los desarrolladores siempre intentan optimizar todo lo que escriben para que los usuarios tengan una experiencia fluida. Una cosa que acelera el programa es omitir el hashing cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (por lo que no es necesario comprobar ninguna contraseña), pueden responder al usuario de inmediato. De esta forma, pueden evitar el lento cálculo que supone el uso del hash de la contraseña. Si el nombre de usuario era correcto, codificarán la contraseña ingresada y la compararán con el hash almacenado.

En este punto, es posible que haya adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing solo tarda unos pocos milisegundos, un hacker puede aprovechar este retraso adicional para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto responderá un poco más rápido porque no se ha realizado ningún hashing. Este tipo de ataque de canal lateral se denomina ataque cronometrado y es un buen ejemplo de cómo diferentes requisitos no funcionales pueden contrarrestarse entre sí. A veces, el código no puede ser rápido y seguro al mismo tiempo.

Por lo tanto, aunque las contraseñas se manejan perfectamente y el mensaje que se muestra es genérico y no informa si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es sencilla: usar siempre un hash para la contraseña o retrasar el envío de la respuesta el tiempo necesario para hacerlo.

Un atacante puede utilizar la información obtenida para obtener una lista de usuarios del sistema. Esta información se puede usar para atacar la aplicación web, por ejemplo, mediante un ataque de fuerza bruta o con un nombre de usuario o contraseña predeterminados.

https://www.owasp.org/index.php/Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)

리소스 보기
리소스 보기

다음 양식을 작성하여 보고서를 다운로드하십시오.

귀하의 허락을 받아 당사 제품 또는 안전한 암호화 관련 주제에 대한 정보를 보내드리고자 합니다. 귀하의 개인정보는 항상 최대한 신중하게 처리하며, 마케팅 목적으로 타사에 판매하지 않을 것을 약속드립니다.

보내기
scw 성공 아이콘
scw 오류 아이콘
양식을 보내려면 '분석' 쿠키를 활성화하세요. 완료 후에는 언제든지 다시 비활성화해도 됩니다.

Un ataque de canal lateral se produce cuando un pirata informático puede recopilar información de la implementación física de un sistema de software en lugar de una debilidad teórica en el algoritmo o un error en el código del software.

Un ejemplo que me gusta usar para dejar esto más claro es una forma de enumerar nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestro sitio web para ver explicación en vídeo o juega un desafío para ver si puedes identificarlo en código.

Ahora, para entender cómo se puede realizar la enumeración de nombres de usuario mediante un ataque de canal lateral, es necesario tener un cierto conocimiento de cómo se gestionan (o al menos se deben gestionar) las contraseñas en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no la guarda ni la almacena en ningún sitio. Entonces, ¿cómo sabe que lo que escribiste es correcto y, de hecho, tu contraseña? Bueno, tu contraseña está cifrada.

Una función de hash es una operación matemática que es fácil de realizar de una manera (aunque es algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de buenos algoritmos de hash, la salida es única según la entrada. Cuando te registras en un sitio web, ese hash se almacena de forma segura, no tu contraseña en sí. Esto significa que cada vez que inicias sesión, la aplicación web aplica un hash a los datos introducidos y compara los resultados del hash con el hash almacenado. Si quieres obtener más información sobre almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algo de tiempo en una computadora y los desarrolladores siempre intentan optimizar todo lo que escriben para que los usuarios tengan una experiencia fluida. Una cosa que acelera el programa es omitir el hashing cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (por lo que no es necesario comprobar ninguna contraseña), pueden responder al usuario de inmediato. De esta forma, pueden evitar el lento cálculo que supone el uso del hash de la contraseña. Si el nombre de usuario era correcto, codificarán la contraseña ingresada y la compararán con el hash almacenado.

En este punto, es posible que haya adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing solo tarda unos pocos milisegundos, un hacker puede aprovechar este retraso adicional para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto responderá un poco más rápido porque no se ha realizado ningún hashing. Este tipo de ataque de canal lateral se denomina ataque cronometrado y es un buen ejemplo de cómo diferentes requisitos no funcionales pueden contrarrestarse entre sí. A veces, el código no puede ser rápido y seguro al mismo tiempo.

Por lo tanto, aunque las contraseñas se manejan perfectamente y el mensaje que se muestra es genérico y no informa si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es sencilla: usar siempre un hash para la contraseña o retrasar el envío de la respuesta el tiempo necesario para hacerlo.

Un atacante puede utilizar la información obtenida para obtener una lista de usuarios del sistema. Esta información se puede usar para atacar la aplicación web, por ejemplo, mediante un ataque de fuerza bruta o con un nombre de usuario o contraseña predeterminados.

https://www.owasp.org/index.php/Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)

웹 세미나 보기
시작하다
더 알아보세요

아래 링크를 클릭하고 이 자료의 PDF를 다운로드하세요.

Secure Code Warrior 귀사의 조직이 소프트웨어 개발 라이프사이클 전반에 걸쳐 코드를 보호하고 사이버보안을 최우선으로 하는 문화를 조성하도록 Secure Code Warrior . AppSec 관리자, 개발자, CISO 또는 보안 관련 담당자라면 누구든, 저희는 귀사의 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.

보고서 보기데모 예약하기
리소스 보기
공유하기:
링크드인 브랜드사회적x 로고
더 알고 싶으신가요?

공유하기:
링크드인 브랜드사회적x 로고
저자
피터 드 크레머
2017년 10월 9일 게시

응용 프로그램 보안 연구원 - R&D 엔지니어 - 박사 후보

공유하기:
링크드인 브랜드사회적x 로고

Un ataque de canal lateral se produce cuando un pirata informático puede recopilar información de la implementación física de un sistema de software en lugar de una debilidad teórica en el algoritmo o un error en el código del software.

Un ejemplo que me gusta usar para dejar esto más claro es una forma de enumerar nombres de usuario. Si quieres saber qué es la enumeración de nombres de usuario o por qué es mala, visita nuestro sitio web para ver explicación en vídeo o juega un desafío para ver si puedes identificarlo en código.

Ahora, para entender cómo se puede realizar la enumeración de nombres de usuario mediante un ataque de canal lateral, es necesario tener un cierto conocimiento de cómo se gestionan (o al menos se deben gestionar) las contraseñas en las aplicaciones web modernas. Una buena aplicación web no conoce tu contraseña, no la guarda ni la almacena en ningún sitio. Entonces, ¿cómo sabe que lo que escribiste es correcto y, de hecho, tu contraseña? Bueno, tu contraseña está cifrada.

Una función de hash es una operación matemática que es fácil de realizar de una manera (aunque es algo costosa desde el punto de vista computacional) pero muy difícil de revertir y, en el caso de buenos algoritmos de hash, la salida es única según la entrada. Cuando te registras en un sitio web, ese hash se almacena de forma segura, no tu contraseña en sí. Esto significa que cada vez que inicias sesión, la aplicación web aplica un hash a los datos introducidos y compara los resultados del hash con el hash almacenado. Si quieres obtener más información sobre almacenamiento seguro de contraseñas, puedes hacerlo en nuestra plataforma.

El hash de la entrada lleva algo de tiempo en una computadora y los desarrolladores siempre intentan optimizar todo lo que escriben para que los usuarios tengan una experiencia fluida. Una cosa que acelera el programa es omitir el hashing cuando no es necesario. Por ejemplo, cuando el nombre de usuario no existe (por lo que no es necesario comprobar ninguna contraseña), pueden responder al usuario de inmediato. De esta forma, pueden evitar el lento cálculo que supone el uso del hash de la contraseña. Si el nombre de usuario era correcto, codificarán la contraseña ingresada y la compararán con el hash almacenado.

En este punto, es posible que haya adivinado dónde pueden ir mal las cosas. Aunque en realidad el hashing solo tarda unos pocos milisegundos, un hacker puede aprovechar este retraso adicional para averiguar si el nombre de usuario que ha introducido es correcto o no, ya que un nombre de usuario incorrecto responderá un poco más rápido porque no se ha realizado ningún hashing. Este tipo de ataque de canal lateral se denomina ataque cronometrado y es un buen ejemplo de cómo diferentes requisitos no funcionales pueden contrarrestarse entre sí. A veces, el código no puede ser rápido y seguro al mismo tiempo.

Por lo tanto, aunque las contraseñas se manejan perfectamente y el mensaje que se muestra es genérico y no informa si la contraseña o el nombre de usuario eran incorrectos, el sistema sigue siendo vulnerable. La solución es sencilla: usar siempre un hash para la contraseña o retrasar el envío de la respuesta el tiempo necesario para hacerlo.

Un atacante puede utilizar la información obtenida para obtener una lista de usuarios del sistema. Esta información se puede usar para atacar la aplicación web, por ejemplo, mediante un ataque de fuerza bruta o con un nombre de usuario o contraseña predeterminados.

https://www.owasp.org/index.php/Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)

목차

PDF 다운로드
리소스 보기
더 알고 싶으신가요?

응용 프로그램 보안 연구원 - R&D 엔지니어 - 박사 후보

더 알아보세요

Secure Code Warrior 귀사의 조직이 소프트웨어 개발 라이프사이클 전반에 걸쳐 코드를 보호하고 사이버보안을 최우선으로 하는 문화를 조성하도록 Secure Code Warrior . AppSec 관리자, 개발자, CISO 또는 보안 관련 담당자라면 누구든, 저희는 귀사의 조직이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 돕습니다.

데모 예약하기다운로드
공유하기:
링크드인 브랜드사회적x 로고
자원 센터

시작하기 위한 자료

더 많은 게시물
자원 센터

시작하기 위한 자료

더 많은 게시물