양자컴퓨터... 지금 현존하는 컴퓨터의 계산능력을 초월한 동시계산량을 가지는 컴퓨터라고 한다. 2017년 49큐비트 프로세스로 2의 49승의 동시계산을 수행하는 컴퓨터가 IBM과 구글에서 발표하였다. 


우리가 아는 암호기술은 풀지 못하는 문제가 아니라 푸는데 오랜 시간이 걸리는 문제 인데 이런 양자컴퓨터가 상용화가 된다면 기존의 암호화는 더이상 안전하지 않을것 이라고 이야기 한다.


여기벌써 처음 들어보는 단어가 나왔다.


큐비트(quantum bit, qbit) 

물질의 최소 단위인 양자 정보의 단위다. 일반 컴퓨터가 정보를 0과 1 비트 단위로 처리하고 저장한다면, 양자 컴퓨터는 1과 0의 상태를 동시에 가지는 큐비트를 단위로 쓴다. 


아욱... 수십년 0과 1로만 데이터 처리를 이해하고 있는 사람으로서는 어떻게 1과 0을 동시에 가지지 라고 생각할 수 있다.


아래 그림은 양자 컴퓨터의 특징을 설명하고 있는 그림이다. 


[그림출처] KISA 양자컴퓨팅 환경에서의 암호기술 이용 안내서 



현재의 반도체는 트랜지스터를 기반으로 전류가 흐르면 1, 전류가 흐르지 않으면

 0으로 처리된다. 이 트랜지스터는 점점 작아져서 현재는 더 이상 물리적으로

작게 만들 수 없을 만큼 작게 반도체에 집적된 상태이다.


기존 컴퓨터의 한계를 극복하기 위한 컴퓨터가 양자 컴퓨터이다.


양자 컴퓨터는  작은 에너지 덩어리인 양자가가 가진 중첩과 얽힘이라는 특성을 사용하는 것인데. 이러한 특성 때문이 한개의 입자속에 여러속성을  중첩된 형태로 가질 수 있다. 그리고 이 속성들이 고정된 형태가 아니라 서로 영향을 주고 받으며 얽히는 특성을 가지고 있어 우리의 기존 상식으로 이해하기 어려운 물리 현상이다.



큐비트는 0이면서 동시에 1일수도 있기 때문에 2개의 큐비트는 00,01,10,11 등 4개의 값을 동시에 가질 수 있다. 


이러한 특성으로 큐비트가 표시하는 정보량은 큐비트가 3개일때 8, 4개 일때 16식으로 2의 거듭제곱 형태로 기하급수적으로 늘어나게 된다.


즉, 양자 중첩을 통해 양자 컴퓨터는 기존 컴퓨터와 다르게 병렬계산이 가능해 진다. 양자 컴퓨터의 능력은 슈퍼컴의 36배 이상의 처리 능력을 가진다고 한다. 즉 몇일이 걸리 작업을 한시간이면 가능하다는 것이다.


그래서 미국과 영국, 중국은 수천억달러의 기술 개발비를 투입하면 사활은 건 전쟁을 수행하고 있다.


현재 한국은 삼성이 IBM의 진영에 합류하고 양자컴퓨터 개발에 박차를 가하고 있으며, 구글은 머신러닝, 자율주행, 양자컴퓨터를 묶어서 세계를 제패하려고 하고 있다.


이러한 어마어마한 컴퓨팅 파워는 현재 소인수 분해의 계산 시간이 오래 걸림을 사용하는 암호화 방식이 무용지물이 될 수 있게 할 수 있다.



양자 컴퓨팅 환경에서 권고 되는 양자내성암호 알고리즘은 크게 5가지로 구분 하고 있다. 


[그림출처] KISA 양자컴퓨팅 환경에서의 암호기술 이용 안내서 



양자내성암호별 최적화된 오픈소스 라이브러리가 배포되고 있는 사이트 주소이다.

[그림출처] KISA 양자컴퓨팅 환경에서의 암호기술 이용 안내서 



미리 미리 준비해야 하지 않을까 싶다.

좀 더 시간을 내서 양자내성암호 알고리즘을 하나씩 하나씩 파헤쳐 봐야 겠다.



양자컴퓨팅이란 무엇인가? 를 쉽게 설명하고 있는 동영상이 있어서 링크 걸어본다.

https://www.youtube.com/watch?v=8gWU0KLimNU


"KISA 양자컴퓨팅 환경에서의 암호기술 이용 안내서" 다운로드 링크도 걸어본다.

https://www.kisa.or.kr/public/laws/laws3_View.jsp?cPage=1&mode=view&p_No=259&b_No=259&d_No=96&ST=total&SV=



열공~~~ 화팅!!!!



블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

KISIA 사전설문 

블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

설문지 링크:

https://goo.gl/forms/m6MY7QFPgPRFQC4u2

블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

BSIMM은 무엇?



소프트웨어 보안의 측도 BSIMM(Building Security In Maturity Model)



소프트웨어가 안전한가? 안전하다면 얼마나 안전한 걸까? 에대해 많은 이들은 수치화 하여 보여 주기를 원한다. 이 요구사항을 충족시켜주는 보안 활동중의 하나가 BSIMM(비심이라고 읽으면 됨) 이라고 볼수 있다.  BSIMM은 단순 관찰과 보고 기능만 수행하는 소프트웨어 보안의 측도라고 할 수 있다.


BSIMM은 수년에 걸친 78개 기업(금융서비스-33, 독립소프트웨어 공급업체-27, 가전제품-13, 의료-10 일부중첩된 경우도 있음)들로 부터 얻은 데이터를 분석한 실제 소프트웨어 보안 계획에 대한 연구결과이며, 서로 다른 기관들의 실천과제를 수량화하여 다수의 기관들에서 나타나는 일반적인 근거와 각각의 기관들의 고유한 계획을 측정한 것이다.  


즉 BSIMM은 소프트웨어 보안의 "현재상황"을 수치화해서 보여주는 것이다.



2008년 첫번째 버전부터 시작해서 현재 6번째 버전인 BSIMM6을 적용하고 있다. 어떤 기술이든 용어에 대한 정의가 중요하다. 이 문서가 무엇을 말하고 있는지 어떻게 이해해야 하는지에 대한 정의이기 때문이다.



BSIMM 에서 사용하는 용어


SSG(소프트웨어 보안 그룹): 소프트웨어 보안을 실행하고 원활하게 진행되도록 전담하는 인력들이다. 아마도 보안 계획의 첫번째 단계는 우수한 SSG를 구성하는 것이다.



SSF(소프트웨어 보안 프레임워크): 소프트웨어 보안활동의 기본 틀이다. BSIMM은  4개도메인에 12개의 실천과제로 구성된 프레임워크를 사용한다.


SSDL(시큐어 소프트웨어 개발 생명주기): 통합 소프트웨어 보안 체크 포인트 및 활동이 포함된 모든 소프트웨어 개발 생명주기를 의미한다.


SDL(시큐어 개발 생명주기): 마이크로소프트에서 자사의 소프트웨어를 안전하게 개발하기 위해 적용한 개발방법론이다.


활동 : 실천과제의 일환으로 SSG에서 수행하거나 진행시키는 활동


실천과제 : BSIMM의 SSF는 4개의 도메인으로 구성되고,  

              각 도메인은 3가지의 실천과제로 구성되어 있다.


도메인 : 관리, 정보, SSDL 접점 및 전개로 나뉜다.





BSIMM6의 구조


4도메인, 12개의 실천과제로 구성 되어 있다.




Goverance : 소프트웨어 보안 계획의 구성 및 관리, 측정  관련 활동.

                 인력개발도 주요 실천과제중의 하나이다.


Intelligence : 조직전반에서 소프트웨어 보안 활동을 수행하는데 사용된 기업정보 수집관련 활동 

                 선제적 보안지침과 조직 위협모델링이 포함된다. 


SSDL Touchpoints : 특정소프트웨어 개발 산출물 및 프로세스의 분석, 보증 관련된 활동 

                 모든 소프트웨어 보안 방법에는 이 실천과제들이 포함 된다.


Deployment : 네트워크 보안 및 소프트웨어 유지보수 조직과 소통 관련 활동

                 소프트웨어 보안에 직접적인 영향을 미치는 소프트웨어 구성 및 유지보수, 기타 환경문제가 포함 된다.




BSIMM7.PDF(영문) 다운로드 :   BSIMM7.pdf


BSIMM6.PDF(한글) 다운로드 :   eNsecure_BSIMM6_kor.pdf


블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

Securing AngularJS Applications

Benelus_day_20161125_S_Lekies_Securing_AngularJS_Applications.pd




AngularJS 및 MongoDB의 악용 및 완화를 위한 시큐어코딩

AppSecIL_2014_In-Secure_Mongo_And_Angular_Code_-_Israel_Chorzevs




AngularJS 보안 문서 사이트

https://docs.angularjs.org/guide/security


'보안 > 시큐어코딩' 카테고리의 다른 글

금융보안원 설문지 링크  (0) 2018.03.06
BSIMM은 무엇?  (0) 2018.03.05
[Angular JS] 앵귤라JS 시큐어코딩  (0) 2018.01.03
[Node.js] Node.js 시큐어코딩 규칙 10가지  (0) 2018.01.03
SonarQube 설치 및 사용법  (0) 2017.12.12
OWASP TOP 10 2017  (0) 2017.12.12
블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

Node Hero의 11번째 시리즈로, Node.js 보안 튜토리얼로 가장 일반적인 공격 경로로 부터 애플리케이션 방어를 위한 방법을 설명하고 있다. 
원문: https://blog.risingstack.com/node-hero-node-js-security-tutorial/

칙 1: eval을 사용하지 말것


eval은 코드 인젝션 공격에 취약하다. 
명시적으로 eval을 사용하지 않는것 뿐만 아니라 백그라운드에서 eval을 사용하는 함수들도 사용하지 않는것이 좋다.

setInterval(String,2)
setTimeout(String, 2)
new Function(String)

규칙 2: 항상 'use strict' 모드를 사용하라. 


'use strict'을 사용하면 코드내에 존재하는 몇몇 암묵적인 에러를 제거해주고, 에러로그를 출력해 준다.
'use strict'  
delete Object.prototype
// TypeError
var obj = {
a: 1,
a: 2
}
// syntax error

규칙 3: 에러처리에 주의하라


에러처리를 통해 민감한 정보가 노출될 수 있다.

 ex) X-Powered-By:Express 

출력되는 스택정보는 공격자들에게 흥미로운 정보로 제공될 수 있다. 에러 발생에 관련된 내용을 디버깅 정보로 제공하는 좋지 않은 습관이다.

규칙 4: 코드 정적분석을 통해 코드 보안을 강화할 수 있다. 


ESLint 와 Standard code style 조합으로 코드 정적분석을 수행하게 되면 많은 버그를 개발단계에서 제거할 수 있다. 

규칙 5: 슈퍼유저의 권한으로 프로세스를 실행하지 말라


Node.js 애플리케이션을 superuser권한으로 실행하고 직접적으로 80번이나 443포트를 사용하여 사용자의 요청을 받아서 처리하는 경우, 특정 상황이나 에러, 버그가 발생하는 경우 전체 시스템에 영향을 미칠 수 있다.  HTTP요청을 전달하기 위해 HTTP서버나 프록시 설정을 사용하는것이 좋다.

규칙 6: 보안에 관련된 HTTP 헤더 정보를 설정하라


다음은 보안을 강화할 수 있는 HTTP 헤더 설정이다. Node.js에서는 Helmet 모듈을 사용해 헤더들을 쉽게 설정할 수 있다.

Strict-Transport-Security: 서버에 연결할 때 SSL/TLS 연결을 강제한다.

X-Frame-Options: clickjacking에 대한 보호를 제공한다.

X-XSS-Protection:  크로스사이트스크립팅(XSS) 필터를 대부분의 최신 브라우저에 삽입한다.

X-Content-Type-Options: 선언된 content-type과 다른 응답이 내려오는 경우 브라우저에서 MIME-sniffing 공격을 방지한다.

Content-Security-Policy: 넓은 범위의 공격을 방지한다. 크로스사이트 스크립팅 및 다른 크로스사이트 인젝션들이 포함된다.
var express = require('express')  
var helmet = require('helmet')
var app = express()
app.use(helmet())

규칙 7: 적절한 세션관리를 수행한다.


다음은 각 쿠키에서 설정할수 있는 속성들이다. 

secure : 브라우저에게  HTTPS 요청이 들어왔을 때만 쿠키를 전송하도록 설정한다. 

HttpOnly :  JavaScript에서 쿠키에 접근하는 것을 허용하지 않는다. XSS 공격을 방지하는데 도움이 된다.

규칙 8: 쿠키(cookie)의 유효범위를 설정한다.

domain :  요청한 URL과 서버의 도메인이 동일한지 비교한다. 만약 도메인이 일치하거나 도메인의 서브 도메인인 경우 path 속성 검사로 넘어간다.

path: 덧붙여 도메인에 접근 가능한 쿠키의 URL path(e.g: /article/1)를 명시할 수 있다. 만약 도메인과 URL path가 일치한다면 요청 시 쿠키를 전송한다.

expires :  쿠키를 지속적으로(persistent) 사용하기 위해 설정이다.  민감한 정보가 포함된 쿠키는 세션쿠키로만 사용되도록 설정해야 한다.

규칙 9: Retire.js로 취약점을 찾는다.


Retire.js는 사용하고 있는 모듈 버전들에 대해 알려진 취약점을 탐지하는 모듈이다.  다음과 같이 간단히 설치 할 수 있다. 
npm install -g retire

설치후 retire 명령을 실행하여 mod_modules 디렉토리 내의 모듈들의 취약점을 찾을 수 있다.

규칙 10:  Node Security Platform CLI로 사용하고 있는 module들을 감사한다.


Node Security Platform의 주요 명령어라인 인터페이스인 nsp를 사용하여 프로젝트 디렉토리안의 취약한 모듈을 점검 할 수 있다.
npm install nsp --global  
# From inside your project directory
nsp check


'보안 > 시큐어코딩' 카테고리의 다른 글

BSIMM은 무엇?  (0) 2018.03.05
[Angular JS] 앵귤라JS 시큐어코딩  (0) 2018.01.03
[Node.js] Node.js 시큐어코딩 규칙 10가지  (0) 2018.01.03
SonarQube 설치 및 사용법  (0) 2017.12.12
OWASP TOP 10 2017  (0) 2017.12.12
잘정리된 XXE인젝션  (0) 2017.12.12
블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

지속적인 코드품질관리 도구인 소나큐버 설치 및 사용법에 대해 잘 정리된 사이트네요. 참고하세요.


https://www.lesstif.com/pages/viewpage.action?pageId=39126262


또는


http://keichee.tistory.com/158

블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

OWASP TOP 10 2017






블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

잘정리된 XXE인젝션


https://beistlab.files.wordpress.com/2015/01/grayhash_intro_xxe.pdf


grayhash_intro_xxe.pdf


블로그 이미지

오픈이지 제로킴

시큐어코딩 교육/컨설팅 전문가 그룹

설계단계 실습LAB

2017.10.16 09:28

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

  • 개발보안 진단 및 프로세스수립 컨설팅


  • 개발보안 진단 개요

    기존의 소프트웨어 개발 완료 후 보안 취약점을 진단하고 도출된 문제점을 개선하는 작업은 상당한 비용과 시간이 요구되며, 때로는 해결이 불가능한 문제점에 봉착할 수도 있습니다. 따라서, 이러한 구조적인 문제점을 근본적으로 해결하고 비용 절약 및 최종 개발되는 시스템의 보안성 제고를 위해서 소프트웨어 개발과정 전 단계에 걸쳐 보안성 검토를 위한 과정을 도입해야 합니다.



  • AhnLab 개발보안 진단 방법론 소개 및 특징

    AhnLab의 개발보안 진단 및 프로세스 수립 컨설팅은 시스템 구축 및 개발 과정에서 발생하는 각종 보안이슈 및 정보보호 요구사항을 사전에 분석하여, 필수 보안요건 및 가이드를 제시하고, 개발 각 단계별 보안 적정성 검토를 수행함으로써 보다 안전하고 안정된 시스템 개발이 이루어질 수 있도록 지원합니다.

    AhnLab 개발보안 진단 방법론




  • 개발보안 진단 수행 절차 및 진단 항목

    개발 각 단계(분석, 설계, 구현, 테스트)별로 보안단계(보안분석, 보안설계, 보안구현, 보안테스트)를 설정하고 각 단계별로 요구되는 보안활동을 수행하여, 개발시스템에 대한 보안 적합성 여부를 진단합니다. 더불어, 개발 전 과정에 걸쳐 수행되는 개발 프로세스에 대한 적합성 및 준수 여부를 점검합니다.

    전자금융거래를 위한 보안 요구사항
    단계점검항목세부 점검 내용
    보안분석정보보호 요구사항 분석고객의 정보보호 요구사항(법/내부 규정/선진사례 등)을 검토/분석
    정보보호 보안요건 정의개발시스템 및 운영환경에서 요구되는 보안요건 파악 및 정의
    보안설계보안설계 및 적정성 검토개발시스템의 아키텍쳐, 데이터, 기능 및 통제 정책을 분석하고 보안 적정성을 검토
    위협 모델링개발시스템의 예상 위협/취약점을 분석하여 시나리오 기반의 위협 모델링을 수행
    개발보안 정책/지침 설계고객 환경에 최적화된 개발보안 정책/지침 설계
    개발 가이드/체크리스트 수립고객의 시스템 환경, 위협/개발자 수준에 적합한 개발보안 가이드/체크리스트 제시
    보안구현개발자 교육개발보안 프로세스 및 Secure Code 적용을 위한 개발자 교육 실시
    소스진단Secure Code 적용여부 및 보안 체크리스트 기반 적합성 진단
    보안관리 진단개발환경, 개발관리, 변경관리 등 개발과정에서의 보안관리 현황 적합성 진단
    보안테스트시스템 취약점 진단OS/어플리케이션/네트워크 영역의 보안 취약점 진단/보호대책 제시
    모의해킹위협 모델링 및 시나리오 기반의 모의해킹 진단/보호대책 제시
    보안성 검토보호대책 적용 여부 및 시스템 실 운영 전 보안성 최종 검토 실시

  • 출처: 안랩

    블로그 이미지

    오픈이지 제로킴

    시큐어코딩 교육/컨설팅 전문가 그룹

    [그림출처] 엔비디아가 제시하는 인공 지능과 머신 러닝, 딥 러닝의 차이



    인공지능: 인간의 지능을 기계로 구현한다.


    1956년 인간의 지능과 유사한 특성을 가진 컴퓨터를 만드는 것이 꿈이었다.

    인간의 감각, 사고력을 가진 인간처럼 생각하는 인공지능을 우리는 일반 AI(General AI) 라고 한다. 하지만 현재 기술 발전 수준에서 만들어 낼 수 있는 인공지능은( 좀더 좁게 이미지 분류라던가 얼굴인식이라던가) 특정 작업에서 인간 이상의 능력을 보여주는 특징을 가지고 있으며 이를 구분하여 좁은AI(Narrow AI)라고 한다.



    머신러닝: 인공지능을 구현하는 구체적 접근 방식


    기본적으로 알고리즘을 이용하여 데이터를 분석하고, 분석을 통해 학습하며, 학습한 내용을 기반으로 판단이나 예측한다. 즉 의사 결정의 기준은 소프트웨어에 직접 코딩하는 것이 아니라 대량의 데이터와 알고리즘을 통해 컴퓨터 자체를 학습 시켜 작업을 수행하는 방식이다.




    딥러닝:  완전한 머신 러닝을 실현하는 기술


    인공신겨앙에서 발전한 형태의 인공지능으로 뇌의 뉴런과 유사한 정보 입출력 계층을 활용해 데이터를 학습한다. 2012년 구글과 스탠퍼드대 앤드류 응(Andrew NG)교수는 16,000개의 컴퓨터로 약 10억개 이상의 신경망으로 이뤄진 '심층신경망(Deep Neural Network)'을 구현했다. - 이 연구는 컴퓨터가 영상에 나온 고양이의 형태와 생김새를 인식하고 판단 하는 과정을 스스로 학습하여 유튜브 동영상에서 사람과 고양이 사진을 분휴하는데 성공하였다.


    딥러닝으로 훈련된 시스템의 이미지 인식능력은 이미 인간을 앞서고 있으며, 이 외에도 혈액의 암세포, MRI 스캔에서 종양식별등에서도 인간의 능력을 앞서고 있다. 


    딥러닝의 등장으로 머신 러닝의 실용성은 강화되었고, 인공지능의 영역은 확장 되었다. 운전자 없는 자동차, 예방의학, 영화추천과 같은 딥러닝 기반의 기술들이 우리 일상에서 이미 사용되고 있거나 실용화를 앞두고 있다. 


    블로그 이미지

    오픈이지 제로킴

    시큐어코딩 교육/컨설팅 전문가 그룹

    IBM 개발자 기술 포럼에 게시된 블록체인의 전반적인 기술을 습득하고, 오픈소스 기반인 Hyperledger Fabric을 활용하여 블록체인 네트워크를 구성하고, 클라이언트를 개발하는 기술을 익힐수 있는 좋은 글이 있어서 링크를 만들었습니다.


    IBM의 클라우드 시스템인 Bluemix와 블록체인의 구현 방법을 이해할 수 있는 좋은 기술자료인것 같습니다.



    먼저 시작해 보는 블록체인 


    01. 블록체인 기본 : 공유원장에 대한 소개

    https://developer.ibm.com/kr/cloud/bluemix/2017/01/08/blockchain-basic-01-introduction-to-distributed-ledgers/


    02. Hyperledger Fabric

    https://developer.ibm.com/kr/cloud/bluemix/blockchain/2017/01/15/blockchain-basic-02-hyperledger-fabric-overview/


    03 – Hyperledger Fabric 개발 환경 구성

    https://developer.ibm.com/kr/cloud/bluemix/blockchain/2017/01/26/blockchain-basic-03-build_development_environment/


    04 – 개발 모드에서 스마트 컨트랙(체인코드) 개발

    https://developer.ibm.com/kr/cloud/bluemix/blockchain/2017/01/26/hyperledger_fabric_chaincode_develpement_by_devmode/


    05 – 운영 모드에서 스마트 컨트랙(체인코드) 개발

    https://developer.ibm.com/kr/cloud/bluemix/blockchain/2017/02/06/hyperledger_fabric_chaincode_develpement_by_prodmode/


    06 – Fabric의 설정파일들

    https://developer.ibm.com/kr/cloud/bluemix/blockchain/2017/02/12/hyperledger_fabric_configuration_files/


    07 – TLS 설정

    https://developer.ibm.com/kr/cloud/bluemix/2017/02/19/hyperledger_fabric_tls/


    08 – Consensus 적용하기

    https://developer.ibm.com/kr/cloud/bluemix/2017/02/26/hyperledger_fabric_consensus/

     

     

    IBM Blockchain Developer Center

    https://developer.ibm.com/blockchain/

    블로그 이미지

    오픈이지 제로킴

    시큐어코딩 교육/컨설팅 전문가 그룹

    FindBugs FindSecurityBugs를 이용한 정적분석


    FindBugs 설치 URL  http://findbugs.cs.umd.edu/eclipse


    FindSecurityBugs 다운로드 URL  

    http://h3xstream.github.io/find-sec-bugs/download.htm


     findsecbugs-plugin-1.5.0.jar




    FindBugs는 자바 바이트 코드(byte code)를 분석하여 버그 패턴을 발견하는 정적분석 공개소프트웨어이다(GNU LGPL 라이센스를 적용). 미국의 Maryland 대학에서 2006년에 개발하였으며 Java 프로그램에서 발생 가능한 100여개의 잠재적인 에러에 대해 4개등급( scariest, scary, troubling, concern)으로 구분하여 탐지하고, 그 결과를 XML 로 저장할 수 있도록 지원한다.

     

    Linux, Windows, MacOSX 운영체제를 지원하며, GUI기반의 단독 실행(Stand alone) 응용프로그램 방식과 Eclipse, NetBeans, IntelliJ IDEA, Gradle, Hudson and Jenkins와 같은 IDE(통합개발환경)의 플러그인(Plug-in) 방식을 지원한다. FindBugs 설치를 위해서는 512MB 이상의 메모리와 Java 2 Standard Edition, 1.5 버전 이상이 요구되며, 공식 웹사이트(http://findbugs.sourceforge. net)에서 다운로드 받을 수 있다.

     

    Bad practice, Correctness, Dodgy code, Experimental, Internationalization, Malicious code vulnerability, Multithreaded correctness, Performance, Security 등 9개 이상의 카테고리와 400개가 넘는 진단 규칙을 제공하며, 룰셋(ruleset)의 커스터마이징을 통해 각 기업의 소프트웨어를 진단하기위한 최적화를 수행할 수 있다.


      Find Bugs 3.0.1에서 제공하는 탐지유형


        번호

    탐지 유형

    사례   설명

     

    1

     

    Bad practice

     

    클래스 명명규칙, null 처리 실수  개발자의 나쁜 습관을 탐지

     

    2

     

    Correctness

     

    잘못된 상수, 무의미한 메소드 호출  문제의 소지가 있는 코드를 탐지

     

    3

     

    Dodgy code

     

    int 곱셈결과를 long으로 변환하는  부정확하거나 오류를 발생시킬  있는 코드를 탐지

     

    4

     

    Experimental

     

    메소드에서 생성된 stream이나 리소스가 해제하지 못한 코드를 탐지

     

    5

     

    Internationalization

     

    Default 인코딩을 지정하지 않은 경우  지역특성을 고려하지 않은 코드 탐지

     

    6

     

    Malicious  codevulnerability

     

    보안 코드에 취약한 가변적인 배열이나 콜렉션, Hashtable 탐지

     

           7

     

    Multithreaded  correctness

     

    멀티쓰레드에 안전하지 않은 객체 사용 등을 탐지

     

    8

     

    Performance

     

    미사용 필드, 비효율적 객체생성  성능에 영향을 주는 코드를 탐지

     

    9

     

    Security

     

    CSS, DB 패스워드 누락  보안에 취약한 코드를 탐지



     




    FindSecurityBugs는 자바 웹 어플리케이션에 대한 보안 감사를 지원하는 FindBugs 의 플러그인으로, Philippe Arteau에 의해 만들어졌다.


    Spring-MVC, Struts, Tapestry 등 다양한 SW 개발 프레임워크와 Eclipse, IntelliJ, Android Studio, NetBeans등 통합개발환경(IDE)도구, Jenkins와 SonarQube와 같은 CI(Continuous integration) 도구에서 활용가능하다.


    200개 이상의 시그니처를 활용하여 OWASP TOP 10과 CWE를 커버하는 78개의 버그패턴(Bug Pattern)을 탐지할 수 있으며, 공식 홈페이지(http://find-sec-bugs.github.io)를 통해 사용방법과 소프트웨어를 다운로드 받을 수 있다.




    FindSecurityBugs 탐지 유형


    번호

    탐지유형

    사례  설명

     

    1

     

    부적절한 입력 탐지

     

    Untrusted Servlet parameter, session Cookie, Query String 

     

    2

     

    SQL Injection 탐지

     

    Hibernate, JDO, JPA, Spring JDBC,LDAP Injection 

     

    3

     

    XSS

     

    JSP, Servlet, JavaScript(Android) XSS를 탐지

     

    4

     

    취약한 암호화 알고리즘

     

    SHA-1, MD2/MD4/MD5 또는 NullCipher  취약한 암호화 함수를 탐지

     

    5

     

    취약한 URL Redirection

     

    유효하지 않은 URL Redirection 취약점 탐지

     

    6

     

    기타

    보안 플래그가 없는 쿠키, Regex DOS 취약점, 신뢰할  없는 Context-type 또는 헤더


    블로그 이미지

    오픈이지 제로킴

    시큐어코딩 교육/컨설팅 전문가 그룹

    YES24 보안사고  보도:

    http://www.yonhapnews.co.kr/bulletin/2016/04/04/0200000000AKR20160404181900005.HTML



    인터파크 보안사고 보도

    http://www.itworld.co.kr/news/100473

    블로그 이미지

    오픈이지 제로킴

    시큐어코딩 교육/컨설팅 전문가 그룹

    files.zip

    진단보고서양식_v1.docx


    블로그 이미지

    오픈이지 제로킴

    시큐어코딩 교육/컨설팅 전문가 그룹

    티스토리 툴바