Business logic 취약점은 공격자가 의도하지 않은 동작을 이끌어낼 수 있도록 허용하는 application의 설계 및 구현 결함이다. 이를 통해 공격자는 합법적인 기능을 조작하여 악의적인 목표를 달성할 수 있다. 이러한 결함은 일반적으로 발생할 수 있는 비정상적인 application 상태를 예상하지 못하고 결과적으로 이를 안전하게 처리하지 못한 결과이다.
메모
여기에서 “Business logic”라는 용어는 단순히 application이 작동하는 방식을 정의하는 규칙 집합을 나타낸다. 이러한 규칙이 꼭 business와 관련이 있는 것이 아니므로 관련 취약점을 application logic 취약점 또는 단순히 logic 취약점이라고도 한다.
logic flaws(논리 결함)은 일반적으로 application의 정상적인 사용에 의해 노출되지 않기 때문에 명시적으로 찾지 않는 사람들에게는 거의 보이지 않습니다. 그러나 공격자는 개발자가 의도하지 않은 방식으로 application과 상호작용해서 동작버그를 악용할 수 있다.
business logic의 주요 목적 중 하나는 application이나 기능을 설계할 때 정의된 규칙과 제약 조건을 적용하는 것이다. 대부분 business 규칙은 주어진 시나리오가 발생할 때 application이 어떻게 반응해야 하는지를 지시한다. 여기에는 사용자가 business에 부정적인 영향을 미치거나 단순히 말이 되지 않는 일을 하지 못하도록 방지하는 것이 포함된다.
논리의 결함으로 인해 공격자가 이러한 규칙을 우회할 수 있다. 예를 들어 의도한 구매 순서를 거치지 않고 거래를 완료할 수 있다. 다른 경우에는 사용자 제공 데이터의 유효성을 검증하지 않거나 누락하면 사용자가 거래에 중요한 값을 임의로 변경하거나 무의미한 입력을 제출할 수 있다. 예상치 못한 값을 서버 측 logic에 전달함으로써 공격자는 application이 의도하지 않은 작업을 수행하도록 유도할 수 있다.
Logic-based 취약점은 매우 다양할 수 있고, 종종 application과 특정 기능에 특화되어 있다. 이를 식별하려면 business 도메인에 대한 이해나 특정 상황에서 공격자가 무엇을 목표로 하는지와 같은 상당한 지식이 필요하다.
business logic 취약점은 디자인 및 개발 팀이 사용자가 application과 상호 작용하는 방식에 대해 잘못된 가정을 하기 때문에 종종 발생한다. 이러한 잘못된 가정은 사용자 입력에 대한 부적절한 유효성 검사로 이어질 수 있다. 예를 들어, 개발자가 사용자는 웹 브라우저를 통해서만 데이터를 전달할 것이라고 가정하면 application은 입력값을 유효성을 검사하기 위해 약한 클라이언트 측 컨트롤에 의존할 수 있다. 이는 가로채는 프록시를 사용하는 공격자는 쉽게 우회한다.
궁극적으로 이것은 공격자가 사용자의 예상되는 행동에서 벗어났다면 이는 application이 이를 방지하기 위해 적절한 조치를 못한 것이고, 이것은 상황을 안전하게 처리하지 못한다 의미이다.
logic flaws은 개발 팀 자체도 완전히 이해하지 못하는 지나치게 복잡한 시스템에서 일반적으로 발생한다. logic flaws을 피하기 위해 개발자는 application을 전체적으로 이해해야 한다. 여기에는 서로 다른 기능이 예상치 못한 방식으로 결합될 수 있다는 것을 인식하는 것도 포함된다. 대규모 코드 기반에서 작업하는 개발자는 applicaiotn의 모든 여역이 어떻게 작동하는지 자세히 이해하지 못할 수 있다. 한 부분에서 작업하는 사람이 다른 부분의 작동하는 방법에 대해 잘못된 가정을 할 수 있고, 그 결과 무심코 심각한 logic flaws을 생기게 할 수 있다. 개발자가 작업 중인 가정을 명시적으로 적어놓지 않으면 이러한 종류의 취약점이 application에 침투하기 쉽다.
business logic 취약점의 영향은 때때로 매우 사소할 수 있다. 이는 광범위한 범주이며 영향은 매우 다양하다. 그러나 의도하지 않은 동작은 공격자가 application을 적절하게 조작할 수 있다면 심각도가 높은 공격으로 이어질 수 있다. 이러한 이유로 이상한 논리는 직접 악용하는 방법을 알아낼 수 없더라도 수정되어야 한다. 항상 누군가 악용할 가능성이 존재한다.
기본적으로 logic flaws의 영향은 관련된 기능에 따라 다르다. 예를 들어 결함이 인증 메커니즘에 있는 경우 전체 보안에 심각한 영향을 줄 수 있다. 공격자는 몰래 권한 상승을 하기 위해 이를 악용하거나 인증을 완전히 우회하여 중요한 데이터와 기능에 대한 접근 권한을 얻을 수 있다. 이것은 또한 다른 악용으로 이루어질 가능성이 높아진다.
금용 거래의 logic flaws는 자금 도난, 사기 등을 통해 business에 막대한 손실을 줄 수 있다.
또한 logic flaws이 직접적인 이익을 공격자에게 줄 수 없지만 악의적인 개체가 어떤 식으로든 business에 손상을 줄 수 있다.