Skip to content
Menu
Knihy-blog
Knihy-blog
12월 30, 2021

보안 코드 검토:실용적인 접근 방식

이 기사는 다양한 코드 검토 기술과 실제 세계에서의 응용에 관한 것입니다.

:

보안 코드 검토 란 무엇이며 실제 시나리오에서이를 처리하는 방법

알아야 할 사항:

기본 보안 개념

보안 코드 검토:

보안 코드 검토는 소프트웨어 개발 프로세스의 이후 단계에서 잠재적인 취약점을 야기하여 궁극적으로 안전하지 않은 응용 프로그램으로 이어질 수 있는 안전하지 않은 코드를 식별하는 프로세스입니다. 이 취약점을 악용할 경우 취약점을 악용할 수 있습니다. 즉,개발자가 응용 프로그램을 코딩할 때 자체 코드 검토를 수행하거나 보안 분석가가 코드 검토를 수행하거나 둘 다 수행할 수 있습니다. 개발자는 자신의 아이디와 통합 할 수있는 자동화 된 도구를 사용할 수 있습니다(이클립스,밀리 초 대 등…)동시에 코딩 및 코드 검토를 수행 할 수 있습니다. 보안 전문가는 개발자가 놓칠 수있는 보안 문제에 대한보다 본질적인 견해를 가지고 있기 때문에 보안 전문가의 도움을 받아 코드의 더 많은 결함을 식별 할 수 있습니다.

다른 연구 및 설문 조사에 따르면 공격의 약 75%는 안전하지 않은 코드가 포함 된 안전하지 않은 응용 프로그램으로 인해 발생합니다. 이 방법은 엄격하게 수행되어야 할 매우 중요한 부분이 됩니다. 개발자는 주로 응용 프로그램의 기능에 초점을 맞추고 보안 코딩 방식을 무시하는 경향이 있습니다. 그러나 요즘 그들은 해킹 및 서버 공격의 증가로 인해 코드 검토에 대해 더 많이 의식하게되었습니다.

그림– 1

코드 검토 보안 기술:

일반적으로 보안 코드 검토 프로세스를 두 가지 기술로 나눌 수 있습니다:

  1. 자동화 된 도구 기반/블랙 박스:이 접근 방식에서는 보안 코드 검토가 다른 오픈 소스/상용 도구를 사용하여 수행됩니다. 그들은 코딩하는 동안 대부분 개발자를 사용하지만,보안 분석가는 그들의 도움을 걸릴 수 있습니다. 이 도구는 코드 검토를 수행하는 동안 매우 유용합니다. 또한이 도구는 큰 코드베이스(수백만 줄)를 분석하는 데 유용합니다. 그들은 신속하게 개발자 또는 보안 분석가에 의해 분석 될 수있는 코드베이스에서 코드의 잠재적 인 안전하지 않은 조각을 식별 할 수 있습니다.
  2. 수동/흰색 상자:이 기술에서는 전체 코드에 대해 철저한 코드 검토가 수행되므로 매우 지루하고 귀찮은 프로세스가 될 수 있습니다. 그러나이 과정에서 비즈니스 논리 문제와 같은 자동화 된 도구를 사용하여 가능하지 않을 수있는 논리적 결함을 식별 할 수 있습니다. 자동화 된 도구는 대부분 주입 공격과 같은 기술적 결함을 찾을 수 있지만 권한 부여 문제와 같은 결함을 놓칠 수 있습니다. 이 과정에서 전체 코드베이스를 통해 한 줄씩 진행하는 대신 코드의 잠재적 문제에 집중할 수 있습니다. 이러한 잠재적 취약점은 높은 우선 순위를 부여 할 수 있습니다. 예를 들어,코드에서 복사 기능을 찾고 복사 기능을 수행하기 위해 다음과 같은 기능을 사용하고 있는지 확인하십시오. 버퍼의 오버플로 공격에 취약한 것으로 알려져 있습니다. 우리는 또한 사용자 정의 암호화가 응용 프로그램에서 사용되는 경우 확인 할 수 있습니다,그들은 단지 표준 알고리즘을 식별 할 수있는 자동화 된 도구를 놓칠 수있는.

    따라서 가장 좋은 방법은 데이터의 양과 중요도에 따라 둘 다 혼합 된 것입니다. 많은 복잡한 응용 프로그램이 개발되는 오늘날의 세계에서,우리는 위에서 언급 한 기술 중 하나를 무시할 수 없습니다.

보안 코드 검토의 이점:

웹 응용 프로그램에서 강력한 액세스 제어 메커니즘을 개발하는 동안 고려해야 할 몇 가지 요소가 있습니다:

  1. 이러한 취약점을 해결하기 위한 노력은 프로세스의 이후 단계보다 훨씬 적습니다. 코드가 완료되고 결함이 확인되지 않으면 응용 프로그램이 프로덕션으로 이동할 준비가 되면 문제를 찾는 데 매우 지루하고 시간이 많이 걸리는 프로세스입니다. 또한 마지막 순간 수정은 프로그램의 전체 기능에 영향을 미치고 제품 릴리스에 설정된 기한을 방해 할 수 있습니다. 누가 알 겠어,그것은 쉽게 크고 복잡한 코드를 할 수있는 또 다른 보안 결함을 만들 수 있습니다.
  2. 비용 편익:비용은 요구된 노력에 직접 비례합니다. 개발 비용뿐만 아니라 프로덕션 환경에서 식별되는 취약성에도 더 많은 비용이 소요될 수 있습니다. 다시 말하지만,공격과 관련된 비용이 훨씬 더 가파를 수 있기 때문에 그만한 가치가 있습니다.
  3. 규정 준수:일부 규정 준수는 제품을 출시하기 전에 보안 코드 검토를 수행해야 합니다. 따라서 완벽한 조직 인증의 더 나은 기회가 있습니다.
  4. 평판:보안 코드 검토는 이전 단계의 대부분의 보안 결함을 제거하여 블랙 박스 평가를 수행하는 것보다 더 안전합니다. 그래서 타협되는 제품의 적은 기회가있다,평판 손상의 따라서 적은 기회.

접근법:

이러한 표준 프로세스 및 내 자신의 접근 방식의 혼합을 기반으로 합니다. 그것은 사람마다 다를 수 있습니다.

표준 프로세스:

그림-2

범위 정의:먼저 코드 검토의 범위와 그에 관련된 노력에 대한 대략적인 견적을 이해하고 제시해야 합니다. 또한 예산 제약이 정의 될 수 있습니다. 어떤 유형의 코드 검토를 수행 할 수 있습니까? 블랙 박스 또는 화이트 박스? 응용 프로그램의 비즈니스 논리를 이해하려고 합니다. 하나는 가능한 한 그들을 검토하려고 할 수 있습니다,그렇지 않으면 그들 모두. 그런 다음 도구를 사용하여 얼마나 많은 도구를 감지 할 수 있으며 수동 검토에 가장 적합한 도구를 추론 할 수 있습니다.

취약점을 분류:우선 순위는 무엇입니까,당신이 우선 순위로 취할 것입니다 취약점의 유형을 의미? 예를 들어,비즈니스 응용 프로그램에서는 주로 응용 프로그램의 비즈니스 논리에 집중하고 기술 논리는 도구로 쉽게 감지되므로 응용 프로그램에 대해 자세히 알아볼 수 있습니다. 우선 순위를 정하십시오.

당신이 볼 수있는 몇 가지 범주는 다음과 같습니다:

  • 인증
  • 인증
  • 주입 결함
  • 부적절한 오류 처리/예외 결함
  • 암호화(암호화)
  • 감사 및 로깅
  • 세션 관련 결함(세션 관리)
  • 안전하지 않은 구성

권장 사항:보안 분석가로,그것은 우리의 의무 도구에 의해 생성 된 잘못된 반응을 필터링하고 실제 결함이 있는지 확인하기 위해 그들을 확인합니다. 적절한 코드 검토를 수행한 후에는 취약점 범주 및 취약점 완화를 코팅하는 포괄적인 보고서에서 발견된 취약점을 문서화해야 합니다. 한 단계 앞서 가서 샘플 보안 코드를 제안 할 수 있습니다. 개인적으로 코드 스 니펫을 보고서,바람직하게는 엑셀 파일에 포함시킨 다음 첨부합니다.

이런 식으로 나는 개인적으로 그것에 대해 간다. 아래의 요점은 코드 검토를 수행 할 때까지의 내 경험을 기반으로합니다. 나는 아직도 배울 것이 많고 아래의 요점은 모든 조건에서 사실 일 수도 있고 그렇지 않을 수도 있습니다:

항상 수동 검토 수행:자동화된 코드 검토는 합리적,온스 랩 및 파라소프톤 코드 베이스와 같은 검색 도구를 실행한 후 결과를 수동으로 감사하는 프로세스입니다. 스캐너는 인식에 따라 취약점으로 전체 코드에 플래그를 지정합니다. 지금 진짜 문제점과 가양성사이에 분화하는 감사원의 일 이다. 여기 진짜 고통이 시작되는 곳이 있습니다. 당신은 각각의 모든 언어에 대한 명령을 가지고 있지 않습니다. 그래서 언어 특정 자원의 도움을 복용이 필요합니다. 이제 거의 모든 주요 언어에 익숙해졌습니다(.특정 취약점. 블랙 박스 평가를 수행하면 실제 문제가 어디에 있는지 결코 알 수 없습니다.

먼저 개발자와 대화:코드 검토 프로세스에 개발자를 참여시킬수록 분석이 더욱 효과적일 것입니다. 당신은 당신이 무엇을하고 있는지 코드의 올바른 이해를 기반으로 자신감을 얻을. 다른 한편으로,개발자는 또한 행복 하 게 당신이 그들을 복용 하는 대신 뭔가 취약 한 직선을 선언 하는 자신감에.

프로그램의 흐름을 이해하기 편리한 노트북과 펜을 가지고있다. 오염의 원인을 이해하고 코드에 반영 않는 경우 실제 취약점을 잡을 필요가있다. 그냥 오염 프로그램을 입력 하 고 프로그램의 다른 부분에 반영 하는 것을 보고 항상 의미 하지는 않습니다 그것은 예를 들어 크로스 사이트 스크립팅에 취약. 여기서 다시 개발자와 이야기하면 중앙 집중식 입력 필터링/유효성 검사 메커니즘을 구현할 수 있으므로 도움이됩니다. 그래서 그냥 어떤 결론에 점프 하지 않습니다.

고급 텍스트 편집기 사용:텍스트 편집기는 전체 코드베이스에서 용어를 검색 할 수 있어야합니다. 이러한 텍스트 편집기 중 하나는 메모장++입니다. 이 용어를 검색하고 특정 용어가 사용되는 모든 장소 위치를 볼 수 있도록 그들을 강조한다. 그것은 조각을 결합하고 완전한 그림을 보는 데 도움이됩니다.

실제 취약점을 찾기 위해 생각을 두 번 이상 적용해야하므로 코드 검토를 수행 할 충분한 시간을 가지십시오. 이렇게 항상 충분하게 계획사업을 완료하기안에 충분한 시간 너의 고객에게 물으십시요.

인터넷에 연결되어 있으면 코드 검토 시 항상 도움이 됩니다. 특정 용어,함수 또는 메서드는 항상 전에 보지 못했을 수도 있으므로 귀찮게합니다. 구글은 그들을 이해하는 데 많은 도움이됩니다.

응용 프로그램의 컨텍스트에서 취약점 찾기:응용 프로그램의 컨텍스트에서 실제 및 적용 가능한 취약점을 선택해야할 뿐만 아니라 문제의 수가 줄어들면서 보고서에 대책을 제안해야 합니다. 즉,개발자가 행복하고 자신감을 만든다. 스캐너는 모든 문제를 높음,중간 또는 낮음으로 플래그 지정할 수 있습니다. 응용 프로그램 컨텍스트에 따라 적절한 순위를 부여하는 것은 귀하의 책임입니다.

누구나 자신의 프로그램을 좋아한다:프로그램은 개발자의 아기와 같다. 항상 프로그램의 약점을 정확 하 게 하지 마십시오,또한 프로그램에 사용 되는 어떤 강력한 메커니즘을 찾을 경우 그들을 주셔서 감사 합니다. 그런 식으로,당신은 그들을 친절하게 만들 수 있으며 그들은 항상 코드를 검토하는 데 사용할 것입니다. 그래서 둘 다 행복합니다.

그들을 훈련:마지막으로,현실 세계의 취약점에 대한 개발자를 훈련. 그들에게 훈련을주고,그들을 참여시키고,생산 전에 코드를 검토하도록 격려하십시오. 그것이 노력과 돈을 저축하는 까 라고 그들에게 말하십시요. 이 플러그인에 대 한 지원 하는 검색 도구가 있는 경우,그들은 적절 한 개발 및 손 검토에 의해 손을 할 수 있도록 그들의 컴퓨터에 설치.

샘플 그림:

이 예제에서는 다음과 같이 설명합니다.= “”;

문자열 암호= “”;

사용자 이름=에스.이 매개 변수를 사용하는 방법은 다음과 같습니다.매개 변수(암호);

……………..

………..……

문자열 쿼리=”선택*사용자 시스템 데이터에서 사용자 이름= ‘”

+ 사용자 이름+”‘및 암호='”+암호+ “‘”;

적능력.추가 요소(새 문자열 요소(쿼리)));

사용자로부터의 입력은 가져 오기 매개 변수를 통해 요청되고’사용자 이름’및’암호’변수에 할당됩니다. 또한 동적 쿼리에도 포함됩니다. 악의적인 사용자는 이 쿼리를 변조하여 자신의 임의 코드를 실행할 수 있습니다. 따라서 코드베이스의 모든 진입 점을 찾으려고하면(이 경우 매개 변수 가져 오기)주입 결함을 감지 할 수 있습니다. 예를 들면 다음과 같습니다.

그물에: https://www.owasp.org/index.php/Category:OWASP_Code_Review_Project

https://www.owasp.org/images/2/2e/OWASP_Code_Review_Guide-V1_1.pdf

답글 남기기 응답 취소

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최신 글

  • 시드니 라이스 순자산 2018:이 풋볼 축구 선수의 가치는 무엇입니까?
  • 최고의 딸기 드레싱
  • 회담
  • 49 당신이 더러운 생각을 생각하게 만들 것입니다 스테파니 스조 스탁의 뜨거운 사진
  • 서프 랜드의 레이 몰튼에서 죽은 태클 87
  • 스타우로스포린은 카스파제 의존성 및 카스파제 독립성 기전을 통해 아폽토시스를 유도한다
  • 마이클 알 윙
  • 단일 양부모가되는 것에 대한 팁(또는 배우자가 여행 할 때 육성)
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

보관함

  • 2022년 3월
  • 2022년 2월
  • 2022년 1월
  • 2021년 12월
  • 2021년 11월
  • 2021년 10월

메타

  • 로그인
  • 엔트리 피드
  • 댓글 피드
  • WordPress.org
©2022 Knihy-blog | Powered by WordPress and Superb Themes!