해킹된 포럼 관리자

안녕하세요, 최근 사회공학 기법으로 인해 손상된 사용자에게 관리자 권한이 부여되는 사고가 발생했습니다. 로그에 따르면 해당 사용자는 "Data Explorer"를 활성화했을 뿐, 일부 사용자를 사칭하는 행위 외에는 다른 작업을 수행하지 않았습니다.

이 사고가 우리 포럼에 어떤 영향을 미쳤으며, 심각한 문제가 있는 것인가요?

위장(impersonation)을 통해 해당 부분이 기록되지 않은 채로 사용자의 이메일을 확인할 수 있습니다.

데이터 탐색(data explore)에 관해서는…

거의 모든 것을 수신할 수 있으며, 여기에는 모든 사용자의 이메일, IP, 비밀번호(정확히는 해시 값과 해싱 알고리즘이지만, 이를 통해 비밀번호를 복원할 수 있습니다) 등이 포함됩니다. 또한 클릭 한 번으로 내보낼 수 있습니다. 쿼리 생성 및 삭제는 기록되지 않습니다.

악의적인 의도를 가진 사용자에게 관리자 권한이 부여되어, 그 결과 해당 사용자의 이메일, IP 등이 유출되었을 수 있다는 내용을 전역으로 고정된 게시글과 배너로 공지할 것을 권장합니다. 그리고 비밀번호를 변경하도록 안내해야 합니다.

하지만 비밀번호는 해시 처리되니까 그 부분은 안전할 거 아니야?

그들이 얻을 수 있는 알고리즘(해시와 매칭되는 것)은 해시를 복호화할 수 있게 해줄 것이라고 생각합니다.

모든 사용자의 비밀번호를 초기화하도록 강제하는 방법이 있나요? 공지사항을 올렸지만, 모든 사용자에게 도달하지는 못할 것 같습니다.

그렇게 생각하지 않습니다. 할 수 있는 것은 API를 사용하여 모든 사용자에게 비밀번호 재설정 이메일을 보내는 것입니다.

뭐요? 불가능해요. 암호화는 비밀번호 해시에서 비밀번호를 복원하는 것을 불가능하게 만들어요. 사회공학 기법을 사용하는 경우를 제외하고는요.
쉽게 말해, 유출된 비밀번호 해시는 큰 위험을 안고 있지만, 생일, 이름, 전화번호 등의 정보를 통해 다른 사람이 비밀번호를 추측하는 데 도움을 줄 수는 있어도, 비밀번호 해시만으로 비밀번호를 복원하는 것은 누구에게도 불가능합니다.

솔트와 알고리즘은 어떻게 되나요?

암호화 알고리즘은 비밀번호를 사진으로 찍는 것과 같습니다. 같은 사람은 동일한 사진을 찍을 수 있지만, 그 사진을 받은 사람은 사진만으로 DNA를 복원할 수 없습니다.

비밀번호 솔트(salt)는 비밀번호의 보안을 강화하여, 비밀번호가 유출되더라도 무지개 테이블(rainbow table)이나 기타 수단을 통한 해독을 더욱 어렵게 만듭니다.

그렇다면 3개의 비밀번호가 모두 유출되어도 안전하다는 건가요?

절대 안전하다고 할 수는 없습니다. 사용자들이 'ilovexxxx’나 이름+생년월일을 비밀번호로 사용하는 등의 나쁜 습관이 아니라면, 이러한 방법들은 비밀번호가 해킹될 확률을 크게 줄일 수 있습니다. 그러나 사용자가 좋은 비밀번호 습관을 갖추지 않았다면, 모든 웹사이트의 모든 계정이 위험에 노출됩니다.

Ruby 콘솔에서 모든 사용자의 비밀번호를 무작위 비밀번호로 초기화하여, 로그인 시 비밀번호를 재설정하도록 강제할 수 있습니다.

감사합니다!

관리자와 사용자에게 2단계 인증을 활성화하도록 요청하세요.

저도 그렇게 하고 있어요

모든 사용자의 비밀번호를 초기화하는 경우, 비밀번호를 변경해야 한다는 사실을 알리는 배너를 게시하는 것이 좋습니다. 또한 사용자가 비밀번호를 변경하는 과정에서 문제가 발생할 수 있으므로 이에 대비해 두세요.

이 답변이 "해결책"으로 표시되는 것은 오해를 살 수 있다고 생각합니다.

나는 이것이 오해를 불러일으킨다고 생각하지 않습니다. 질문은 누군가가 일시적으로 관리자 권한을 획득했을 때의 영향에 관한 것이었고, 답변은 공격자가 흔적을 남기지 않고 데이터베이스(의 일부)를 다운로드할 수 있으므로 기본적으로 모든 것이 침해될 수 있다는 것이었습니다.

그리고 네, 비밀번호 해시를 깨는 것은 매우 어려울 수 있지만, 추가적인 맥락(예: 사용자 이메일 주소)과 다른 출처에서 유출된 비밀번호에 대한 접근 권한이 있다면 일부 정보를 조합하여 성공할 가능성이 있습니다.

“그렇게 하면 비밀번호를 얻을 수 있다”는 표현과 “해시 값과 해시 알고리즘”이라는 문구를 보면, 이탄(Ethan)이 의도한 바는 해시 값과 해시 알고리즘만 있으면 모든 비밀번호를 얻을 수 있다는 뜻인 것 같았습니다.

제가 이해한 의도가 바로 그였고, 그 표현이 다소 오해의 소지가 있다고 느꼈습니다. 아마도 이 분야에 익숙하지 않은 사람들에게만 오해의 소지가 있는 것일 수도 있겠지요. 기회가 되는 대로 이 흥미로운 주제를 자세히 살펴볼 예정입니다!

일반 사용자의 경우 대부분의 정보를 얻을 수 있습니다.

해시값, 솔트, 그리고 속도 제한이 없는 상태에서는, 원시 CPU 성능만으로도 비밀번호 목록을 이용한 무차별 대입 공격을 수행하는 데 큰 추가 자원이 필요하지 않습니다.