설계
이 태그가 달린 문서 4건
흔한 보안 실수 4가지: 기본 설정, 잊힌 서비스, 모니터링 부재, 입력 검증에 대한 과신
사고는 몇 가지 반복되는 패턴에서 나오며, 그 패턴은 기술보다 믿음으로 분류할 때 더 분명해진다. 네 가지다. 기본값은 안전할 것이다(아무것도 설정하지 않았다), 쓰지 않는 것은 해가 없을 것이다(아무것도 닫지 않았다), 무슨 일이 있으면 알아차릴 것이다(아무것도 관찰할 수 없다), 검증한 입력은 안전할 것이다(입력에 너무 많은 것을 맡겼다). 어느 것도 고치는 데 깊은 기술 지식이 필요하지 않다. 필요한 것은 확인하는 습관이다. 각각 무엇을 보면 되는지 정리한다.
안전하지 않은 역직렬화: 외부 데이터가 객체 타입을 고르게 두는 위험과 막는 법
역직렬화의 위험은 나쁜 값이 들어오는 데 있지 않다. 일부 형식에서는 어떤 타입의 객체를 만들지 외부 데이터가 정한다는 데 있다. 그래서 피해는 데이터 손상에서 멈추지 않는다. OWASP는 서비스 거부, 접근 제어 우회, 원격 코드 실행을 든다. 방어는 두 가지다. 타입을 고르지 않는 순수 데이터 형식으로 바꾸고, 직렬화된 메시지에 서명해 서명 없는 것은 절대 복원하지 않는다. 그리고 어떤 장치는 설정으로 안전하게 만들 수 없으며, 유일한 해결은 쓰지 않는 것이다.
비밀번호 재설정의 설계 결함: 로그인을 강화해도 계정이 탈취되는 5가지 경우와 해결책
재설정 기능은 비밀번호를 모르는 사람이 새 비밀번호를 정하게 해 주는 장치이므로, 그 자체로 하나의 인증 경로입니다. 로그인을 아무리 강화해도 재설정이 약하면 재설정의 강도가 실제 인증 강도가 됩니다. 실패의 형태는 5가지입니다. 추측 가능한 토큰, 만료되지 않는 토큰, 메일함에 남아 재사용되는 링크, 외부에서 목적지를 바꿀 수 있는 링크(Host 헤더), 계정이 있는지 드러내는 응답. 구현의 핵심은 가이드가 요구하는 것과 직접 정해야 하는 숫자를 구분하는 것입니다.
요청 횟수 제한과 남용 대책: 무차별 대입과 비용 폭주를 막는 제한 설계
요청 횟수 제한이 실패하는 것은 대개 제한이 느슨해서가 아니라 질문을 잘못했기 때문입니다. 질문은 세 가지입니다. 누구를 셀 것인가(IP는 위조할 수 있고 실제 사용자끼리도 공유하므로 주체가 먼저), 무엇을 셀 것인가(요청 수만으로는 한 번에 비싼 작업을 놓친다. 비용, 크기, 레코드 수), 상한에 닿으면 어떻게 할 것인가(무딘 잠금은 정상 사용자에 대한 서비스 거부). NIST는 연속 실패를 100회로 제한하고 차단 대신 지연과 CAPTCHA를 요구하며, OWASP는 금전 피해를 막는 마지막 통제로 외부 서비스의 지출 한도를 포함합니다.