ice rabbit programming

[보안] 안전하지 않은 코딩 스타일 본문

Development/Secutiry

[보안] 안전하지 않은 코딩 스타일

판교토끼 2022. 4. 10. 21:52

(아이패드에 필기가 있었는데, 아이패드가 충전하다가 망가지는 바람에 소실되어, 이후 글은 따로 저장해둔 요약본을 참고합니다.)


TOCTOU의 취약점 및 대책

TOCTOU란, Time of Check, Time of Use의 약자로 체크하는 시점과 사용하는 시점의 데이터 싱크가 맞지 않는 경우를 말한다. 즉, 공유되는 데이터의 체크 시점과 사용 시점의 값이나 상태가 달라 발생하는 취약점이다.

체크되는 시점부터 사용되는 시점까지 동기화하거나 데이터를 공유하지 않도록 처리해야 한다.

 

세션 간 정보 노출의 취약점 및 대책

동시에 연결되는 여러 세션들 간에, 한 세션의 정보가 다른 세션에게 노출되는 취약점이다.

세션 정보가 공유되지 않도록 각 세션에서 로컬 변수화 처리가 되어야 한다.

 

부적절한 에러 처리의 취약점 및 대책

코드 내에서는 다양한 에러가 발생할 수 있다. 이 때 오류 메시지를 단순히 노출하기만 하고 아예 대응하지 않거나 제대로 대응하지 않으면 시스템은 정상적인 서비스를 하지 못하게 된다.

비단 보안적인 이슈 뿐만 아니라, 제대로 이를 제어하지 못한다면 예기치 못한 시점에 서비스가 죽을 수도 있으며, 이를 추적하지 못하여 보완도 못할 우려가 있다.

그렇기 때문에 오류 상황을 적절히 분류하여 처리하고, 사용하던 자원은 종료 시 초기화하거나 반납하여 다른 곳에 영향을 미치지 않도록 하는 것이 좋다.

 

부적절한 제어의 취약점 및 대책

코드에서 반복문이나 재귀 함수를 사용하는 경우가 빈번한데, 만약 이 때 무한 루프를 도는 반복문과 무한히 호출 되는 재귀 호출은 메모리 등 자원을 고갈시켜 시스템에 영향을 줄 수 있다.

그러므로 반복문이나 재귀함수 사용 시에는 반드시 제어 코드가 있어야 하고, 탈출 조건을 적절하게 정의해야 한다. 특히 필요상 무한 루프를 사용할 경우에는 더 철저한 조건 정의를 하는 편이 좋다.