'전체 글'에 해당되는 글 128건

  1. 2022.08.22 SW보안약점진단원 시험준비 8
  2. 2022.08.22 2022 3차 SW 보안약점진단원 양성교육
  3. 2022.07.12 입력데이터 검증 및 표현
  4. 2022.07.12 보안기능
  5. 2022.07.12 SW보안약점
  6. 2022.07.12 시간 및 상태
  7. 2022.07.12 에러처리
  8. 2022.07.12 코드오류

시험 준비 자료는 아래 2가지만 사용했다.

 

2022년 SW 보안약점진단원 교육교재

소프트웨어_보안약점_진단가이드(2021): https://www.kisa.or.kr/2060204/form?postSeq=9&page=1 

 

교재의 보안약점은 진단가이드와 거의 동일하므로 진단가이드 위주로 보안약점 유형별로 구글시트로 정리했다.

교재는 분석설계 단계 실습 부분만 보았는데 시험에 별로 도움이 되진 않았다.

 

이론의 진위(OX), 객관식, 단답형은 단순히 암기만 하면 되고, 이론 서술문제, 실기 서술 문제는 암기해서 쓰는 훈련이 필요하다.

 

설계단계 보안약점은 보안약점유형, 설계항목, 설명, 구현단계 보안약점, 취약점, 보안대책을 작성한다.

구현단계 보안약점은 보안약점유형, 보안약점이름, 설명, 보안대책, 진단방법, 안전하지 않은 코드, 안전한코드를 작성한다.

그리고 백지에 위의 내용을 약식으로 필사하고 암기 후 외워서 쓰는 훈련을 한다.

모르는 부분은 공백으로 두고 생각나는 부분 만암기해서 쓰도록 한다. 공백은 빨간색으로 채운다. 빨간색으로 작성된 부분을 다시 확인한다.

 

총 69개이지만 내용이 많지 않은 보안약점이 많기때문에 하루에 15개 정도만 하면 5일이면 충분하다.

주말은 시간을 더 할애해서 암기에 집중하도록 한다. 당연한 말이지만 본인에게 쉬운 보안약점부터 공략하고 영역을 확대해 나가자.

 

개발자도 마찬가지지만 비개발자라면 코드를 보고 약점을 도출하는 훈련을 특히 많이 해야 한다.

 

안전하지 않은 코드만 보고 보안 약점에 대한 내용을 작성할 수 있도록 훈련한다. 

 

진단가이드에 나오는 정탐, 오탐 예제를 보고 그 근거를 이해하도록 한다.

 

요청하신 분이 계셔서 학습할 때 사용한 파일을 첨부합니다. 참고하세요.

 

SW보안약점진단기준 학습.xlsx
1.11MB

 

시험후기(https://lumasca.tistory.com/1151)

Posted by Lumasca
,

2022년 7월 25일부터 29일까지 3차 SW보안약점진단원 양성교육이 있었다.

 

교육후기: 교육 운영진은 모두 친절하셨으며, 강사님 두분도 열심히 강의를 하셔서 대체로 만족스러웠다.

다만 실습은 코드분석 위주로 이루어져서 분석/설계 산출물이나 소스코드로 보안약점을 진단하고 보완요청서를 작성하는 실습이 없었던 점이 많이 아쉽다.

 

2022년도 3차 교육는 아래 장소에서 진행되었다. 날도 더운데 멀지않은 곳이어서 좋았다.

한국정보보호교육센터 본관  

-주소: 서울 강남구 남부순환로 2645 한독빌딩 5 SPACE HUB  *양재역 4번 출구 410m  

출석은 아침(9:00, 교육시작전), 점심(13:00, 점심식사후), 저녁(18:00, 교육종료후)에 출입문근처에 부착된 QR코드를 찍으면 전화번호, 이름, 날짜, 시간을 입력하는 페이지로 이동한다. 정보를 모두 입력하고 제출을 하면 된다.

 

교재는 수업 첫날 책상에 배부되어 있다.

좌석은 선착순으로 첫날 앉았던 좌석을 계속 유지하도록 권고하고 있다.

 

중식은 근처 식당에서 각자 알아서 해결하면 된다.

 

이번 교육 회차가 경쟁률이 높았다고 한다. 개발자보다 보안업체 인력이 많이 참석했다.

 

둘째날 오후에 코로나 확진자가 발생하여, 온라인, 오프라인 수업이 병행으로 진행되었다. 교육생은 선택에 따라 결정할 수 있었다.

 

본인은 온라인 수업을 희망하였기 때문에 오후에 집으로 가서 온라인 줌을 이용해서 교육을 수강했다.

 

실습파일은 대용량 메일로 전송되며, 실습 프로젝트 압축 파일과 가상컴퓨팅환경(VMware) 압축 파일을 전송해준다.

 

실습환경(JDK, 이클립스)을 구성하는 과정을 진행하는데, 잘 안되면 VMWare를 설치하고 가상컴퓨팅 환경을 사용해도 무방하다.

 

설계단계나 구현단계 모두 실습은 코딩 예제를 가지고 진행했다.

 

마지막날은 다른 일이 있어서 출석하지 못했다. 만족도 조사 링크는 문자로 전송된다. 그리고 시험에 응시할 것이지 조사한다. 

 

나는 이후에 전화로 연락이 와서 응시한다고 말했다.

 

응시기회는 총 3번인데 교육수료후 첫 시험은 응시를 하던 안하던 차감되는 것으로 들었다. 

 

시험유형을 확인하기 위해서라도 응시해야 한다.

 

출석율이 80%이상이면 교육과정을 이수한 것으로 된다.

 

수료증은 KISA > 마이페이지 > 교육이력(https://academy.kisa.or.kr/mypage/history.kisa)에서 출력할 수 있다.

 

 

'IT 자격증 > SW보안약점진단원' 카테고리의 다른 글

2022년 2차 SW보안약점진단원 시험 후기  (0) 2022.08.22
SW보안약점진단원 시험준비  (8) 2022.08.22
입력데이터 검증 및 표현  (0) 2022.07.12
보안기능  (0) 2022.07.12
SW보안약점  (0) 2022.07.12
Posted by Lumasca
,
보안약점 설명
1.1 SQL 삽입
검증되지 않은 외부입력값이 SQL 쿼리문 생성에 사용되어 악의적인 쿼리가 실행될 수 있는 보안약점

=>PreparedStatement 객체를 이용해서 쿼리 수행, Mybatis, Hibernate 파라미터 바인딩 이용
1.2 경로 조작 및 자원 삽입
검증되지 않은 외부입력값이 시스템 자원 접근경로 또는 자원제어에 사용되어 공격자가 입력값을 조작해 공격할 수 있는 보안약점

=>경로순회 문자열 제거(./\)
1.3 크로스사이트 스크립트
검증되지 않은 외부입력값에 의해 사용자 브라우저에서 악의적인 스크립트가 실행될 수 있는 보안약점

=>입력값의 스크립트 문자열 치환, AntiXss 패키지 등으로 입력값 필터링, 
1.4 운영체제 명령어 삽입
검증되지 않은 외부입력값이 운영체제 명령문 생성에 사용되어 악의적인 명령어가 실행될 수 있는 보안약점

=>실행가능한 명령어 제한
1.5 위험한 형식 파일 업로드
파일의 확장자 등 파일형식에 대한 검증 없이 업로드를 허용하여 발생할 수 있는 보안약점

=> 파일 확장자 필터, 대소문자 구별
1.6 신뢰되지 않는 URL 주소로 자동접속 연결
검증되지 않은 외부입력값이 URL 링크 생성에 사용되어 악의적인 사이트로 자동 접속될 수 있는 보안약점

=>이동가능한 URL범위를 제한
1.7 XQuery 삽입
검증되지 않은 외부입력값이 XQuery 쿼리문 생성에 사용되어 악의적인 쿼리가 실행될 수 있는 보안약점

=>buildString함수를 이용해 쿼리 구조 변경 금지
1.8 XPath 삽입
검증되지 않은 외부입력값이 XPath 쿼리문 생성에 사용 되어 악의적인 쿼리 가 실행될 수 있는 보안약점

=>XQuery를 사용.
1.9 LDAP 삽입
검증되지 않은 입력값이 LDAP 명령문 생성에 사용되어 악의적인 명령어가 실행될 수 있는 보안약점

=>LDAP 필터 조작 가능한 공격문자열을 제거.
1.10 크로스사이트 요청위조 검증되지 않은 외부입력값에 의해 브라우저에서 악의적인 스크립트가 실행 되어 공격자가 원하는 요청(Request)이 다른 사용자(관리자 등)의 권한으로 서버로 전송되는 보안약점

=>입력화면 토큰 생성후 세션에 저장, 히든 필드로 서버에 전달,
요청한 토큰과 세션 토큰을 비교해서 일치하면 요청 처리
1.11 HTTP 응답분할
검증되지 않은 외부입력값이 HTTP 응답헤더에 삽입되어 악의적인 코드가 실행될 수 있는 보안약점

header, body 는 개행문자(\r\n)로 구분됨.
body 위조 가능

=>외부입력값이나 쿠키는 개행문자를 검증
1.12 정수형 오버플로우 정수를 사용한 연산의 결과가 정수값의 범위를 넘어서는 경우, 프로그램이 예기치 않게 동작될 수 있는 보안약점

//정수가 범위를 넘으면 음수 가능
String s = getString("size");
int i = Integer.parseInt(s);
String[] arr = new String[i];

=>정수의 범위를 체크
1.13 보안기능 결정에 사용되는 부적절한 입력값 검증되지 않은 입력값이 보안결정(인증, 인가, 권한부여 등)에 사용되어 보안 메커니즘 우회 등을 야기할 수 있는 보안약점

=>중요정보는 서버에 있는 정보를 이용하도록 한다.
1.14 메모리 버퍼 오버플로우 메모리 버퍼의 경계값을 넘어서 메모리값을 읽거나 저장하여 예기치 않은 결과 를 발생시킬 수 있는 보안약점

stack 끝에는 복귀주소가 있어서 버퍼크기를 조작할 경우 정보 유출 가능
=>포인터를 덮어쓰지 못하도록 허용된 범위만 지정,
문자열종료는 '\0' 추가
1.15 포맷 스트링 삽입 printf 등 외부입력값으로 포맷스트링을 제어할 수 있는 함수를 사용하여 발생 할 수 있는 보안약점

=> 입력값은 포맷 문자열(%s)를 사용.

'IT 자격증 > SW보안약점진단원' 카테고리의 다른 글

SW보안약점진단원 시험준비  (8) 2022.08.22
2022 3차 SW 보안약점진단원 양성교육  (0) 2022.08.22
보안기능  (0) 2022.07.12
SW보안약점  (0) 2022.07.12
시간 및 상태  (0) 2022.07.12
Posted by Lumasca
,
보안약점 설명
2.1 적절한 인증없는 중요 기능 허용
적절한 인증 없이 중요정보(금융정보, 개인정보, 인증정보 등)를 열람(또는 변경)할 수 있게 하는 보안약점

=>최소권한 할당, R,W,E
2.2 부적절한 인가
적절한 접근제어 없이 외부입력값을 포함한 문자열로 중요자원에 접근할 수 있는 보안약점

=> DES, MD5 보다는 AES, SHA 사용
2.3 중요한 자원에 대한 잘못된 권한 설정
중요자원(프로그램 설정, 민감한 사용자 데이터 등)에 대한 적절한 접근권한을 부여하지 않아, 인가되지 않은 사용자 등에 의해 중요정보가 노출·수정되는 보안약점
2.4 취약한 암호화 알고리즘 사용
중요정보(금융정보, 개인정보, 인증정보 등)의 기밀성을 보장할 수 없는 취약 한 암호화 알고리즘을 사용하여 정보가 노출될 수 있는 보안약점
2.5 중요정보 평문 저장 중요정보(비밀번호, 개인정보 등)를 암호화하여 저장하지 않아 정보가 노출될 수 있는 보안약점

=>중요정보는 암호화해서 저장
2.6 중요정보 평문전송
중요정보(비밀번호, 개인정보 등) 전송시 암호화하지 않거나 안전한 통신채널 을 이용하지 않아 정보가 노출될 수 있는 보안약점

=>중요정보는 암호화해서 전송. SSL, HTTPS 사용.
2.7 하드코드된 비밀번호
소스코드 내에 비밀번호가 하드코딩 되어 소스코드 유출시 노출 우려 및 주기적 변경 등 수정(관리자 변경 등)이 용이하지 않는 보안약점

=>코드에 패스워드 작성 금지, 
2.8 충분하지 않은 키 길이 사용
데이터의 기밀성, 무결성 보장을 위해 사용되는 키의 길이가 충분하지 않아 기밀정보 누출, 무결성이 깨지는 보안약점

=>RSA는 2048 비트 이상
2.9 적절하지 않은 난수값 사용
예측 가능한 난수사용으로 공격자로 하여금 다음 숫자 등을 예상하여 시스템 공격이 가능한 보안약점


=>Random이 아닌 SecureRandom을 사용
2.10 하드코드된 암호화 키
소스코드 내에 암호화키가 하드코딩 되어 소스코드 유출시 노출 우려 및 키 변경이 용이하지 않는 보안약점

=>암호키는 외부파일에 암호화된 형태로 저장
2.11 취약한 비밀번호 허용
비밀번호 조합규칙(영문, 숫자, 특수문자 등) 미흡 및 길이가 충분하지 않아 노출될 수 있는 보안약점

=>비밀번호 작성규칙 적용(영문+숫자 10자리이상, 영문+숫자+특수문자 8자리 이상)
2.12 사용자 하드디스크 저장되는 쿠키를 통한 정보노출
쿠키(세션 ID, 사용자 권한정보 등 중요정보)를 사용자 하드디스크에 저장함 으로써 개인정보 등 기밀정보가 노출될 수 있는 보안약점

=>쿠키 만료기간 짧게, 
2.13 주석문 안에 포함된 시스템 주요정보
소스코드내의 주석문에 인증정보 등 시스템 주요정보가 포함되어 소스코드 유출시 노출될 수 있는 보안약점

=>주석에 비밀번호 등 중요정보 저장금지
2.14 솔트 없이 일방향 해쉬 함수 사용
공격자가 솔트 없이 생성된 해시값을 얻게 된 경우, 미리 계산된 레인보우 테이블 을 이용하여 원문을 찾을 수 있는 보안약점

=>패스워드 저장시 솔트값을 추가한 해쉬값을 저장
2.15 무결성 검사없는 코드 다운로드
원격으로부터 소스코드 또는 실행파일을 무결성 검사 없이 다운로드 받고 이를 실행하는 경우, 공격자가 악의적인 코드를 실행할 수 있는 보안약점

=>서버에서 개인키로 암호화후, 클라에서 공개키로 복호화.
2.16 반복된 인증시도 제한 기능 부재 인증시도의 수를 제한하지 않아 공격자가 무작위 인증시도를 통해 계정접근 권한을 얻을 수 있는 보안약점

=>인증실패시 재시도 시간 지연 또는 재시도 횟수 제한.

'IT 자격증 > SW보안약점진단원' 카테고리의 다른 글

2022 3차 SW 보안약점진단원 양성교육  (0) 2022.08.22
입력데이터 검증 및 표현  (0) 2022.07.12
SW보안약점  (0) 2022.07.12
시간 및 상태  (0) 2022.07.12
에러처리  (0) 2022.07.12
Posted by Lumasca
,

 

'IT 자격증 > SW보안약점진단원' 카테고리의 다른 글

입력데이터 검증 및 표현  (0) 2022.07.12
보안기능  (0) 2022.07.12
시간 및 상태  (0) 2022.07.12
에러처리  (0) 2022.07.12
코드오류  (0) 2022.07.12
Posted by Lumasca
,
보안약점 설명
3.1 검사시점과 사용시점 멀티 프로세스 상에서 자원을 검사하는 시점과 사용하는 시점이 달라서 발생 하는 보안약점

동시성 제어: synchronized, mutex, semaphore
3.2 종료되지 않은 반복문 또는 재귀 함수 종료조건 없는 제어문 사용으로 반복문 또는 재귀함수가 무한히 반복되어 발생 할 수 있는 보안약점

탈출조건을 지정

'IT 자격증 > SW보안약점진단원' 카테고리의 다른 글

보안기능  (0) 2022.07.12
SW보안약점  (0) 2022.07.12
에러처리  (0) 2022.07.12
코드오류  (0) 2022.07.12
API 오용  (0) 2022.07.12
Posted by Lumasca
,
보안약점 설명
4.1 오류 메시지를 통한 정보노출 개발자가 생성한 오류 메시지에 시스템 내부구조 등이 포함되어 민감한 정보 가 노출될 수 있는 보안약점

try{
}catch(IOException e) {
   e.printStackTrace();//스택 정보 노출
}


try{
}catch(IOException e) {
   logger.e(e);
}
4.2 오류 상황 대응 부재
시스템에서 발생하는 오류 상황을 처리하지 않아 프로그램 실행정지 등 의도 하지 않은 상황이 발생할 수 있는 보안약점

try{
}catch(NullPointerException e){
//오류 발생시 대응을 안하면 정상인것처럼 동작
}


try{
}catch(NullPointerException e){
   logger.e(e.getMessage());
   return false;  
}
4.3 부적절한 예외 처리 예외에 대한 부적절한 처리로 인해 의도하지 않은 상황이 발생될 수 있는 보안 약점

try{
}catch(Exception e){//광범위한 예외처리
}

//예외처리 세분화
try{
}catch(IOException e){
}catch(ParseException e){
}

'IT 자격증 > SW보안약점진단원' 카테고리의 다른 글

SW보안약점  (0) 2022.07.12
시간 및 상태  (0) 2022.07.12
코드오류  (0) 2022.07.12
API 오용  (0) 2022.07.12
캡슐화  (0) 2022.07.12
Posted by Lumasca
,
보안약점 설명
5.1 Null Pointer 역참조 Null로 설정된 변수의 주소값을 참조했을 때 발생하는 보안약점

String url = request.getParameter("url");

//url 에 null이 들어오면 문제 발생
if(url.equals(""))


if(url != null || url.equals(""))
5.2 부적절한 자원 해제
사용된 자원을 적절히 해제하지 않으면 자원 누수 등이 발생하고, 자원이 부족 하여 새로운 입력을 처리할 수 없게 되는 보안약점

in = new FileInputStream(inputFile)
out = new FileOutputStream(outputFile);

FileCopy.copy(in, out);
//실행중에 오류가 나면 자원반환이 안됨.
in.close();

try{
}catch(){
}finally{
in.close();
out.close();
}
5.3 해제된 자원 사용
메모리 등 해제된 자원을 참조하여 예기치 않은 오류가 발생될 수 있는 보안 약점
char *temp;

free(tem);

stmcpy(temp, "1234", size); //예기치 않은 취약점 발생
5.4 초기화되지 않은 변수 사용 변수를 초기화하지 않고 사용하여 예기치 않은 오류가 발생될 수 있는 보안 약점

int x;

초기화되지 않은 변수는 위조가 가능.
int x=1;

'IT 자격증 > SW보안약점진단원' 카테고리의 다른 글

시간 및 상태  (0) 2022.07.12
에러처리  (0) 2022.07.12
API 오용  (0) 2022.07.12
캡슐화  (0) 2022.07.12
SW보안약점진단원 양성과정 교육 신청  (0) 2022.06.30
Posted by Lumasca
,