금융권에서 최근 동시 해킹 사건을 보며 제 생각을 정리했습니다.
개요
신한은행, KB국민은행, 하나은행, BNK부산은행, 예가람저축은행, 웰컴저축은행, 현대캐피탈에서 동시다발적으로 발생한 사이버 공격을 받아 정보가 유출되는 사고가 발생했습니다.
유출범이 동일인 인지는 아직 모르지만 ARTEX 라는 오픈소스 기반 AI 자율 침투테스트 도구를 사용한 것으로 추정됩니다.
ARTEX
ARTEX는 중국에서 열린 사이버 경진 대회에서 1등한 프로젝트이며, AI가 스스로 공격 대상을 분석하고 침투 경로 설계와 작업을 수행하는 워커등으로 구성되어 있습니다.
현재 개발자가 비공개로 전환했습니다.
한국어 버전으로 공유된 프로젝트가 있어, 해당 프로젝트를 살짝 맛을 봤습니다.
맛을 본 후기로는 괜히 1등이 아니구나라는 생각이 들정도로 UI/UX가 좋았습니다.
( 개인적으로 AI 자동 침투 도구를 만들고 있는데 제가 불편하게 생각한 것들이 이미 깔끔하게 구현되어 있었습니다. ㅋㅋ )
IDOR(Insecure Direct Object Reference) 취약점
다만 이번 사고와 관련된 취약점들을 보았을때 고급 해킹 기법을 사용한 것으로는 보이지 않고, IDOR 취약점으로 추측하고 있습니다.
IDOR(Insecure Direct Object Reference)란 전자금융기반시설 취약점으로 보면 불충분한 인가에 매핑할 수 있는 취약점이고, 객체에 대한 접근 권한이 없어 타인의 정보를 무단 접근할 수 있는 취약점 입니다.
제가 생각하는 IDOR 취약점에 대한 기본적인 보안 대책입니다.
- 특수케이스를 제외하고 조회 같은 기능은 인증(로그인) 한 사용자에게만 제공해야함
- 데이터 접근 시 해당 데이터에 접근 권한을 확인하여 검증해야함
영수증 조회 기능을 예시로 들으면 로그인한 사용자에게만 영수증 조회 기능을 사용할 수 있게하고, 영수증 조회 시 본인이 결제한 영수증에 대해서만 조회 가능하도록 해야합니다.
-> 만약 여기서 영수증이 유효한 영수증인지만 확인하다면 IDOR 취약점이 발생할 수 있습니다.
-> 세션을 통한 사용자 확인과 사용자의 영수증인지 검증하는 로직이 필요합니다.
금융권 뿐만아니라 취약점 점검을 하면 가장 많이 나오는 취약점 유형이 IDOR입니다.
누가 어떤 데이터에 접근할 수 있는지는 서비스의 비즈니스에 따라 달라지므로, 기능과 데이터의 소유 관계를 이해하고 객체별 접근 권한을 검증해야 합니다.
Conclusion
최근에 봤던 글에서 공격자한테 공격 비용이 사라졌다라는 표현이 인상깊었습니다.
그동안은 공격자도 ROI를 따져서 공격했다면, 이제는 AI를 활용해 약한 부분이 있다면 그냥 전체를 공격해 1개만 뚫으면 되는 싸움이고 보안에서는 모든 부분을 볼 수 없기때문에 항상 메인서비스를 주로 보는 선택과 집중을 했다면 이제는 그 경계가 무너졌다는 내용입니다.
보안은 기본이 중요하다라는 점을 돌아보며 이제는 기본이 잘 지키고 있는지 다시 한번 확인해야한다고 생각합니다.
( 매년 나오는 얘기이지만 시간과 비용, 인력은 항상 부족하고, 책임, 비지니스 편의성등등 많은 부분들이 정말 어렵습니다. )
취약점은 언제든 나오며, 공격은 24/7로 계속 발생합니다. 따라서 한 번 점검하고 조치하는 것으로 끝내기보다, 지속적으로 취약점을 식별하고 빠르게 대응할 수 있는 체계가 필요합니다. 이 과정은 보안팀만의 노력으로 완성할 수 없습니다. 서비스를 만들고 운영하는 여러 부서가 함께 공유하고 대응해야 합니다. -> ex) 외부에 노출되어 있는 서비스는 무엇이고, APIDOC이나, Swagger 같은게 있다면, 해당 문서를 토대로 서비스에 기능을 한눈에 파악하기 훨씬 수월합니다.
그리고.. 제발 사고나면 맨날 전수점검( 단순 1회성 보여주기 면피용 ) 이딴거 CPC로 내려오지말고 지속적인 관리 방안에 대한 개선책이 나왔으면 좋겠습니다.
( 물론 CPC를 열심히 대응 하고 있지만, 1년에 점검 1~2번하는것도 벅찬데 1주일 내 전수 점검 이딴거 내려오면 제대로 점검되는 기업이 있을지…… )