← 최신 논문
💻 computer science

Extracting Database Access-Control Policies From Web Applications

이 논문은 암시적이고 임시적인 보안 구현의 오류 발생 가능성을 해결하고 정책 오류 탐지를 가능하게 하기 위해, 콘콜릭 실행(concolic execution)을 사용하여 Ruby on Rails 웹 애플리케이션으로부터 접근 제어 정책을 자동으로 추출하고 요약하는 도구인 Ote를 소개한다.

원저자: Wen Zhang, Dev Bali, Jamison Kerney, Aurojit Panda, Scott Shenker

게시일 2026-07-20
📖 4 분 읽기☕ 가벼운 읽기

원저자: Wen Zhang, Dev Bali, Jamison Kerney, Aurojit Panda, Scott Shenker

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

디지털 정글의 비밀 지도

인터넷을 모든 웹사이트가 방, 파일, 그리고 비밀들로 가득 찬 건물들로 이루어진 거대하고 북적이는 도시라고 상상해 보세요. 이 도시에서 데이터베이스는 성적, 개인 메시지, 또는 의료 기록과 같은 모든 중요한 데이터가 저장되는 거대한 금고입니다. 이 금 vaults를 안전하게 지키기 위해, 모든 건물에는 누가 어느 방에 들어갈 수 있고 무엇을 볼 수 있는지를 결정하는 보안 요원(액세스 제어 정책)이 필요합니다.

보통 이러한 보안 요원은 인간 개발자들에 의해 작성됩니다. 그들은 건물의 설계도(코드) 안에 규칙들을 무질서하고 흩어진 방식으로 숨겨둡니다. 어떤 곳에는 "출입 금지" 표지판을 붙이고, 어떤 곳에는 창문에 "관계자 외 출입 금지" 메모를 남기며, 복도 벽에는 복잡한 수수께끼를 적어 놓기도 합니다. 이것을 **암묵적 정책(implicit policy)**이라고 부릅니다. 문제는 이렇게 흩어진 단서들은 놓치기 쉽고, 실수하기 쉬우며, 다른 사람이 이해하기란 거의 불가능하다는 점입니다. 만약 개발자가 팀을 떠나면, 아무도 규칙이 정확히 무엇인지 더 이상 알 수 없게 됩니다. 이는 마치 규칙 책을 직접 보지 못한 채, 사람들이 게임을 하는 모습만 보고 게임의 규칙을 파악하려는 것과 같습니다. 이 논문은 그 숨겨진 규칙 책을 찾아내고, 정리하고, 컴퓨터가 실제로 무엇을 할 수 있는지 모두가 볼 수 있도록 기록하는 어려운 작업을 다룹니다.


코드의 마음을 읽는 탐정 봇

코드의 숨겨진 보안 규칙이라는 미스터리를 풀기 위해 설계된 새로운 디지털 탐정, Ote가 등장했습니다. Ote를 개발한 UC 버클리와 NYU 연구진은 오래된 웹 애플리케이션의 복잡한 코드를 읽어 규칙을 찾는 것이 눈을 가린 채 건초더미에서 바늘을 찾는 것과 같다는 사실을 깨달았습니다. 코드를 한 줄씩 읽는 대신, Ote는 게임을 플레이하기로 결정했습니다.

Ote는 **컨콜릭 실행(concolic execution)**이라는 기술을 사용합니다. 이것은 단순히 게임을 한 번 플레이하는 것이 아니라, 가능한 모든 입력 조합을 시도하며 수백만 번 게임을 플레이하는 초강력 비디오 게임 봇이라고 생각하면 됩니다. 이는 건물을 돌아다니며 모든 문을 두드려 보고, 모든 창문을 확인하며, 특정 버튼을 눌렀을 때 정확히 어떤 일이 일어나는지 기록하는 탐정과 같습니다. 만약 봇이 버튼을 눌렀는데 비밀 파일이 열린다면, "버튼 A를 누르면 파일 B가 열림"이라고 기록합니다. 만약 버튼 A를 눌렀는데 아무 일도 일어나지 않는다면, 그것 또한 기록합니다.

하지만 까다로운 점이 있습니다. 실제 웹사이트는 매우 거대합니다. 만약 Ote가 모든 경로를 하나하나 확인하려 한다면 영원히 걸릴 수도 있습니다. 아마 몇 년은 걸릴지도 모릅니다! 이 문제를 해결하기 위해 연구진은 이 웹사이트들이 작동하는 방식에 대해 흥한 사실을 발견했습니다. 이들은 데이터를 가져오는 결정을 내리는 코드 부분이 대개 "만약 이렇다면, 저렇다"와 같은 짧은 규칙 목록처럼 매우 단순하다는 것을 발견했습니다. 나머지 코드는 그저 화려한 장식(예: 페이지를 예쁘게 만드는 것)일 뿐입니다. 따라서 Ote는 장식을 무시하고 오직 단순한 로직에만 집중합니다.

더 나아가, Ote에게는 관련성을 판단하는 스마트 어시스턴트(AI 언어 모델)가 있습니다. 봇이 코드에서 이상한 분기점을 마주하면, 어시스턴트는 "이것이 보안에 중요한가?"라고 묻습니다. 만약 그 분기가 글꼴 색상을 바꾸거나 "미승인" 라벨을 표시하는 것에 관한 것이라면, 어시스턴트는 "그것은 무시하세요!"라고 말합니다. 이를 통해 Ote는 쓸데없는 곳에 시간을 낭비하는 것을 방지하며, 며칠이 걸릴 작업을 단 몇 시간으로 단축합니다.

Ote가 발견한 것: "아하!" 모먼트

연구진은 세 가지 실제 애플리케이션인 diaspora(소셜 네트워크), Autolab(과제 제출 도구), 그리고 The Odin Project(코딩 학교 웹사이트)를 대상으로 Ote를 테스트했습니다. 그들은 단순히 Ote가 작동할 수 있는지를 보고 싶었던 것이 아니라, 인간이 놓친 실수를 찾아낼 수 있는지를 확인하고 싶었습니다.

결과는 놀라웠습니다. 연구진이 Ote가 추출한 규칙을 수년 전 자신들이 직접 작성했던 규칙과 비교했을 때, O lte는 몇 가지 **결함(glitches)**을 찾아냈습니다.

  1. 과도하게 허용적인 보안 요원: Autolab 시스템에서, 인간이 작성한 규칙은 실수로 "비활성화"되어야 할 과목의 민감한 데이터까지 "과정 조교(course assistants)"가 볼 수 있게 허용했습니다. 원래는 교수님들만 해당 데이터를 볼 수 있어야 했습니다. Ote는 이 유출을 즉시 포착했습니다.
  2. 잃어버린 열쇠: diaspora 소셜 네트워크에서는, 인간이 작성한 규칙이 앱이 실제로 작동하는 데 필요한 특정 알림과 프로필 상세 정보에 대한 접근 권한을 부여하는 것을 잊었습니다. 만약 기존 규칙을 강제했다면, 실제 사용자들에게 앱은 제대로 작동하지 않았을 것입니다.
  3. 조용한 버그: 가장 흥ant한 발견은 Autolab 코드 자체에 있었던 미묘한 버그였습니다. 수년 전, 한 개발자가 보안 체크를 설정할 때 실수로 컬럼 이름을 잘못 입력했습니다. 코드는 학생이 시험을 볼 권한이 있는지 확인하는 것처럼 보였지만, 오타 때문에 그 체크는 실제로 아무것도 하지 않고 있었습니다. Ote가 추출한 정책은 아무런 체크도 이루어지지 않고 있음을 보여주었고, 이는 연구진이 오타를 찾아 수정하는 계기가 되었습니다.

결론: 규칙 책을 쓰는 더 나은 방법

Ote가 완벽한 보안를 보장하는 마법 지팡이는 아닙니다. Ote는 매우 드문 경로를 놓치거나 단순한 규칙을 따르지 않는 극도로 복잡한 코드에서 어려움을 겪을 수 있음을 인정합니다. 하지만 실험 결과, 실제 애플리케이션에 대해 Ote는 매우 유용하다는 것이 증명되었습니다. Ote는 SQL이라는 언어로 쓰인 명확하고 읽기 쉬운 보안 규칙 목록을 5시간도 채 되지 않아 추출할 수 있습니다.

이 논문은 Ote를 사용하는 것이 지치지 않는 두 번째 눈을 갖는 것과 같다고 제안합니다. Ote는 개발자들이 자신의 코드가 무엇을 하고 있다고 '생각하는지'가 아니라, 실제로 무엇을 '하고 있는지'를 이해하도록 돕습니다. 무질서하고 숨겨진 로직을 깔끔하고 명시적인 규칙 책으로 바꿈으로써, Ote는 팀이 재앙이 되기 전에 보안 구멍을 잡을 수 있도록 돕습니다. Ote는 인간 개발자를 대체하는 것이 아니라, 디지털 금고가 꽉 잠겨 있도록 보장하기 위한 강력한 도구를 제공합니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →