IT 그리고 정보보안/Knowledge base 227

안전행정부 시큐어코딩 43개 기준

1. 기본 개념 사이버공격의 주요 원인이 소프트웨어 개발 시에 보안에 관련된 구현이 전혀 되어 있지 않다는 점에 착안하여 행정안전부에서 개발보안(시큐어 코딩)에 대한 부분을 의무화하는 「정보시스템 구축․운영 지침」 개정안을 추진함과 동시에 그에 관련된 시큐어 코딩안 43개를 발표한 것이다. 2.「정보시스템 구축․운영 지침」 절차 및 규정 2012.12 부터 행정기관 등에서 추진하는 개발비 40억 원 이상 정보화사업에 소프트웨어 개발보안 적용을 의무화하고, 단계적으로 의무 대상을 확대하여 ‘15년에는 감리대상 전 정보화 사업에 소프트웨어 개발보안을 적용한다. ※ (’12.12월) 40억원 이상 → (’14.1월) 20억원 이상 → (’15.1월) 감리대상 전 사업 -단, 상용 소프트웨어는 소프트웨어 개발보..

SQL Injection 기초

SQL 인젝션은 쿼리문을 조작하여 적절한 인증 과정을 거치지 않고 DB의 내용 열람, 수정, 삭제 등의 악의적인 행위를 하는 웹 어플리케이션 취약점 중 가장 위험한 취약점이다. 보통 웹 어플리케이션들은 PHP나 ASP 같은 서버측 스크립트 소스 코드에 DB에 관련된 쿼리 제어문을 코딩한다. 뭐 이런 식으로.. 그럼 우리가 "쿼리문을 조작"한다는 말은, 미리 코딩되어 있는 쿼리문에서 우리가 입력하는 파라미터를 받아서 작업을 처리하는 부분이 있을거 아닌가. 그 부분에서 적절하게 장난을 쳐서 우회를 한다 이말이다. 저번 포스팅에서 말한 'or 1=1' 붙인 것이 바로 그런 예이다. 실제로 저렇게 쉬운건 안먹힌다. 하지만 모르고 더 어려운 내용을 하는건 불가능하기 때문에, 기초부터 차근차근 알아보자. SQL 인..

CWE/SANS TOP 25

CWE(Common Weakness Enumeration) SANS와 미국방성 산하 MITRE 그리고 그 외 미국 및 유럽의 여러 소프트웨어 보안 전문가에 의해 CWE/SANS TOP 25 라는 이름으로 소프트웨어 개발자가 가장 범하기 쉬운 코드 취약점에 대해 발표된 것이다. 740여 가지의 다양한 언어에 대한 취약점을 권고하고 관리하고 있는 데이터베이스이다. OWASP TOP 10과 매우 흡사한 내용들을 담고 있지만, 오류 유형 별로 분류해 놓고 OWASP의 내용보다 좀더 구체적인 분류가 되어있다. http://cwe.mitre.org * 오류 유형 별 분류 3가지로 분류되며, [ ]의 숫자는 순위, CWE-??의 숫자는 ID(식별자)를 뜻한다. 순위는 확산된 정도, 중요성, 조정점수를 포함하여 해당 ..

OWASP top 10

기초적인 내용들을 대강 공부했으니, 이제 본격적으로 웹 취약점에 대한 공부를 해보자. 웹 취약점은 다른 취약점들과 다른점이, 저명한 기관들이 위험한 순서로 리스트화 시켜놓은 경우가 많다. 이곳 저곳 어디를 둘러보아도 웹 서비스가 활성화 되어있고, 80번 포트는 항상 열려있기 때문에 이에 따른 취약점이 화두가 되는 것은 당연한 일이라고 볼 수 있다. 먼저 언급한 '위험한 순서로 리스트화 되어 있는 취약점' 에 관해서 이야기를 좀 해보려고 한다. 웹 취약점 하면 가장 먼저 떠오르는 단어가 되어야 하는 OWASP 이다. The Open Web Application Security Project 의 약자로, 2010, 2013 그리고 향후에 웹 어플리케이션 취약점에 대한 위험도를 식별하여 A1 부터 A10 까지..

SQL (Structured Query Language)

데이터 베이스?? 라는 말을 들어봤는지 모르겠다. 간단히 설명하자면, 우리가 필요한 데이터들을 아주 세밀하고 고도화된 구조로 집약시켜 수정, 검색 등이 용이하도록 만든 데이터의 집합체라고 보면 된다. 우리가 사용하는 웹 사이트들중 데이터 베이스를 사용하지 않는 곳은 단 한군데도 없다. 왜? 회원 정보 관리, 게시물 관리 등 이런 것들을 모두 데이터베이스에서 하기 때문이다. 데이터베이스는 종류가 어마어마하게 많지만, 우리가 자주 보고 공부할 것들은 3가지 가량으로 압축된다. MySQL, MSSQL, ORACLE 이정도가 되겠다. 위 세가지 같이 데이터 베이스를 관리하는 시스템을 데이터 베이스 관리 시스템(DBMS :Data Base Management System)이라 한다. 그럼. DB에 관한 설명은 이..

HTTP 쿠키 (Cookie) & 세션 (Session)

이번에는 쿠키와 세션에 대해서 알아보자. 먹는 쿠키가 아니다. ㅎㅎ 일단 먼저 쿠키란, 웹서버에서 클라이언트를 식별하기 위한 식별 코드라고 보면 되겠다. HTTP의 단방향성 때문에 이 멍청한... 웹서버가 클라이언트를 식별하지 못한다고 말했었다. 그래서! 쿠키가 나온 것이다. 클라이언트에 대한 정보를 저장하고 식별하는 기능으로 말이다. 먼저 그림을 보고 생각하자. 일단 쿠키는 클라이언트의 정보가 담긴 거라고 말했다. 근데 그걸 클라이언트 측에 저장한다. txt파일 형식으로. 쿠키가 저장하는 정보는 쉽게 말해, 우리가 로그인한 적이 있는 웹사이트에 다시 방문하였을 때, 내 계정을 기억하고 있거나, 인터넷 쇼핑몰에서 클릭한 적이 있는 상품을.. 쇼핑몰에 다시 방문했을 때 띄워주는 그런 것들을 말한다. 각 쿠..

웹개발 언어에 대한 정리

이번에는 웹에서 사용되는 언어들에 대하여 알아보자. 인터넷 사용하다 보면 뭐 이것 저것 많이 들어보긴 했을 거임. html 이니.. 자바스크립트니.. 전혀 낯선 이름이 아닐꺼라고 생각함. 웹페이지는 일단 기본틀이 HTML(Hypertext Markup Language)이다. HTML은 솔직히 말하면 웹 프로그래밍 언어라고 말하기는 좀 그렇다. 우리가 보는 웹페이지 그자체가 HTML이니까, 웹서버 내부에서 무슨 언어로 뭐 어떻게 지지고 볶고 씹고 뜯고 맛보고 즐기든~ 결국 우리가 웹브라우저를 통해 눈으로 보는 것은 HTML이라는 말씀. 그럼 눈에 보이는 HTML로 웹 어플리케이션을 구성하면 되지 왜 다른 언어들을 사용하나??? 라는 의문을 가질 수 있다. 당연히, HTML로는 구현에 한계가 있으니 다른 언..

Base64 Encoding

이번에는 Base64 인코딩에 대해 한번 알아보겠음. 먼저 Base64를 공부하기전에, MIME이라는 개념을 알아야함. MIME 이란, Multipurpose Internet Mail Extensions 의 약자로, 이메일을 위한 인터넷 표준 포맷이다. 이메일은 7비트 ASCII 코드를 사용하여 전송하기 때문에, 8비트 이상의 코드를 사용하는 문자나 파일들은 MIME 포맷으로 변환되어 전송된다. (이메일 전송 프로토콜인 SMTP가 7비트 ASCII 문자만 지원하기 때문임.) 이 때 MIME 포맷으로 변환할 때 쓰이는 인코딩이 Base64 인코딩이다. 하는 방법은.. 연속된 텍스트나 바이너리 파일이 있다. 이 녀석들을 1바이트(8비트) 단위로 3개 씩 끊는다. 그럼 총 24비트 일거 아니가. 이거를 6비트..

HTML Encoding

HTML 인코딩에 대해 알아보자. HTML 문서 에서 특수 기능을 하는 문자들이 있다. 이 문자들을 안전하게 브라우저에 표현하기 위해 사용하는 인코딩이다. HTML 인코딩은 그니까, 쉽게 말하면 안전하게 -> 보안성을 높이기 위해 사용된다. HTML 인코딩에서는 특정한 문자들을 나타내기 위해 HTML 엔티티라는 것을 정의해 두었다. 예를 들어서. 위 표처럼 정의해 두기도 하였고.. 기본적으로 HTML 인코딩하는 방법은 문자들을 아스키 코드값으로 10진수나 16진수값으로 변환하여 인코딩 할 수도 있다. " (큰따움표) → " , " ' (작은따움표) → ' , ' 어때여 쉽죠?? 그리고 HTML 인코딩에 대해 하나더. 검색엔진에서 HTML 인코딩을 검색하면 XSS(Cross-site-scr..

URL Encoding

URL 인코딩에 대해 알아보겠음. 한번씩은 인터넷 서핑하면서 주소창을 볼것이다.(아닌가?) URL에는 US-ASCII의 문자들 중 출력이 가능한 문자들만 포함된다. 바로 URL 인코딩이 URL에 포함되는데 ASCII 코드로 표현이 불가능한 문자들이 안전하게 웹서버에 전달이 되도록 웹 브라우저에서 인코딩하는 것이다. 좀더 자세하게 설명하자면, URL에는 US-ASCII 즉, 영문만이 포함가능 하고 한국어를 포함한 다른 외국어들, ASCII에 정의되지 않은 특수문자들과 공백(Space), %, ?, #, 등은 URL에 포함될 수 없다. 그러므로 URL 인코딩을 해주어야 한다. 그럼 URL 인코딩은 어떤식으로 이루어질까. 위에서 언급한 케이스들을 %와 원래 문자열의 16진수값을 이용하여 표현한다. 그리고 아래..

반응형