전체 글: 429개의 글

수영 훈련 기록 #1 - 자유영 50m 한 번에 달성!!

Posted by ironmask84
2017. 5. 25. 00:51 생각과 일상/오늘의 일상


올해 2월부터 집 근처 체육센터에 수영을 배우러 다녔습니다.

약15년 전 쯤에 3개월 수영을 배운 적이 있긴 했었습니다만, 
의지도 좀 약했던 때라 그런가 평영까지 진도가 가긴했는데 실력이 잘 안늘었던 기억이 있습니다..^^;

그 후에 군대를 해군으로 가게 되어서 수영 훈련 측정을 받을 때에도..
3개월 배운 실력 발휘를 못하고 안좋은 결과를 받았던 아픈 기억이 ㅠㅠ

이러저러한 이유로 수영을 제대로 한 번 꼭 배우고 싶었는데,
올해 마침 시간적 여유가 생겨서 4개월째 수영을 배우고 있네요.
정확하게는 보름 정도 넘게 참석을 못한 시기가 있어서 3개월 반정도 라고 볼 수 있습니다.

진도는 평영이 끝나는 시기 쯤이어서, 제곧내 접영을 들어갈 수 있을 것 같네요.

아무튼! 서론이 길었지만, 이렇게 첫 수영 훈련 기록을 쓰게된 이유는!!
드디어 50m레인을 한 번에 쉬지않고 자유영으로 돌파했기 때문입니다. ㅋㅋ

배운 개월 수에 비해 습득이 저조할 수도 있지만,
50m의 벽은 높아만 보였습니다.
항상 30m, 35m 쯤 되면 다리에 힘이 부치고, 숨이 너무차서 도중에 멈춰서곤 했었는데,
지금 12시가 넘어갔으니 정확히 어제! 2017년 5월 24일에 한 번에 뙇! 돌파를 한 것이죠.

별 것 아니지만 정말로 통쾌하고 기뻤습니다.
그 동안 다리를 너무 많이 저었던게 문제였나 봅니다.
리듬만 좀 잘타면 다리를 조금 저어서도 자유영이 가능해서 숨이 덜 차서 50m가 가능했던 것 같네요.

배영은 조금 재미없어서 연습을 안하게 되고...
평영은 재밌게 하고 있는데, 아직 속도가 많이 뒤쳐지는 상태..

6월까지만 수영을 배울 수 있을 것 같아서,
미숙하더라도 얼른 접영을 익히고 싶은 마음이 굴뚝같네요.

접영을 익히는 때 다시 수영 훈련 기록 #2 는 이어질듯 합니다... ^^



 

삼성합병 논란 특검 구형 1호

Posted by ironmask84
2017. 5. 22. 19:59 생각과 일상/사회이슈 및 생각


드디어 기대했던 비열하고 부정한 삼성합병 논란에서 법의 심판을 받기 위한 건수가 1개 나왔습니다.
연합뉴스 기사는 아래와 같습니다.
http://www.yonhapnews.co.kr/bulletin/2017/05/22/0200000000AKR20170522088500004.HTML?input=1195m

예전에 이와 관련된 포스팅을 한 바 있습니다.  --> http://ironmask84.tistory.com/308

비록 구형이긴 하지만, 잘못이 확실하다면 실형으로 법의 심판을 받아야죠.

2년 전 삼성 회장자리를 이재용씨에게 승계하기 위한 의도가 매우 다분한 삼성물산과 제일모직을 합병 사건이 있었습니다.
이 때, 합병 찬성의 결과로 이끄는 결정적인 역할을 대주주였던 국민연금관리공단 한 바 있습니다.
문제는 합병 찬성을 하게되면 국민연금관리공단이 1000억원대의 손해를 보게되었다는 것입니다.
사실 들리는 소문에 의하면 1000억원이 아니라 5000억원도 넘을 수 있다는 얘기가 있습니다.
그리고 이 국민연금의 돈은 전 국민에게 돌아가야할 국민 쌈짓돈인데, 이것을 재벌총수가 가로챈 결과가 된다는 것은
너무나 어처구니 없고 격분하게 만드는 일입니다.

이번 7년 구형은 문형표 전 보건복지부 장관이 국민연금관리공단에 찬성하도록 압력을 가했다는 것입니다.
아마도 압력을 가하고 박근혜 정부에 큰돈이 들어오지 않았을까 조심스레 추측을 해봅니다.
그리고 홍완선 전 기금운용본부장도 그 압력에 동의했다는 것에 당연한 심판의 결과로 구형 7년을 받게 되었습니다.

이러한 범죄의 결과가 정확하다면
구형으로 끝나는 것이 아니라, 정당한 법에 의해 실형이 선고되어야 할 것입니다.

그리고 삼성전자 부회장 이재용씨에게 타당한 법의 심판의 결과가 있어야 할 것입니다.


추가로 8월 7일에 이재용 부회장 징역 12년 구형 및 전직 임원 4명 징역 10~7년 구형 되었다고 합니다.

 

디자인패턴

Posted by ironmask84
2017. 4. 1. 15:06 나는 프로그래머다!/기초 다지기


  • 생성 디자인 패턴
    • 싱글톤패턴
      • 어떤 클래스의 인스턴스 개수가 최대 한 개를 넘지 않도록 하는 패턴
      • 이 하나의 인스턴스는 공유자원에 대한 문지기 또는 중앙에 있는 소통의 중심 역할을 한다.
      • 애플리케이션에서 새 인스턴스를 만들 수 없으며, 모든 메소드는 싱글톤을 통해서만 액세스할 수 있다.
      • 애플리케이션에서는 클래스에 있는 정적 메소드를 호출하여 싱글톤을 가져온다.
      • 상속과 인터페이스(싱글톤은 객체다. 따라서 베이스 클래스로부터 상속을 받고 인터페이스를 구현할 수 있다.)
      • 다수 객체로 전환 가능(나중에 마음이 바뀌어 여러 객체를 만들고자 하는 경우에 코드를 많이 바꾸지 않고도 원하는 바를 이룰 수 있다.)
      • 동적 바인딩(싱글통을 생성하기 위해 실제로 사용하는 클래스를 컴파일시가 아닌 실행시에 결정할 수 있다.)
      • 싱글턴 패턴을 구현 할 때는 private 생성자와 정적 메소드, 정적 변수를 사용한다. 

 

 public class Singleton {

1
2
3
4
5
6
7
8
9
 private static Singleton uniqueInstance;
 
 private Singleton(){} //다른 클래스에서 new키워드를 사용할 수 없게 된다.
 public static Singleton getInstance(){  //그래서 getInstance()를 사용할 수 밖에 없다.
  if(uniqueInstance == null){
   uniqueInstance = new Singleton();
  }
  return uniqueInstance;
 }


 

  • 빌더패턴
    • 객체가 어떤 식으로 구축되는지에 대해 모르는 상황에서 단계별로 객체를 생성하는 패턴이다.
    • 객체를 직접 구축하는 대신 빌더의 인스턴스를 만들고 빌더에서 객체를 직접 구축하는 대신 빌더의 인스턴스를 만들고 빌더에서 객체를 대신 만들도록 하는 방식이다.
    • 객체를 초기화하는 데 여러 생성자 매개변수가 필요한 경우, 그 중에서도 특히 동일 또는 유사한 유형의 매개변수가 여럿 필요한 경우에 특히 이 빌더 패턴이 유용하다.
    • 빌더패턴 예시

 

 적용 전

 적용 후

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Window{
 
     public Window(bloolean visible,boolean modal,boolean diaog){
 
         this.visible=visible;
 
         this.modal=modal;
 
         this.dialog=dialog;
 
     }
 
 
 
    private boolean visible;
 
    private boolean modal;
 
    private boolean dialog;
 
}


  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class WindowBuilder{
 
 
 
   public WindowBuilder(){}
 
   
 
   public WindowBuilder setDialog(boolean flag){
 
  
 
        dialog=flag;
 
        return this;
 
    }
 
   public WindowBuilder setModal(boolean flag){
 
  
 
        modal=flag;
 
        return this;
 
    }
 
   public WindowBuilder setVisible(boolean flag){
 
  
 
        visible=flag;
 
        return this;
 
    }
 
   public Window build(){
 
         return new Window(visible,modal,dialog);
 
    }
 
    private boolean visible;
 
    private boolean modal;
 
    private boolean dialog;



 

Secure 코딩과 기본해킹 3가지 기법

Posted by ironmask84
2017. 3. 27. 11:53 컴퓨터공학/Security




1. Secure Cording
SW개발과정에서 개발자 실수, 논리적 오류 등으로 발생하는 취약점을 최소화하는 보안활동
좁게는 소스코드 구현단계에서의 활동이고,
넓게는 SW 개발생명주기 SDLC 의 각 단계별 요구되는 보안활동이 모두 포함됨

1) 입력데이터의 검증

가) SQL Injection
DB와 연동된 웹 어플리케이션에서 입력되는 데이터에 대해 유효성 검증을 하지 않을 경우,
공격자가 입력폼에 SQL문을 삽입하여 DB로부터 정보를 조회하거나 조작하는 취약점

DB와 연동되는 입력값들에 대해서는
SQL 쿼리문관련 특수문자나 SQL명령어들을 필터링 하도록 코드 구현함으로 해결
(ex) ' or 1=1 #  을 통해 TRUE 값 만들수 있음)

나) XSS (크로스 사이트 스크립트)
웹페이지에서 악의적인 스크립트를 포함시켜 사용자 측에서 실행되도록 유도하여 정보 유출 등의 공격 유발

스크립트 종류
Client Side : JavaScipt는 Client측에 다운로드 되어서 브라우져에서 수행
Server Side : JSP, ASP, C#, PHP 등

- 스크립트의 코드 중에 서버에서 값을 받아오는 부분에 대해서는 해당 값에 대해 문자변환 함수나 메소드를 이용하여
유효성 검증을 함으로 해결
- HTML 태그를 허용하는 게시판에서는 White List 선정후 해당 태그만 허용 (Script 태그 금지 등)

2) 보안기능
인증, 접근제어, 기밀성, 암호화, 권한관리 등을 적절하지 않게 구현시 발생하는 취약점

가) 중요 자원에 대한 잘못된 권한 설정
password와 같은 중요자원에는 관리자에 의해서만 read/write 되도록 설정한다.

나) Cross Site Request Forgery (사이트 간 요청 위조)
사용자 자신의 의지와 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격
사용자의 인증 없이 정보에 접근하거나 위조가 가능해진다.

중요한 정보를 처리하는 웹페이지에서는 사용자 재인증 작업을 거치도록 한다.
(코드상에서 ID/Password를 다시 입력받게해서 기존 session의 ID/Password를 비교하도록 한다.)

3) 시간 및 상태
데드락(dead lock)나 자원에 대한 경쟁조건(race condition)과 같이
프로그램 동작과정에서 프로세스 혹은 쓰레드나 시스템 상태에 대한 정보(자원잠금, 세션정보)에 관련된 취약점을 말한다.


가) 경쟁조건(race condition)
한 자원에 대해 동시에 여러 프로세스 혹은 쓰레드에서 접근을 하려고 하면,
동기화 문제가 발생할 수 있고, 
이를 임계영역에 대한 처리를 해서 해결하지만, 잘못 처리하면 데드락이 발생할 수 있다.


4) 에러처리 
에러를 처리하지 않거나, 불충분하면 에러정보에 중요 시스템 정보가 노출될 수 있는 취약점
ex) java에서 e.printStackTrace()와 같이 디버깅 정보를 보여주는 건 개발 때 사용하는 것으로 상용 땐 위험
    그래서 대신 따로 에러메세지를 출력하도록 하고, 내부적인 예외상황은 로그로 따로 저장하도록 구현해야 함

5) 코드오류
메모리의 부적절한 반환 등 개발자의 코딩오류로 인해 유발되는 취약점
Null이 될 수 있는 레퍼런스는 참조하기 전에 널 값인지 검사하도록 한다.

6) 캡슐화
중요한 데이터를 불충분하게 캡슐화하면, 인가되지 않은 사용자에게 데이터 노출이 가능해지는 취약점
멀티 쓰레드 환경인 java 서블릿 등에서는 정보를 저장하는 멤버변수가 포함되지 않도록 하여
서로 다른 세션에서 데이터를 공유하지 않도록 해야한다.



* 아래는 http://ironmask.net/261 참조

2. Race Condition

3. Buffer Overflow

4. Format String

 

웹보안 관련과 OWASP 2013 그리고 2017

Posted by ironmask84
2017. 3. 27. 11:51 컴퓨터공학/Security




국내 웹 취약점 진단기준 : 국정원 10대 취약점, KISA 제시 취약점, 행안부 제시 43개 시큐어 코딩 진단기준
--> CVE, CWE, OWASP 에서 나온 문서들을 참고한 것이다.

1. CVE(Common Vulnerabilities and Exposures) : http://cve.mitre.org , CVE-연도-순서 순의 포맷으로 목록화

2. CWE(Common Weakness Enumeration) : http://cwe.mitre.org , 다양한 언어의 소스코드 취약점 목록화

3. OWASP(Open Web Application Security Project) : https://www.owasp.org/index.php/Main_page
--> 웹어플리케이션에 대한 취약점 Top 10 목록화

4. KISA 점검기준 : http://www.kisa.or.kr/public/laws/laws3.jsp

5. 행정안전부 시큐어코딩 항목 : http://www.mospa.go.kr/


OWASP 2013에 대표적 3가지

1) SQL Injection
   - 유형별
      ㄱ) Error Base SQL Injection : SQL시스템에서  error 리턴시, 그 정보를 이용하여 취약점 찾음
      ㄴ) Blind SQL Injection : 쿼리의 참과 거짓을 통해 데이터 추출
   - 공격방식별
      ㄱ) Form SQL Injection : 입력폼에 쿼리문 Injection
      ㄴ) Union SQL Injection : union select 쿼리문 이용하여 한 쿼리의 결과를 다른 쿼리의 결과에 접합
      ㄷ) Stored Procedure SQL Injection : 일련의 쿼리를 함수처럼 실행
      ㄹ) Mass SQL Injection : 한 번의 공격으로 대량의 DB값이 변조 (악성스크립트 이용)
   - 대안
     ㄱ) DB와 연동되는 스크립트의 모든 패러미터 유효성 검증, SQL 특수문자 필터링
     ㄴ) 입력 문자열 길이 제한

2) XSS (cross site script)
   - 유형별
      ㄱ) Stored XSS - 웹서버내에 DB에 악성스크립트가 저장 - 게시판, 방명록 등에서..
      ㄴ) Reflected XSS - 악성스크립트가 공격사이트가 아닌 다른 사이트에 있는 경우
   - 대안
      ㄱ) 사용자 입력값은 반드시 서버단에서 검증 (특수문자는 변환함수로 치환)
      ㄴ) 게시판에서 HTML 태그 허용시, White List 선정후, 해당 태그만 허용 (Script 태그는 금지 등)

3) CSRF 공격 (cross site request Forgery)
웹어플에서 정상적 경로 통한 요청과 비정상 결로 통한 요청을 서버가 구분하지 못할 경우에,
공격자가 스크립트 구문 이용하여, 정상 사용자로 하여금 조작된 요청을 전송하도록 하여
설정 및 정보 변경시키는 경우
   - 대안
      ㄱ) Get 보다는 POST 방식 사용 (Get은 url에 sql문이 노출?)
      ㄴ) 중요기능에는 세션검증과 재인증을 유도한다.



새롭게 TOP 10 에 추가된 3개 항목은 다음과 같습니다.

1. XML External Entities (XXE) 

XXE 라고 부르는 'XML 외부 엔터티' 취약점은 XML 문서의 DTD 구조 정의 시 Entity 항목을 설정할 수 있을 때 발생하는 취약점 입니다.

XML 문서는 마치 변수를 선언한 것 처럼 Entity를 선언하여 사용 할 수 있는데, Entity 선언 시 외부 리소스로 선언이 가능합니다.

아래 코드와 같이 외부 파일, 가령 운영체제의 계정 정보가 기록된 passwd 파일을 외부 엔터터로 선언하고 XML 문서 내에서 '&엔터티명'을 호출하면 해당 파일 내용을 핸들링 할 수 있습니다.

<?xml version="1.0" encoding="ISO-8859-1"?>

 <!DOCTYPE foo [<!ELEMENT foo ANY >

 <!ENTITY xxe SYSTEM "file:///etc/passwd" >]>

 <foo>&xxe;</foo>

참고로 일반적으로 마크업 문서에서 <, > 대신 사용하는 &lt, &gt 는 기본적으로 선언된 Entity 입니다.


2. Insecure Deserialization

Javascript 를 비롯하여 여러가지 개발 언어에서 여러가지 이유로 데이터 혹은 객체를 전송할 때 직렬화(Serialization)을 수행하게 됩니다. 가령 특수 문자나 공백등의 구분자가 포함되어 있다던가, 바이너리 데이터를 전송할 필요가 있다던가 URL 호출로 직접 데이터를 전송 할 경우 일반적으로 사용합니다.

이렇게 serialization 된 정보 전송 시 별도의 무결성 검증이나 암호화를 수행하지 않을 경우 프로그램에 영향을 줄 수 있는 악의적인 정보를 전송할 경우 원래 데이터로 복원하는 Deserializtion 시 문제를 발생시킬 수 있습니다.


3. Insufficient Logging & Monitoring

악의적인 공격 징후에 대한 로그를 남기지 않거나 로그를 기록하더라도 모니터링을 수행하지 않으면 지속적인 공격의 대상이 될 수 있습니다.

공격의 징후 (가령 대량의 포트 스캐닝, Brute force 공격 등)에 대한 로그 기록과 지속적인 모니터링을 통해 공격 징후를 파악하고 사전에 공격을 차단할 수 있도록 방비해야 합니다.

[출처] OWASP TOP 10 2017 릴리즈|작성자 강군



2013 버전과 비교하면 몇가지 변경사항들이 좀 눈에 띄입니다. 특히 2013 버전에 있던 CSRF(크로스 사이트 요청변조)가 이번 버전에서 빠졌는데, OWASP 그룹에 따르면 CSRF는 13위에 랭크되어 이번 TOP 10 에서는 제외되었다고 합니다.



아래는 OWASP Top 10 -2017 관련 내용입니다.

처 : https://blog.naver.com/PostView.nhn?blogId=crehacktive3&logNo=221162402841&proxyReferer=https%3A%2F%2Fwww.google.com%2F


드디어 OWASP Top 10 - 2017 최종 버전이 공개되었습니다. 지난번 OWASP Top 2017 RC1 항목에 관해 포스팅을 하였는데 그때와는 다소 항목이 변경된 것을 아래 그림을 통해 알 수 있습니다. 이전 OWASP Top 10 - 2013 버전 보다 훨씬 더 직관적으로 항목이 변경되었으며, 최신 트랜드를 반영한 것을 알 수 있습니다.



OWASP Top 10 - 2013, OWASP Top 10 - 2017 항목 비교


아래는 본문 내용에서 발췌한 내용입니다.


데이터가 제공한 새로운 문제: 

- A4:2017-XML 외부 개체(XXE)는 주로 소스 코드 분석 보안 테스팅 도구(SAST) 데이터 집합에서 지원되는 새로운 범주입니다.


커뮤니티가 제공한 새로운 문제: 

우리는 커뮤니티가 지켜보고 있는 두 가지 취약점에 대한 통찰력을 제공할 것을 요청했습니다. 500개 이상의 개별 제출 및 민감한 

노출, XXE와 같은 이미 제시된 데이터를 제거한 후 다음과 같은 두 가지 새로운 문제가 있었습니다: 

- A8:2017-안전하지 않은 역직렬화는 영향을 받는 플랫폼에서 원격 코드 실행 또는 중요한 개체 조작을 허용합니다. 

- A10:2017-불충분한 로깅과 모니터링은 악의적인 활동 및 침입 탐지, 사고 대응 및 디지털 포렌식을 방해하거나 크게 지연시킬 수 

있는 결함이 있습니다. 


병합했거나 삭제됐지만, 잊지 말아야 하는 사항: 

- A4-안전하지 않은 직접 객체 참조와 A7-기능 수준의 접근 통제 누락은 A5:2017-취약한 접근 통제 항목으로 병합되었습니다. 

- A8-크로스-사이트 요청 변조 (CSRF)은 CSRF 방어를 포함한 많은 프레임워크에 있기 때문에 5%의 애플리케이션에서만 

발견되었습니다. 

- A10-검증되지 않은 리다이렉트 및 포워드는 약 8%의 애플리케이션에서 발견되었지만 XXE에 밀려났습니다

OWASP Top 10 - 2017(한글버전 PDF)

https://www.owasp.org/images/b/bd/OWASP_Top_10-2017-ko.pdf

OWASP Top 10 - 2017(영문버전 PDF)

https://www.owasp.org/images/7/72/OWASP_Top_10-2017_%28en%29.pdf.pdf