KR102026959B1 - 보안 시스템 및 그 동작 방법 - Google Patents

보안 시스템 및 그 동작 방법 Download PDF

Info

Publication number
KR102026959B1
KR102026959B1 KR1020190046028A KR20190046028A KR102026959B1 KR 102026959 B1 KR102026959 B1 KR 102026959B1 KR 1020190046028 A KR1020190046028 A KR 1020190046028A KR 20190046028 A KR20190046028 A KR 20190046028A KR 102026959 B1 KR102026959 B1 KR 102026959B1
Authority
KR
South Korea
Prior art keywords
security
application
library
validator
random number
Prior art date
Application number
KR1020190046028A
Other languages
English (en)
Inventor
박상현
Original Assignee
한화시스템(주)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한화시스템(주) filed Critical 한화시스템(주)
Priority to KR1020190046028A priority Critical patent/KR102026959B1/ko
Application granted granted Critical
Publication of KR102026959B1 publication Critical patent/KR102026959B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 보안 시스템 및 그 동작 방법에 관한 것으로, 보안 기능을 수행하는 보안 라이브러리, 어플리케이션을 저장하고 있는 메모리, 및 상기 보안 라이브러리 및 상기 어플리케이션을 실행시키는 프로세서를 포함하고, 상기 어플리케이션이 실행될 때 상기 보안 기능을 호출하고, 상기 보안 라이브러리가 호출된 보안 기능을 수행하여 상기 어플리케이션의 보안 취약 여부에 따라 대응처리한다.

Description

보안 시스템 및 그 동작 방법{SECURITY SYSTEM AND OPERATION METHOD THEREOF}
본 발명은 보안 시스템 및 그 동작 방법에 관한 것이다.
소프트웨어(SW) 개발 보안은 소프트웨어 개발 과정에서 개발자의 실수 및 논리적 오류 등으로 인해 발행될 수 있는 보안 취약점 및 보안 약점들을 최소화하여 사이버 보안위협에 대응할 수 있는 안전한 소프트웨어를 개발하기 위한 일련의 보안활동을 의미한다. 이러한 소프트웨어 개발 보안의 중요성이 증가하면서, 소프트웨어 개발 단계에서 소프트웨어 보안 약점을 진단하여 제거할 수 있도록 C 보안 코딩 가이드(이하, 보안 코딩 가이드)를 제공하고 있다. 보안 코딩 가이드는 소프트웨어에 내포될 수 있는 공통 보안 약점들의 목록(Common Weakness Enumeration, CWE)(공통 취약 목록)과 각 보안 약점에 대응하는 C 기반 보안 코딩 기법을 제시한다.
따라서, 전장정보체계 소프트웨어 개발 단계에서 보안 코딩 가이드에서 제시하는 보안 약점들을 점검하는데 컴파일러 및 코드 분석기를 통해 점검 가능한 보안 취약점의 범위에 한계가 존재한다.
본 발명은 컴파일러와 코드 분석기가 점검할 수 없는 보안 취약점을 코드 수준에서 대응할 수 있는 C++ 언어를 위한 보안 코딩 라이브러리를 구현하여 전장정보체계 소프트웨어의 보안 취약점을 검출하여 예방하는 보안 시스템 및 그 동작 방법을 제공하고자 한다.
상기한 과제를 해결하기 위하여, 본 발명의 일 실시 예에 따른 보안 시스템은 보안 기능을 수행하는 보안 라이브러리, 어플리케이션을 저장하고 있는 메모리, 및 상기 보안 라이브러리 및 상기 어플리케이션을 실행시키는 프로세서를 포함하고, 상기 어플리케이션이 실행될 때 상기 보안 기능을 호출하고, 상기 보안 라이브러리가 호출된 보안 기능을 수행하여 상기 어플리케이션의 보안 취약 여부에 따라 대응처리하는 것을 특징으로 한다.
상기 보안 라이브러리는 상기 어플리케이션 개발 시 컴파일러 및 코드 분석기를 이용하여 검출이 가능한 보안 약점을 식별하고, 공통 취약 목록 중 식별된 보안 약점을 제외한 나머지 보안 약점 항목에 대하여 구현되는 것을 특징으로 한다.
상기 보안 라이브러리는 SQL 유효성 검사기, URL 유효성 검사기, 난수 생성기 및 신뢰 형식 변환기를 포함하는 것을 특징으로 한다.
상기 어플리케이션은 SQL 구문이 입력되면, 상기 SQL 유효성 검사기를 호출하고, 상기 SQL 유효성 검사기는 상기 SQL 구문에 대해 유효성 검사를 실시하여 SQL 삽입 공격 여부를 판단하고, SQL 삽입 공격으로 판단되면 예외 처리하는 것을 특징으로 한다.
상기 어플리케이션은 URL 입력이 있는 경우 상기 URL 유효성 검사기를 호출하고, 상기 URL 유효성 검사기는 입력된 URL에 대하여 유효성 검사를 수행한 후 검사결과를 반환하는 것을 특징으로 한다.
상기 어플리케이션은 난수 사용 시 상기 난수 생성기를 호출하고, 상기 난수 생성기는 난수를 생성하여 반환하는 것을 특징으로 한다.
상기 어플리케이션은 실행될 때 상기 신뢰 형식 변환기를 호출하고, 상기 신뢰 형식 변환기는 상기 어플리케이션 실행 시 정수의 형식 변환 오류가 검출되면 예외 처리하는 것을 특징으로 한다.
한편, 본 발명의 일 실시 예에 따른 보안 시스템의 동작 방법은 어플리케이션이 실행 시 보안 라이브러리의 보안 기능을 호출하는 단계, 상기 보안 라이브러리가 상기 보안 기능을 실행하여 상기 어플리케이션의 보안 취약 여부를 판단하는 단계, 및 상기 보안 라이브러리가 상기 보안 취약 여부에 따른 대응 처리를 수행하는 단계를 포함한다.
상기 보안 기능은 SQL 유효성 검사기, URL 유효성 검사기, 난수 생성기 및 신뢰 형식 변환기 중 어느 하나인 것을 특징으로 한다.
본 발명에 따르면, C++ 언어를 위한 보안 코딩 라이브러리를 구현하여 전장정보체계 소프트웨어의 보안 취약점을 점검하므로, 컴파일러와 코드 분석기를 통해 점검하기 어려운 보안 약점에 대해 코드 수준에서의 예방을 가능하게 한다.
도 1은 본 발명의 일 실시 예에 따른 보안 시스템의 구성도.
도 2는 본 발명의 일 실시 예에 따른 보안 라이브러리 구조를 도시한 도면.
도 3은 도 2에 도시된 보안 라이브러리의 구성도.
도 4는 본 발명의 일 실시 예에 따른 보안 시스템의 동작 방법을 도시한 흐름도.
본 명세서에 기재된 "포함하다", "구성하다", "가지다" 등의 용어는 특별히 반대되는 기재가 없는 한 해당 구성요소가 내재될 수 있음을 의미하는 것이므로 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
또한, 본 명세서에 기재된 "…부", "…기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 또한, "일", "하나" 및 "그" 등의 관사는 본 발명을 기술하는 문맥에 있어서 본 명세서에 달리 지시되거나 문맥에 의해 분명하게 반박되지 않는 한, 단수 및 복수 모두를 포함하는 의미로 사용될 수 있다.
이하에서는 첨부된 도면들을 참조하여 본 발명의 실시예를 상세하게 설명한다.
본 발명은 전장정보체계(battlefield information system) 소프트웨어 개발을 위한 보안 코딩룰 셋(secure coding rule set)에 기반하여 C++ 언어를 위한 보안 코딩 라이브러리(Secure Coding Library, SCL)을 개발하여 컴파일러(compiler)와 코드 분석기(code analyzer)를 통해 자동으로 검출이 가능한 코드의 보안 약점을 식별하고, 도구를 이용한 자동 검출이 어려운 보안 약점 항목에 대하여 보안 코딩 라이브러리 구현을 통해 개별 프로그래머의 보안 코딩에 대한 이해나 능력에 의존하지 않고도 구현 단계에서 대응할 수 있는 방안을 제안한다.
도 1은 본 발명의 일 실시 예에 따른 보안 시스템의 구성도를 도시한다.
도 1을 참조하면, 보안 시스템(100)은 버스(B)를 통해 연결되는 보안 라이브러리(110), 메모리(120), 네트워크 인터페이스(130), 사용자 입력장치(140), 출력장치(150) 및 프로세서(160)를 포함할 수 있다.
보안 라이브러리(110)는 보안 기능을 수행한다. 보안 라이브러리(110)는 어플리케이션(application)(소프트웨어 또는 프로그램) 개발 시 컴파일러 및 코드 분석기를 이용하여 검출이 가능한 보안 약점을 식별하고, 공통 취약 목록(Common Weakness Enumeration, CWE) 중 식별된 보안 약점을 제외한 나머지 보안 약점 항목에 대하여 구현된다.
메모리(120)는 어플리케이션을 저장하고 있다. 여기서, 어플리케이션은 보안 라이브러리를 사용할 수 있으며, 전장정보체계 소프트웨어 등일 수 있다. 메모리(120)는 프로세서(160)의 동작을 위한 프로그램을 저장할 수 있고 입/출력되는 데이터들을 저장할 수 있다.
메모리(120)는 플래시 메모리(flash memory), 하드디스크(hard disk), SD 카드(Secure Digital Card), 램(Random Access Memory, RAM), SRAM(Static Random Access Memory), 롬(Read Only Memory, ROM), PROM(Programmable Read Only Memory), EEPROM(Electrically Erasable and Programmable ROM), EPROM(Erasable and Programmable ROM), 레지스터, 착탈형 디스크 및 웹 스토리지(web storage) 등의 저장매체 중 적어도 하나 이상의 저장매체(기록매체)로 구현될 수 있다.
네트워크 인터페이스(130)는 보안 시스템(100)이 통신망에 연결될 수 있게 한다. 여기서, 통신망은 유/무선 통신망, 이동통신망 및/또는 근거리 통신망 등으로 구현될 수 있다.
사용자 입력장치(140)는 사용자의 조작에 따른 데이터를 발생시키는 것으로, 키보드, 키패드(key pad), 터치 패드(정압/정전) 및/또는 터치스크린 등으로 구현될 수 있다.
출력장치(150)는 프로세서(160)의 동작에 따른 진행상태 및 결과를 시각 정보, 청각 정보 및/또는 촉각 정보 등으로 출력할 수 있다.
프로세서(160)는 보안 라이브러리(110)의 보안 기능 및 메모리(120)에 저장된 어플리케이션의 실행시킬 수 있다. 이러한 프로세서(160)는 ASIC(Application Specific Integrated Circuit), DSP(Digital Signal Processor), PLD(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), CPU(Central Processing unit), 마이크로 컨트롤러(microcontrollers) 및 마이크로 프로세서(microprocessors) 중 적어도 하나 이상으로 구현될 수 있다.
도 2는 본 발명의 일 실시 예에 따른 보안 라이브러리 구조를 도시한 도면이고, 도 3은 도 2에 도시된 보안 라이브러리의 구성도를 도시한다.
보안 라이브러리(110)는 컴파일러와 코드 분석기가 점검할 수 없는 보안 취약점을 코드 수준에서 대응할 수 있는 C++ 언어를 위한 보안 코딩 라이브러리 API(Application Programming Interface)이다. 이 보안 코딩 라이브러리를 적용하는 경우, 다음과 같은 효과를 기대할 수 있다.
1) 보안 코딩 라이브러리는 잘 알려진 보안 취약점(예:SQL 삽입)에 대응하는 ad-hoc 코드를 방지하며, 보안 약점 대응 모범 사례(Best practices)를 내재화한다.
2) 보안 코드의 표준화를 유도하여 유지보수성을 향상시킨다.
3) 수동 코드 리뷰의 생산성을 높인다(수동 코드 리뷰: 자동 정적 분석, 동적 분석, 퍼즈(Fuzz) 테스팅과 함께 구현 단계에서 수행되는 SDL 활동). 여기서, SDL은 보안 개발 라이프사이클(Security Development Lifecycle)을 의미한다.
보안 라이브러리 구조는 도 2에 도시된 바와 같이 운영체제(OS)(10), 프레임워크(Framework)(20), 런타임(Runtime)(30), 보안 라이브러리(110) 및 어플리케이션(40)으로 구성된다.
보안 라이브러리(110)는 .NET 프레임워크(20)와 네이티브(Native) C++ 런타임(30)을 기반으로 구현된다. 보안 라이브러리(110)을 사용하는 어플리케이션은 빌드 단계에서 .NET 프레임워크(20)에 대한 의존성을 갖지 않는다.
.NET 프레임워크(20)는 표준 C++ 라이브러리에는 부재하는 역할 기반 보안, 다양한 암호화 서비스를 비롯한 다양한 보안 기능을 갖추고 있다. 보안 라이브러리(110)는 .NET 프레임워크(20)의 보안 기능을 활용하기 위해 네이티브 C++ 언어와 함께 C++/CLI(C++ modified for Common Language Infrastructure)를 이용하여 구현되며, 어플리케이션(40)은 네이티브 C++만을 이용하여 보안 라이브러리(110)를 이용할 수 있다.
보안 라이브러리(110)는 도 3에 도시된 바와 같이 SQL(Structured Query Language) 유효성 검사기(111), URL(Uniform Resource Locator) 유효성 검사기(112), 난수 생성기(113), 및 신뢰성 있는 형식 변환기(이하, 신뢰 형식 변환기)(114)를 포함할 수 있다.
SQL 유효성 검사기(SQLValidator)(111)는 의도하지 않은 SQL 구문의 실행을 방지함으로써 SQL 삽입 공격에 대응한다. SQL 유효성 검사기(111)는 2개의 매개 변수(SQL문, 권한)를 입력 받는다. SQL 유효성 검사기(111)는 입력받은 SQL 구문을 정규 표현식을 이용하여 SQL문, 브레이크(;) 및 텍스트 블록 등의 3가지 패턴을 분해한다. 분해된 패턴은 SQL문과 함께 입력받은 권한과 대조되며, SQL 구문에 코드 작성자가 의도한 문장 이외의 문장이 실행되려 하는 경우 예외 처리한다. SQL 유효성 검사기(11)는 도 4에 도시된 바와 같이 사용될 수 있다.
전장정보체계 소프트웨어 구현시, 체계의 DBMS API가 Prepared Statement를 제공하지 않는 경우, SQL 유효성 검사기(111)는 보안 코딩 가이드의 SQL 삽입 공격 보안 약점에 대한 대응 코드로 사용될 수 있다.
URL 유효성 검사기(URLValidator)(112)는 크로스 사이트 스크립팅(Cross Site Scripting, XSS) 즉, 스크립트 코드 삽입 공격을 방지하기 위한 것이다. URL 유효성 검사기(112)는 RFC3986 또는 RFC3987의 사양에 따라 URL의 유효성을 검사하는 .NET 프레임워크의 System::Uri::IsWellFormedUriString() 메서드를 래핑(Wrapping)하여 구현되었다. URL 유효성 검사기(112)는 도 5에 도시된 바와 같이 사용될 수 있다. URL 유효성 검사기(112)는 입력 URL에 대하여 유효성 검사를 수행한 후 그 결과를 참 값(true) 또는 거짓 값(false)으로 반환한다. URL 유효성 검사기(112)는 체계 외부로부터의 URL 입력에 대해 시큐어 코딩 가이드의 크로스사이트스크립팅 보안 약점에 대한 대응 코드로 사용할 수 있다.
난수 생성기(113)는 RFC 4086(Randomness Requirements for Security)에서 권고하는 Microsoft CryptoAPI에서 제공하는 CryptGenRandom()의 .NET 버전 구현체인 System::Security::Cryptography::RNGCryptoServiceProvider를 래핑하여 제공한다. 난수 생성기(113)에 의해 생성된 난수는 [표 1]의 다이하드(diehard) 시험 결과에 나타나 바와 같이 diehard_squeeze와 dieharder의 오류로 인해 시험이 불가했던 두 가지 테스트 케이스를 제외하고 모든 테스트 케이스를 통과하였다.
Figure 112019040440129-pat00001
신뢰 형식 변환기(114)는 보안 코딩 가이드에서 경고하고 있는 Signed to Unsigned Conversion Error, Unsigned to Signed Conversion Error 및 Type Mismatch: Integer to Character 등의 정수 형식 변환 관련 보안 약점의 대응 코드로써 제공된다. 신뢰 형식 변환기(114)는 C++ Template을 이용하여 모든 정수 형식에 대응할 수 있도록 구현되었으며, 프로그램 실행시에 형식 변환 오류 검출 시 예외 처리한다. 신뢰 형식 변환기(114)는 도 6과 같이 사용될 수 있다.
이하에서는 보안 라이브러리를 이용한 보안 취약점 대응 처리 과정을 설명한다.
어플리케이션(40)은 SQL 구문이 입력되면, 보안 라이브러리(110)의 SQL 유효성 검사기(111)를 호출한다. SQL 유효성 검사기(111)는 어플리케이션(40)의 호출에 따라 SQL 구문에 대해 유효성 검사를 실시하여 SQL 삽입 공격 여부를 판단한다. SQL 유효성 검사기(111)는 SQL 삽입 공격으로 판단되면 예외 처리한다. 어플리케이션(40)은 SQL 유효성 검사기(111)의 예외 처리에 따라 SQL 구문의 실행을 차단한다.
어플리케이션(40)은 URL 입력이 있는 경우 보안 라이브러리(110)의 URL 유효성 검사기(112)를 호출한다. URL 유효성 검사기(112)는 입력된 URL에 대하여 유효성 검사를 수행한 후 검사결과를 반환한다. URL 유효성 검사기(112)는 입력된 URL이 유효하면 true를 반환하고, 입력된 URL이 유효하지 않으면 false를 반환한다. 어플리케이션(40)은 URL 유효성 검사기(112)로부터 반환된 결과에 따라 URL 실행을 차단한다.
어플리케이션(40)은 난수 사용이 필요한 경우 보안 라이브러리(110)의 난수 생성기(113)를 호출한다. 난수 생성기(113)는 난수를 생성하여 반환한다. 어플리케이션(40)은 난수 생성기(113)에 의해 생성된 난수를 사용하므로, 난수 사용에 따른 보안 취약점에 대응할 수 있다.
어플리케이션(40)은 실행될 때 보안 라이브러리(110)의 신뢰 형식 변환기(114)를 호출할 수 있다. 신뢰 형식 변환기(114)는 어플리케이션(40) 실행 시 정수의 형식 변환 오류가 검출되면 예외 처리한다. 어플리케이션(40)은 신뢰 형식 변환기(114)의 예외 처리에 따라 실행을 중단한다.
도 7은 본 발명의 일 실시 예에 따른 보안 시스템의 동작 방법을 도시한 흐름도이다.
어플리케이션(40)은 프로세서(160)의 지시에 따라 실행된다(S110).
어플리케이션(40)는 보안 라이브러리(110)의 보안 기능을 호출한다(S120). 여기서, 보안 기능은 SQL 유효성 검사기(111), URL 유효성 검사기(112), 난수 생성기(113) 및 신뢰 형식 변환기(114) 중 어느 하나 이상일 수 있다.
예컨대, 어플리케이션(40)은 SQL 구문이 입력되면, 보안 라이브러리(110)의 SQL 유효성 검사기(111)를 호출한다. 또는, 어플리케이션(40)은 URL 입력이 있는 경우 보안 라이브러리(110)의 URL 유효성 검사기(112)를 호출한다. 또는, 어플리케이션(40)은 난수 사용이 필요한 경우 보안 라이브러리(110)의 난수 생성기(113)를 호출한다. 또는, 어플리케이션(40)은 실행될 때 보안 라이브러리(110)의 신뢰 형식 변환기(114)를 호출할 수 있다.
보안 라이브러리(110)는 어플리케이션(40)의 호출에 따라 호출된 보안 기능을 실행한다(S130). 이어서, 보안 라이브러리(110)는 실행된 보안 기능을 통해 보안 취약 여부에 따른 대응 처리를 수행한다(S140).
보다 구체적으로, SQL 유효성 검사기(111)는 어플리케이션(40)의 호출에 따라 SQL 구문에 대해 유효성 검사를 실시하여 SQL 삽입 공격 여부를 판단한다. SQL 유효성 검사기(111)는 SQL 삽입 공격으로 판단되면 예외 처리한다.
URL 유효성 검사기(112)는 입력된 URL에 대하여 유효성 검사를 수행한 후 검사결과를 반환한다. URL 유효성 검사기(112)는 입력된 URL이 유효하면 true를 반환하고, 입력된 URL이 유효하지 않으면 false를 반환한다.
난수 생성기(113)는 난수를 생성하여 반환한다. 신뢰 형식 변환기(114)는 어플리케이션(40) 실행 시 정수의 형식 변환 오류가 검출되면 예외 처리한다.
보안 라이브러리(110)는 대응 처리 결과를 어플리케이션(40)으로 전송한다(S150). 어플리케이션(40)은 대응 처리 결과에 따라 어플리케이션(40)의 실행 차단을 결정한다(S160)
예를 들어, 어플리케이션(40)은 SQL 유효성 검사기(111)의 예외 처리에 따라 SQL 구문의 실행을 차단한다. 또한, 어플리케이션(40)은 URL 유효성 검사기(112)로부터 반환된 결과에 따라 URL 실행을 차단할 수 있다. 어플리케이션(40)은 난수 생성기(113)에 의해 생성된 난수를 사용하므로, 난수 사용에 따른 보안 취약점에 대응할 수 있다. 어플리케이션(40)은 신뢰 형식 변환기(114)의 예외 처리에 따라 실행을 중단할 수 있다.
이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 발명이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성 요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다. 또한, 그 모든 구성요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있지만, 각 구성 요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수 개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다. 그 컴퓨터 프로그램을 구성하는 코드들 및 코드 세그먼트들은 본 발명의 기술 분야의 당업자에 의해 용이하게 추론될 수 있을 것이다. 이러한 컴퓨터 프로그램은 컴퓨터가 읽을 수 있는 저장매체(Computer Readable Media)에 저장되어 컴퓨터에 의하여 읽혀지고 실행됨으로써, 본 발명의 실시예를 구현할 수 있다.
110: 보안 라이브러리
120: 메모리
130: 네트워크 인터페이스
140: 사용자 입력장치
150: 출력장치
160: 프로세서

Claims (9)

  1. 보안 기능을 수행하는 보안 라이브러리;
    입력된 데이터의 보안 약점 항목을 추출하여,
    추출된 값이 SQL 구문인지, URL 인지, 난수 사용이 필요한지 여부를 판단하여, SQL 구문이거나 URL 인 경우에는 해당 유형에 맞는 유효성 검사기를 호출하여 상기 검사기를 통해 유효성을 검사하고 검사 결과에 따라 예외처리하거나 검사결과를 반환하도록 하고, 난수 사용이 필요한 경우 난수 생성기를 호출하여 상기 생성기를 통해 난수를 생성하여 반환하도록 하는 것을 특징으로 하는 어플리케이션을 저장하고 있는 메모리; 및
    상기 보안 라이브러리 및 상기 어플리케이션을 실행시키는 프로세서;
    를 포함하고,
    상기 어플리케이션은,
    실행될 때 신뢰 형식 변환기를 호출하여 상기 변환기를 통해 정수의 형식 변환 오류가 검출되면 예외 처리하도록 하는 것을 특징으로 하고,
    또한 실행될 때 상기 보안 기능을 호출하여, 상기 보안 라이브러리가 호출된 보안 기능을 수행하여 상기 어플리케이션의 보안 취약 여부에 따라 대응처리하는 것을 특징으로 하는 보안 시스템.
  2. 제1항에 있어서,
    상기 보안 라이브러리는 상기 어플리케이션 개발 시 컴파일러 및 코드 분석기를 이용하여 검출이 가능한 보안 약점을 식별하고, 공통 취약 목록 중 식별된 보안 약점을 제외한 나머지 보안 약점 항목에 대하여 구현되는 것을 특징으로 하는 보안 시스템.
  3. 제1항에 있어서,
    상기 보안 라이브러리는 SQL 유효성 검사기, URL 유효성 검사기, 난수 생성기 및 신뢰 형식 변환기를 포함하는 것을 특징으로 하는 보안 시스템.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
KR1020190046028A 2019-04-19 2019-04-19 보안 시스템 및 그 동작 방법 KR102026959B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190046028A KR102026959B1 (ko) 2019-04-19 2019-04-19 보안 시스템 및 그 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190046028A KR102026959B1 (ko) 2019-04-19 2019-04-19 보안 시스템 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR102026959B1 true KR102026959B1 (ko) 2019-09-30

Family

ID=68098582

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190046028A KR102026959B1 (ko) 2019-04-19 2019-04-19 보안 시스템 및 그 동작 방법

Country Status (1)

Country Link
KR (1) KR102026959B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004038966A (ja) * 2002-06-28 2004-02-05 Microsoft Corp セキュアな変数データ保護を提供するセキュアで不明瞭なタイプライブラリ
KR20040080845A (ko) * 2003-03-14 2004-09-20 주식회사 안철수연구소 코드 삽입 기법을 이용한 악성 스크립트 감지 방법
JP2007052625A (ja) * 2005-08-18 2007-03-01 Hitachi Software Eng Co Ltd ソースコード脆弱性検査装置
KR101143998B1 (ko) * 2011-09-20 2012-05-09 주식회사 안철수연구소 데이터베이스 보안 장치 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004038966A (ja) * 2002-06-28 2004-02-05 Microsoft Corp セキュアな変数データ保護を提供するセキュアで不明瞭なタイプライブラリ
KR20040080845A (ko) * 2003-03-14 2004-09-20 주식회사 안철수연구소 코드 삽입 기법을 이용한 악성 스크립트 감지 방법
JP2007052625A (ja) * 2005-08-18 2007-03-01 Hitachi Software Eng Co Ltd ソースコード脆弱性検査装置
KR101143998B1 (ko) * 2011-09-20 2012-05-09 주식회사 안철수연구소 데이터베이스 보안 장치 및 방법

Similar Documents

Publication Publication Date Title
Xu et al. A novel machine learning‐based analysis model for smart contract vulnerability
Livshits Dynamic taint tracking in managed runtimes
US8850405B2 (en) Generating sound and minimal security reports based on static analysis of a program
Bagheri et al. Detection of design flaws in the android permission protocol through bounded verification
Ashraf et al. GasFuzzer: Fuzzing ethereum smart contract binaries to expose gas-oriented exception security vulnerabilities
Hassanshahi et al. Web-to-application injection attacks on android: Characterization and detection
Alkhalaf et al. Verifying client-side input validation functions using string analysis
CN107145376A (zh) 一种主动防御方法和装置
Mitropoulos et al. Fatal injection: A survey of modern code injection attack countermeasures
Wang et al. Security enhancement technologies for smart contracts in the blockchain: A survey
Arzt et al. The soot-based toolchain for analyzing android apps
Praitheeshan et al. Security evaluation of smart contract-based on-chain ethereum wallets
US20170185784A1 (en) Point-wise protection of application using runtime agent
Gupta et al. A client‐server JavaScript code rewriting‐based framework to detect the XSS worms from online social network
Kashyap et al. Security signature inference for javascript-based browser addons
Luo et al. Tchecker: Precise static inter-procedural analysis for detecting taint-style vulnerabilities in php applications
Rahat et al. Cerberus: Query-driven scalable vulnerability detection in oauth service provider implementations
Zhang et al. How well does llm generate security tests?
Hamadouche et al. Virus in a smart card: Myth or reality?
Fang et al. IVDroid: Static detection for input validation vulnerability in Android inter-component communication
Laranjeiro et al. A learning-based approach to secure web services from SQL/XPath Injection attacks
Skrupsky et al. Waves: Automatic synthesis of client-side validation code for web applications
Tran et al. Security issues in android application development and plug-in for android studio to support secure programming
KR102026959B1 (ko) 보안 시스템 및 그 동작 방법
Xiong et al. Static taint analysis method for intent injection vulnerability in android applications

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant