-
Notifications
You must be signed in to change notification settings - Fork 2
MITM공격에 따른 password 노출 취약점 #99
Comments
@taeguk 헤헤! 우리는 letsencrypt로 https를 걸어버릴 예정이에요! |
@minhoryang 제 생각에는 그래도 client단에서 비밀번호는 hash를 해야된다고 생각해요. |
저희가 전달받은 password는 salt와 pepper가 칠해져 bcrypt로 해슁되어있어요! |
@minhoryang 하지만 server측에서 db에 저장하기 전에 hashing하는 거라서 client와 server가 통신할 때 사이에서 패킷을 감청하면 password 원문을 알아낼 수 있어요! |
그걸 https로 막겠다는거지요! 그래도 안되나요? |
@minhoryang https를 해도 Server가 해킹됐을 경우에는 password 원문이 노출되는 것을 막을 수 없어요 ㅠㅠ https는 'hash'가 아니라 '암호화' 이기 때문에 결국 server에서 복호화가 되는데, 이때 서버가 해킹된 상태이면 해커가 틈새를 노려 password 원문을 빼내갈 수 있죠.. |
당신들.... 넘나 멋져요!!! |
지금 taeguk.reluv.me도 보면 reversed proxy로 .105에서 .104를 바라보게되어있고, |
지금은 taeguk이랑 같은 linux를 공유하지만, 실서비스시 (나중에는) 당연히 별도의 vm으로 구분되어있을거에요. |
JS해싱은, 사실 더 위험한 방식이라고 생각하는데, 우선 표준이 아니구요. 암호화기법자체를 노출하는거라, 해킹 이후에 콜루젼찾기가 더 쉬워요 |
다른 클라이언트 이식도 힘들구요. |
JS암호화스크립트를 믿을 수 있는지도 모르겠어요. 적어도 bcrypt는 openssl을 이용하거든요. ssh도 https두요 |
서버를 해킹해서 접근할 수 있다면, 제가 노릴건 해싱이아니라 클라코드수정일거에요. |
우리사이트뿐만아니라 다른사이트의 정보까지 순순히 뺃어올 수 있는데요 ㅎㅎ |
음 https를 이용하는 것과 client단에서 javascript hashing하는 것중 어떤게 보안이 뛰어날 지를 비교하려는 것은 아니에요. |
어떻게 보면 99%냐 99.9%냐의 얘기같은데, |
오.. 오오오... 뭐야 여기.. |
음. 우리는 https를 꼭 도입할 거에요. 그래야만해요. 개인정보를 관리하기 때문이에요. 지금은 alpha/beta니까 괜찮은거구요. 나중에 주소록기능을 도입하게 되는 순간, 아니 그보다 전에 https로 넘어갈 거에요. |
https가 필수이기 때문에, 문제는 'javascript로 password를 hashing하는 것'을 할 필요가 있는가? 로 바뀌어요. |
보안이 뛰어나 지지 않아요. 해커가 더 귀찮아지는 것 뿐이지요.
가 아니에요. 반대로 우리가 사용한 js라이브러리의 취약점이 밝혀진다고 가정해보면, 그 때는 보안이 무너진거죠. 이렇게되면 99%(해커가 우리의 존재를 아느냐) vs 0%(모르느냐)로 바뀌어요.
이 상황에서는 js라이브러리의 취약점이 공개된다면 https의 노력에도 불구하고, 패스워드는 뚤리게 되는거죠. |
그러면 다시 생각해봅시다. |
|
음... 어차피 client <---https---> server 같은 식으로 client(browser)와 server가 통신할때 https를 사용하게 되는 건데, hashing을 하고 안하고의 차이는 client가 server로 넘기는게 raw password 냐 hashed password 냐의 문제기 때문에 만약 js라이브러리가 취약하고 뚫린다고 하더라도 보안성이 hashing을 사용하지 않을 때랑 똑같아 질 뿐이지 더 나빠지진 않아요. |
Neither MFC... |
그래서 나온게 Adobe Flash/Silverlight/ActiveX 등이 있습니다. |
그래서 있는 라이브러리를 쓰자는겁니다. |
음 근데 잘 믿기지가 않네요. 관련 자료가 있을까요?? ㅠㅠ |
근데 제가 소개한 라이브러리가 아닌 다른 걸 쓰더라도 결국엔 javascript library를 써야해요 |
못찾겠습니다. 잘못된 주장이라고 생각해주세요. |
음..그러면 js가 불안정할 수 있으므로 password hashing같은 critical한 기능을 넣지 말자?? 가 주장이신건가요?? ㅎㅎㅎㅎ |
우선 네. js를 믿지 않습니다 ㅠㅠ |
그런데 이런 의견들도 있네요
|
근데 javascript sandbox escaping같은 작정하고 노려진 js엔진 버그나 취약점은 당연히 있는건데 (엔진도 프로그램이니까) |
libsodium이 믿을만한 라이브러리긴 한데요. libsodium.js는 믿을만한 라이브러리는 아니에요. |
컨버팅된 결과물은, 버전 글리치가 생긴다고 생각하고 있어요. |
음 그렇군요... 근데 사실 hash algorithm '구현'은 복잡한 엔지니어링 이슈같은게 물려있는게 아니라 그냥 수학적인 수식을 코드로 옮길뿐인데 버그가 있을 가능성이 거의 없지 않을까요?? |
수식을 코드로 옮기면, 느리죠. 그래서 옵티마이즈를 합니다. 문제는 거기서 발생해요. 아 JS는 그보다 조금 더 먼저군요. |
자기전에 제가 설득안당하려고하는(?!?) 고집부리는 영역을 좁혀보면
어? 서버에 raw가 전송되는걸 믿지 않는데 https는 믿으시나요?! |
엇 마지막줄이 무슨 뜻이신지 잘 모르겠어요 ㅠㅠ |
제 의견을 정리하면 일단 여전히 client단에서 javascript로 password hashing을 하는게 옳다고 판단합니다. |
다음번에 더 나은 이야기가 될 것 같아요. 저도 계속 생각하고 있을게요. |
민호형은 신뢰하지 못하시지만 ㅠㅠ 제가 사용하고 있는 http://pajhome.org.uk/crypt/md5/sha512.html |
알겠습니다 ㅎㅎ 오래 토론했네요 안녕히 주무세요!!!! |
왜 저를 안 의심해요ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 저부터의심해욬ㅋㅋㅋ |
잘려고 샤워하고왔는데 갑자기 든 생각이 |
제 fb password 는 참고로 http로 (아무나) 접속할 수 있는 (저는 외우지 않지만, 링크가 있긴 해요) 1024바이트의 os.random입니다. - _-;; (누가 url에 방문했는지 확인하지도 않아요. 기능도 없고.) |
회원가입하는 부분에서 password를 암호화하지 않아 네트워크 상에서 중간자공격을 당할 시, password가 그대로 노출되는 취약점이 있습니다. (로그인, 비밀번호 변경 부분에도 같은 취약점 존재)
해결방법은 sha512같은 단방향 해쉬 알고리즘을 사용하여 password를 암호화한 후 서버로 전송하면 됩니다.
http://pajhome.org.uk/crypt/md5/sha512.html
등을 이용하여 javascript단에서 form 전송 시 password를 sha512로 hash해주면 좋을 것 같습니다.
The text was updated successfully, but these errors were encountered: