패스워드 검증 등의 과정을 거친 후 현재 세션에 필요한 데이터를 기록하여 접속자를 로그인 상태로 만드는 세션 데이터를 기록하고 있습니다.
이 과정에서 세션ID를 변경하지 않고 그대로 사용하기 때문에 공격자가 지정한 세션 ID를 공격 대상자의 쿠키를 조작하여 교체하면 세션 고정 취약점으로인한 공격이 성공하게 됩니다. 세션 고정 취약점에는 ss_mb_key는 사실상 의미가 없습니다.
그누보드는 1~2개월에 하나 이상의 취약점이 계속 발견되고 고쳐지고 있습니다. 이런 취약점으로 다양한 공격이 가능한 방법이 있고 세션 고정 취약점 또한 공격자의 대상이 될 수 있습니다.
이 문제는 세션 쿠키를 생성할 때 HttpOnly로 생성하게 하고, 로그인 처리 과정에서 session_regenerate_id() 함수로 세션 ID를 교체하는 처리가 필요합니다.
그누보드는 현재 로그인 처리가 완료된 이후 세션 ID를 교체하지 않고 그대로 사용하고 있습니다.
https://github.com/gnuboard/gnuboard5/blob/641656047d6a9002802383f787a8925888950459/bbs/login_check.php#L65-L70
패스워드 검증 등의 과정을 거친 후 현재 세션에 필요한 데이터를 기록하여 접속자를 로그인 상태로 만드는 세션 데이터를 기록하고 있습니다. 이 과정에서 세션ID를 변경하지 않고 그대로 사용하기 때문에 공격자가 지정한 세션 ID를 공격 대상자의 쿠키를 조작하여 교체하면 세션 고정 취약점으로인한 공격이 성공하게 됩니다. 세션 고정 취약점에는
ss_mb_key
는 사실상 의미가 없습니다.그누보드는 1~2개월에 하나 이상의 취약점이 계속 발견되고 고쳐지고 있습니다. 이런 취약점으로 다양한 공격이 가능한 방법이 있고 세션 고정 취약점 또한 공격자의 대상이 될 수 있습니다.
이 문제는 세션 쿠키를 생성할 때 HttpOnly로 생성하게 하고, 로그인 처리 과정에서
session_regenerate_id()
함수로 세션 ID를 교체하는 처리가 필요합니다.https://github.com/gnuboard/gnuboard5/blob/641656047d6a9002802383f787a8925888950459/common.php#L224-L225
다음과 같은 두 가지 조치가 필요해 보입니다.
관련 링크