보안 / AI / 프로그래밍

Securing web applications with better "paches": an architectural approach for systematic input validation with security patterns 본문

Paper Review

Securing web applications with better "paches": an architectural approach for systematic input validation with security patterns

DevKTW 2021. 6. 27. 18:27

[논문 저작권 관련 정보]

  • 논문 제목 : Securing web applications with better "paches": an architectural approach for systematic input validation with security patterns
  • 원저작자 : Jung-woo Sohn, Jungwoo Ryoo
  • The Pennsylvania State University-Altoona Department of Information Sciences and Technology
  • jzs177, jryoo@psu.edu
  • J. Sohn and J. Ryoo, "Securing Web Applications with Better "Patches": An Architectural Approach for Systematic Input Validation with Security Patterns," 2015 10th International Conference on Availability, Reliability and Security, 2015, pp. 486-492, doi: 10.1109/ARES.2015.106.

[논문 요약]

 해당 논문은 의료학계에서 널리 사용되고 있는 OpenEMR Open-Source 의 취약점 분석을 기반으로, 사용자에 의한 입력에 대한 적절하지 않은 검사 과정 개선하기 위해(더 효과적인 입력 검사를 위해) 하나의 모델을 제시한다.

 

 해당 논문의 흐름은 소개(+전체적인 요약, 우리는 ~할 것이다.) -> 문제 제시 -> 문제 원인 분석 및 해결의 필요성을 부각 -> 모델 제시 -> 검증 -> 결론 분석 -> 참조 순이라고 생각한다. 또한 논문에서는 검증에 사용된 OpenEMR이라는 오픈소스를 논문 전반에 걸쳐서 사용하였다.

 

 먼저, 적절치 않은 입력에 대한 검사 ( Improper Input Validation) 즉, IIV 가 발생하는 이유를 분석하였다. IIV 문제의 핵심 원인은 human-error(= 개발자 실수 혹은 부주의 ) 라고 제시한다. 다음으로, OpenEMR Open-Source 의 취약점 분석 결과를 제시하는데, SQL 문을 제대로 검사하지 않고 데이터베이스에 넘겨버리는 심각한 문제를 보여준다.

 

 이를 토대로, 위에서 살펴본 문제 (OpenEMR Open-Source 취약점)를 해결하기 위한 모델을 제공하는데, 이는 User Input이 들어올 때, 이를 intercept 하고, intercept 한 User input 들을 "한 곳"에서 처리하도록 구현하여, 여러 개의 취약점들을 한 곳에서 처리할 수 있도록 하는 모델이다. 자세히 설명하자면, User Input이 SQL statement, URL, Buffer 관련 실행 및 처리 코드들에 유입되기 전에, 이를 Intercept 하여 한 곳에서 사전에 처리하는 느낌으로 취약점을 보완하는 모델이다.

 

 이렇게 되면, 만약 SQL 실행코드가 소스 여기저기 있을 경우, 그 코드마다 취약점 보완 코드를 추가하는 것이 아닌, 한 곳에서 취약점 보완을 할 수 있다는 점에서 개발자에게 도움이 되고, 소스량을 효과적으로 줄일 수 있다고 제시한다.

또한 특정 취약점 (SQL Injection, XSS) 에 대한 방어를 하는 것이 아닌, 입력되는 데이터 영역에 따라 보안 패턴을 인식하여 방어를 하여, 개발자는 어떠한 취약점 기법을 자세히 공부하지 않아도 됨을 장점으로 제시한다. (입력되는 데이터 영역에 대한 예시로는 e-mail, username, requirements for password, plain text... 등이 있다.)

 


[논문 속 등장한 지식 정리]

- SQL Injection

    참고 : https://noirstar.tistory.com/264 (정리를 너무 잘하셨다.)

- XSS

    참고 : https://noirstar.tistory.com/266 (정리를 너무 잘하셨다.)

    참고 : https://4rgos.tistory.com/1 (공격 방식이 어떤 형태인지 알기 쉽다.)

- 보안 코딩 가이드라인 혹은 외부 보안 프래임 워크 : PHPSEC, PHP-PDO,...etc


[논문 후기]

 해당 논문은 사람들이 널리 사용하게 되는 오픈소스의 취약점을 분석하고, 이를 토대로 IIV (Improper Input Validation) 을 개선하기 위한 모델을 제공한다. 개인적으로, 평소에 보안에 대한 생각은 거의 하지 않고 코딩했던 내 모습과 그 코딩들을 돌이켜보면, 정말 심각한 수준의 취약성을 가진 코딩을 하고 있었음을 알 수 있었다. 오픈소스에 대한 취약점은 해당 오픈소스를 사용하는 모든 프로그램들에 대해서 취약점이 있다는 것과 같은 말이기에, 오픈소스에 대한 경각심을 가지게 되었다. 해당 논문에서 제시하는 모델 또한 개발자 입장에서 직관적이고, 취약점 기법에 대한 학습이 거의 필요하지 않다는 점에서 정말 좋은 모델이라고 생각하였다.

 

논문을 읽는 도중 문장이 잘리면 단어에 따라 '-'를 표기하는 것, 논문 중간중간에 앞선 내용을 보기좋게 정리하는 것, 결말 부분에서 논문에서 제시하는 모델에 대한 객관적인 판단을 논문 스스로 제공하는 것..등등 논문 작성과 관련한 좋은 팁들을 알아갈 수 있어서 좋았다.

Comments