홈플러스 홈페이지의 비밀번호 입력 정책에 대한 생각(인젝션 방어 조치)



[요약]
select, update, where, and, drop 단어가 비밀번호에 포함되지 못하게 했다면 인젝션 공격 방어 조치일까요?

[전문]
보안 강화 목적으로 인터넷 서비스 업체들의 비밀번호 정책이 복잡해지고 있고 업체마다 다른 정책으로 같은 비밀번호를 사용하지 못하게 하는 장점이 생겼지만 자주 방문하지 않으면 잊어버리게 됩니다.

그래서 별도로 메모를 해두거나 1Password 와 같은 서비스를 이용하는 사용자가 생기면서 한 곳의 서비스가 해킹당하면 다수의 서비스 아이디/비밀번호가 노출될 가능성이 생겼습니다.

이 문제는 많은 IT 서비스 기업의 고민이고 구글과 페이스북 등은 다양한 방법을 시험하며 적용하고 있습니다.

국내 기업은 비밀번호 조합을 복잡하게 하는 정도의 조치가 보통인데요. 그중 홈플러스 홈페이지의 비밀번호 이야기입니다.



대부분 영문 + 숫자 + 특수문자의 조합으로 8자 이상을 권장하며 주기적으로 변경을 유도하고 있습니다.
홈플러스도 이 부분은 동일하지만 추가로 입력하면 안되는 문자가 있습니다.
  1. A@seLecT$24B
  2. UPdate$20@17AB
  3. mY$where18@@
  4. A@ANDo$17
  5. DropTheBeat@17
위 5개의 비밀번호는 홈플러스의 비밀번호 안내 문구에 적합해보이지만 select, update, where, and, drop 문자가 보안에 매우 취약하여 사용할 수 없다고 합니다.


위 문자는 데이터베이스 질의어(SQL)이기 때문에 개발자로서 이해할 수도 있습니다.
하지만 일반적으로 데이터베이스에 저장 시 아이디는 평문, 비밀번호는 암호문으로 입력하여 실제 비밀번호는 알 수가 없습니다. 그런데도 위와 같은 조치가 필요했다는 것은 비밀번호 비교 방식을 생각해 보게 됩니다.

그런데 말입니다. 아이디에는 위 문자를 입력할 수 있습니다.
인젝션 공격 목적이 아니더라도 일반적으로 사용할 수도 있는 단어이며 위 문자 조합에서는 인젝션 공격이라고 보기도 어렵습니다.

또한 일반적으로 비밀번호 문자는 가려져 있고 선택으로 보이기를 제공합니다. 그런데 홈플러스는 어떻게 감춰야 될지 찾아보게 만드네요. ("비밀번호를 확인하였습니다." 를 클릭하면 가려집니다.)

여러분의 비밀번호는 잘 관리되고 있나요?
참고로 아래와 같은 비밀번호 패턴을 권장하고 싶습니다. 이 방법은 안랩에서도 제안하고 있네요.




함께 보기