코더는 보안을 정복 : 공유 및 학습 시리즈 - 코드 주입
코드 주입 공격은 많은 웹 사이트와 응용 프로그램이 발생할 가장 일반적이며 가장 위험합니다. 정교함과 그들이 제기하는 위험측면에서 영역을 모두 실행하지만 사용자 입력을 허용하는 거의 모든 사이트 나 앱이 취약할 수 있습니다. 사실, 이러한 종류의 공격은 거의 모든 사이버 보안 수비수가 경력의 어느 시점에서 처리해야 하며 아마도 여러 번 다루어야 할 것입니다.
응용 프로그램 이나 웹 사이트가 사용자의 입력을 수락 할 때마다 코드 주입 공격이 발생할 수 있습니다. 이는 검색 기능을 제공하거나 사용자에게 식별 정보를 입력하도록 요청하는 것만큼 간단할 수 있습니다. 악의적인 사용자가 일반 텍스트 입력 대신 오픈 필드에 코드를 입력하면 공격이 발생합니다. 그들의 목표는 서버가 유효한 코드에 대한 입력을 실수로 한 다음 공격자가 원하는 모든 기능을 실행하는 것입니다.
코드 주입 공격은 매우 일반적이지만 이를 중지하는 데 사용할 수 있는 방어도 마찬가지입니다. 이 에피소드에서는 다음을 배우게 됩니다.
- 작동 방식
- 왜 그렇게 위험합니까?
- 방어를 막기 위해 어떻게 방어할 수 있을까요?
공격자는 코드 주입을 어떻게 사용합니까?
코드 주입 공격에 대한 구체적인 세부 정보는 사용되는 프로그래밍 언어에 따라 변경되지만 사용자가 데이터를 입력할 수 있는 한 모든 앱 이나 웹 사이트가 취약할 수 있습니다. SQL, HTML, XML, CSS 및 기타 모든 일반적인 프로그래밍 언어에 대해 코드 주입 공격이 트리거되었습니다.
첫째, 공격자는 일반적으로 사용자가 자신의 입력을 입력할 수 있는 시점에서 응용 프로그램 내에서 취약한 코드를 찾아야 합니다. 예를 들어 이 코드는 PHP eval() 함수를 가져와 반환 문자열의 유효성 검사 없이 수정하기 위해 사용자에게 전달합니다.
$myvar = "varname";
$x = $_GET[arg];
eval("\$myvar = \$x;");
영리한 공격자는 eval 함수에 자신의 문자열을 쉽게 추가할 수 있으며, 원하는 경우 시스템 명령을 실행하기도 합니다.
/index.php?arg=1; 시스템(id)
코드 주입 공격에는 시스템 명령 전송이 포함될 수 있지만 그렇게 하는 것만으로는 제한되지 않습니다. 사실, 코드 주입 공격으로, 해커는 언어 자체의 기능에 의해 제한됩니다. 이 예제에서는 공격자가 대상 시스템을 프로그래밍하여 PHP 프레임워크에서 허용하는 거의 모든 작업을 수행할 수 있습니다.
코드 주입 공격이 왜 그렇게 위험한가요?
코드 주입 공격은 공격자의 기술에 따라 잠재적으로 매우 위험할 수 있습니다. 프로그래밍 언어가 허용하는 모든 작업을 수행할 수 있으며, 이 언어는 앱 프로그래머와 동일한 발판을 마련할 수 있습니다. 공격자는 실질적으로 자신의 앱을 작성하고 대상 환경 내에서 실행할 수 있습니다.
숙련도가 낮을 수 있는 공격자도 위험할 수 있습니다. 자체 응용 프로그램 이나 코드 문자열을 작성 하는 대신, 그들은 단순히 수락 하 고 미리 프로그래밍 된 악성 코드를 설치 하는 대상 된 시스템을 주문할 수 있습니다. 이로 인해 사이트 훼손, 랜섬웨어 공격 또는 사이트 사용자에 대해 평준화된 피싱 캠페인의 기초가 될 수도 있습니다.
대부분의 경우 코드 주입 공격은 사용자 목록 및 암호와 같은 것들을 훔치거나 추가 타협을 목표로 하는 시스템에 귀중한 정찰을 얻는 데 사용됩니다. 그러나 경고, 숙련 된 코더는 코드 주입 공격으로 거의 모든 작업을 수행 할 수 있습니다, 그래서 그 중 모든 잠재적 인 인스턴스가 발견및 환경에서 제거되는 것이 중요합니다.
아무도 신뢰! (또는 적어도, 사용자가 아님)
코드 사출 공격 취약점을 제거할 때 가장 먼저 살펴볼 장소는 사용자 입력을 요청하거나 허용하는 곳입니다. 사용자가 입력한 모든 항목은 어떠한 경우에도 신뢰할 수 없습니다. 필터링이나 검사 없이 사용자 입력을 허용하는 경우 기본적으로 공격자가 시스템이나 네트워크를 손상시키는 데 무료 촬영을 하도록 초대합니다.
항상 가능한 것은 아니지만 코드 주입 공격을 차단하는 가장 좋은 방법은 함수가 사용자 입력을 직접 실행하거나 해석하는 것을 방지하는 것입니다. 아마도 사용자는 자신의 쿼리를 입력하는 자유 통치 대신 정적 옵션을 선택할 수 있으며 응용 프로그램은 제한된 선택만 유효한 것으로 받아들이도록 프로그래밍됩니다. 항상 그렇게 하는 것이 적절하지는 않지만 가능한 경우 코드 주사를 시작하기 전에 제거할 수 있습니다.
사용자가 자신의 입력을 입력해야 하는 영역의 경우 해당 데이터에 엄격한 컨트롤을 배치해야 합니다. 모든 것이 잠재적인 공격이라고 가정하는 것은 시작하기에 좋은 장소입니다. 클라이언트와 서버 쪽 모두에서 읽기 전용 사용자 액세스와 같은 최소 권한 정책을 적용하면 대부분의 코드가 실행되지 않도록 할 수 있습니다.
다른 좋은 방어는 모든 사용자 입력에 응용 프로그램 전체 필터 및 위생을 구현하는 것입니다. 개발자는 수년 동안 코드 주입 공격을 알고 있었으며 모든 프레임워크와 언어에 입증된 필터 라이브러리가 존재합니다. 이러한 필터를 적용할 때는 명백한 사용자 입력 영역이나 Get 및 Post 명령과 같은 일반적인 매개 변수뿐만 아니라 쿠키 및 HTTP 헤더에 대해서도 적용해야 합니다.
코드 주입에 대한 수정 적용
사용자 환경에서 불필요한 사용자 입력 영역을 제거하고 최소한의 권한 원칙을 적용하고 최신 필터링 및 소독 도구를 사용하여 잠재적인 공격을 검사하고 감지하면 이 위험한 취약점의 문이 닫을 수 있습니다. 사용자 입력을 신뢰하지 않는 사고 방식을 갖는 것은 또한 잘 앞으로 나아갈 수 있습니다. 이 모든 것을 할 수 있으며, 이 위험한 유형의 공격보다 한 발 앞서 나갈 수 있습니다.
추가 읽기를 위해 코드 주입에 대한 OWASP 쓰기를 살펴 볼 수 있습니다. 또한 새로운 방어 지식을 테스트에 넣을 수 있습니다. Secure Code Warrior 사이버 보안 팀이 궁극적인 사이버 전사가 될 수 있도록 하는 플랫폼. 이 취약점을 물리치는 것에 대해 자세히 알아보려면 Secure Code Warrior 블로그.
페이스 코드 사출 정면, 지금. 게임화된 교육 플랫폼에서 도전하기: [여기에서 시작]


코드 주입 공격은 많은 웹 사이트와 응용 프로그램이 발생할 가장 일반적이며 가장 위험합니다. 정교함과 그들이 제기하는 위험측면에서 영역을 모두 실행하지만 사용자 입력을 허용하는 거의 모든 사이트 나 앱이 취약할 수 있습니다.
야프 카란 싱은 보안 코딩 전도자, 수석 싱 및 공동 설립자입니다 Secure Code Warrior .

Secure Code Warrior 는 전체 소프트웨어 개발 수명 주기에서 코드를 보호하고 사이버 보안을 최우선으로 생각하는 문화를 조성할 수 있도록 도와드립니다. 앱 보안 관리자, 개발자, CISO 등 보안과 관련된 모든 사람이 안전하지 않은 코드와 관련된 위험을 줄일 수 있도록 도와드릴 수 있습니다.
데모 예약야프 카란 싱은 보안 코딩 전도자, 수석 싱 및 공동 설립자입니다 Secure Code Warrior .


코드 주입 공격은 많은 웹 사이트와 응용 프로그램이 발생할 가장 일반적이며 가장 위험합니다. 정교함과 그들이 제기하는 위험측면에서 영역을 모두 실행하지만 사용자 입력을 허용하는 거의 모든 사이트 나 앱이 취약할 수 있습니다. 사실, 이러한 종류의 공격은 거의 모든 사이버 보안 수비수가 경력의 어느 시점에서 처리해야 하며 아마도 여러 번 다루어야 할 것입니다.
응용 프로그램 이나 웹 사이트가 사용자의 입력을 수락 할 때마다 코드 주입 공격이 발생할 수 있습니다. 이는 검색 기능을 제공하거나 사용자에게 식별 정보를 입력하도록 요청하는 것만큼 간단할 수 있습니다. 악의적인 사용자가 일반 텍스트 입력 대신 오픈 필드에 코드를 입력하면 공격이 발생합니다. 그들의 목표는 서버가 유효한 코드에 대한 입력을 실수로 한 다음 공격자가 원하는 모든 기능을 실행하는 것입니다.
코드 주입 공격은 매우 일반적이지만 이를 중지하는 데 사용할 수 있는 방어도 마찬가지입니다. 이 에피소드에서는 다음을 배우게 됩니다.
- 작동 방식
- 왜 그렇게 위험합니까?
- 방어를 막기 위해 어떻게 방어할 수 있을까요?
공격자는 코드 주입을 어떻게 사용합니까?
코드 주입 공격에 대한 구체적인 세부 정보는 사용되는 프로그래밍 언어에 따라 변경되지만 사용자가 데이터를 입력할 수 있는 한 모든 앱 이나 웹 사이트가 취약할 수 있습니다. SQL, HTML, XML, CSS 및 기타 모든 일반적인 프로그래밍 언어에 대해 코드 주입 공격이 트리거되었습니다.
첫째, 공격자는 일반적으로 사용자가 자신의 입력을 입력할 수 있는 시점에서 응용 프로그램 내에서 취약한 코드를 찾아야 합니다. 예를 들어 이 코드는 PHP eval() 함수를 가져와 반환 문자열의 유효성 검사 없이 수정하기 위해 사용자에게 전달합니다.
$myvar = "varname";
$x = $_GET[arg];
eval("\$myvar = \$x;");
영리한 공격자는 eval 함수에 자신의 문자열을 쉽게 추가할 수 있으며, 원하는 경우 시스템 명령을 실행하기도 합니다.
/index.php?arg=1; 시스템(id)
코드 주입 공격에는 시스템 명령 전송이 포함될 수 있지만 그렇게 하는 것만으로는 제한되지 않습니다. 사실, 코드 주입 공격으로, 해커는 언어 자체의 기능에 의해 제한됩니다. 이 예제에서는 공격자가 대상 시스템을 프로그래밍하여 PHP 프레임워크에서 허용하는 거의 모든 작업을 수행할 수 있습니다.
코드 주입 공격이 왜 그렇게 위험한가요?
코드 주입 공격은 공격자의 기술에 따라 잠재적으로 매우 위험할 수 있습니다. 프로그래밍 언어가 허용하는 모든 작업을 수행할 수 있으며, 이 언어는 앱 프로그래머와 동일한 발판을 마련할 수 있습니다. 공격자는 실질적으로 자신의 앱을 작성하고 대상 환경 내에서 실행할 수 있습니다.
숙련도가 낮을 수 있는 공격자도 위험할 수 있습니다. 자체 응용 프로그램 이나 코드 문자열을 작성 하는 대신, 그들은 단순히 수락 하 고 미리 프로그래밍 된 악성 코드를 설치 하는 대상 된 시스템을 주문할 수 있습니다. 이로 인해 사이트 훼손, 랜섬웨어 공격 또는 사이트 사용자에 대해 평준화된 피싱 캠페인의 기초가 될 수도 있습니다.
대부분의 경우 코드 주입 공격은 사용자 목록 및 암호와 같은 것들을 훔치거나 추가 타협을 목표로 하는 시스템에 귀중한 정찰을 얻는 데 사용됩니다. 그러나 경고, 숙련 된 코더는 코드 주입 공격으로 거의 모든 작업을 수행 할 수 있습니다, 그래서 그 중 모든 잠재적 인 인스턴스가 발견및 환경에서 제거되는 것이 중요합니다.
아무도 신뢰! (또는 적어도, 사용자가 아님)
코드 사출 공격 취약점을 제거할 때 가장 먼저 살펴볼 장소는 사용자 입력을 요청하거나 허용하는 곳입니다. 사용자가 입력한 모든 항목은 어떠한 경우에도 신뢰할 수 없습니다. 필터링이나 검사 없이 사용자 입력을 허용하는 경우 기본적으로 공격자가 시스템이나 네트워크를 손상시키는 데 무료 촬영을 하도록 초대합니다.
항상 가능한 것은 아니지만 코드 주입 공격을 차단하는 가장 좋은 방법은 함수가 사용자 입력을 직접 실행하거나 해석하는 것을 방지하는 것입니다. 아마도 사용자는 자신의 쿼리를 입력하는 자유 통치 대신 정적 옵션을 선택할 수 있으며 응용 프로그램은 제한된 선택만 유효한 것으로 받아들이도록 프로그래밍됩니다. 항상 그렇게 하는 것이 적절하지는 않지만 가능한 경우 코드 주사를 시작하기 전에 제거할 수 있습니다.
사용자가 자신의 입력을 입력해야 하는 영역의 경우 해당 데이터에 엄격한 컨트롤을 배치해야 합니다. 모든 것이 잠재적인 공격이라고 가정하는 것은 시작하기에 좋은 장소입니다. 클라이언트와 서버 쪽 모두에서 읽기 전용 사용자 액세스와 같은 최소 권한 정책을 적용하면 대부분의 코드가 실행되지 않도록 할 수 있습니다.
다른 좋은 방어는 모든 사용자 입력에 응용 프로그램 전체 필터 및 위생을 구현하는 것입니다. 개발자는 수년 동안 코드 주입 공격을 알고 있었으며 모든 프레임워크와 언어에 입증된 필터 라이브러리가 존재합니다. 이러한 필터를 적용할 때는 명백한 사용자 입력 영역이나 Get 및 Post 명령과 같은 일반적인 매개 변수뿐만 아니라 쿠키 및 HTTP 헤더에 대해서도 적용해야 합니다.
코드 주입에 대한 수정 적용
사용자 환경에서 불필요한 사용자 입력 영역을 제거하고 최소한의 권한 원칙을 적용하고 최신 필터링 및 소독 도구를 사용하여 잠재적인 공격을 검사하고 감지하면 이 위험한 취약점의 문이 닫을 수 있습니다. 사용자 입력을 신뢰하지 않는 사고 방식을 갖는 것은 또한 잘 앞으로 나아갈 수 있습니다. 이 모든 것을 할 수 있으며, 이 위험한 유형의 공격보다 한 발 앞서 나갈 수 있습니다.
추가 읽기를 위해 코드 주입에 대한 OWASP 쓰기를 살펴 볼 수 있습니다. 또한 새로운 방어 지식을 테스트에 넣을 수 있습니다. Secure Code Warrior 사이버 보안 팀이 궁극적인 사이버 전사가 될 수 있도록 하는 플랫폼. 이 취약점을 물리치는 것에 대해 자세히 알아보려면 Secure Code Warrior 블로그.
페이스 코드 사출 정면, 지금. 게임화된 교육 플랫폼에서 도전하기: [여기에서 시작]

코드 주입 공격은 많은 웹 사이트와 응용 프로그램이 발생할 가장 일반적이며 가장 위험합니다. 정교함과 그들이 제기하는 위험측면에서 영역을 모두 실행하지만 사용자 입력을 허용하는 거의 모든 사이트 나 앱이 취약할 수 있습니다. 사실, 이러한 종류의 공격은 거의 모든 사이버 보안 수비수가 경력의 어느 시점에서 처리해야 하며 아마도 여러 번 다루어야 할 것입니다.
응용 프로그램 이나 웹 사이트가 사용자의 입력을 수락 할 때마다 코드 주입 공격이 발생할 수 있습니다. 이는 검색 기능을 제공하거나 사용자에게 식별 정보를 입력하도록 요청하는 것만큼 간단할 수 있습니다. 악의적인 사용자가 일반 텍스트 입력 대신 오픈 필드에 코드를 입력하면 공격이 발생합니다. 그들의 목표는 서버가 유효한 코드에 대한 입력을 실수로 한 다음 공격자가 원하는 모든 기능을 실행하는 것입니다.
코드 주입 공격은 매우 일반적이지만 이를 중지하는 데 사용할 수 있는 방어도 마찬가지입니다. 이 에피소드에서는 다음을 배우게 됩니다.
- 작동 방식
- 왜 그렇게 위험합니까?
- 방어를 막기 위해 어떻게 방어할 수 있을까요?
공격자는 코드 주입을 어떻게 사용합니까?
코드 주입 공격에 대한 구체적인 세부 정보는 사용되는 프로그래밍 언어에 따라 변경되지만 사용자가 데이터를 입력할 수 있는 한 모든 앱 이나 웹 사이트가 취약할 수 있습니다. SQL, HTML, XML, CSS 및 기타 모든 일반적인 프로그래밍 언어에 대해 코드 주입 공격이 트리거되었습니다.
첫째, 공격자는 일반적으로 사용자가 자신의 입력을 입력할 수 있는 시점에서 응용 프로그램 내에서 취약한 코드를 찾아야 합니다. 예를 들어 이 코드는 PHP eval() 함수를 가져와 반환 문자열의 유효성 검사 없이 수정하기 위해 사용자에게 전달합니다.
$myvar = "varname";
$x = $_GET[arg];
eval("\$myvar = \$x;");
영리한 공격자는 eval 함수에 자신의 문자열을 쉽게 추가할 수 있으며, 원하는 경우 시스템 명령을 실행하기도 합니다.
/index.php?arg=1; 시스템(id)
코드 주입 공격에는 시스템 명령 전송이 포함될 수 있지만 그렇게 하는 것만으로는 제한되지 않습니다. 사실, 코드 주입 공격으로, 해커는 언어 자체의 기능에 의해 제한됩니다. 이 예제에서는 공격자가 대상 시스템을 프로그래밍하여 PHP 프레임워크에서 허용하는 거의 모든 작업을 수행할 수 있습니다.
코드 주입 공격이 왜 그렇게 위험한가요?
코드 주입 공격은 공격자의 기술에 따라 잠재적으로 매우 위험할 수 있습니다. 프로그래밍 언어가 허용하는 모든 작업을 수행할 수 있으며, 이 언어는 앱 프로그래머와 동일한 발판을 마련할 수 있습니다. 공격자는 실질적으로 자신의 앱을 작성하고 대상 환경 내에서 실행할 수 있습니다.
숙련도가 낮을 수 있는 공격자도 위험할 수 있습니다. 자체 응용 프로그램 이나 코드 문자열을 작성 하는 대신, 그들은 단순히 수락 하 고 미리 프로그래밍 된 악성 코드를 설치 하는 대상 된 시스템을 주문할 수 있습니다. 이로 인해 사이트 훼손, 랜섬웨어 공격 또는 사이트 사용자에 대해 평준화된 피싱 캠페인의 기초가 될 수도 있습니다.
대부분의 경우 코드 주입 공격은 사용자 목록 및 암호와 같은 것들을 훔치거나 추가 타협을 목표로 하는 시스템에 귀중한 정찰을 얻는 데 사용됩니다. 그러나 경고, 숙련 된 코더는 코드 주입 공격으로 거의 모든 작업을 수행 할 수 있습니다, 그래서 그 중 모든 잠재적 인 인스턴스가 발견및 환경에서 제거되는 것이 중요합니다.
아무도 신뢰! (또는 적어도, 사용자가 아님)
코드 사출 공격 취약점을 제거할 때 가장 먼저 살펴볼 장소는 사용자 입력을 요청하거나 허용하는 곳입니다. 사용자가 입력한 모든 항목은 어떠한 경우에도 신뢰할 수 없습니다. 필터링이나 검사 없이 사용자 입력을 허용하는 경우 기본적으로 공격자가 시스템이나 네트워크를 손상시키는 데 무료 촬영을 하도록 초대합니다.
항상 가능한 것은 아니지만 코드 주입 공격을 차단하는 가장 좋은 방법은 함수가 사용자 입력을 직접 실행하거나 해석하는 것을 방지하는 것입니다. 아마도 사용자는 자신의 쿼리를 입력하는 자유 통치 대신 정적 옵션을 선택할 수 있으며 응용 프로그램은 제한된 선택만 유효한 것으로 받아들이도록 프로그래밍됩니다. 항상 그렇게 하는 것이 적절하지는 않지만 가능한 경우 코드 주사를 시작하기 전에 제거할 수 있습니다.
사용자가 자신의 입력을 입력해야 하는 영역의 경우 해당 데이터에 엄격한 컨트롤을 배치해야 합니다. 모든 것이 잠재적인 공격이라고 가정하는 것은 시작하기에 좋은 장소입니다. 클라이언트와 서버 쪽 모두에서 읽기 전용 사용자 액세스와 같은 최소 권한 정책을 적용하면 대부분의 코드가 실행되지 않도록 할 수 있습니다.
다른 좋은 방어는 모든 사용자 입력에 응용 프로그램 전체 필터 및 위생을 구현하는 것입니다. 개발자는 수년 동안 코드 주입 공격을 알고 있었으며 모든 프레임워크와 언어에 입증된 필터 라이브러리가 존재합니다. 이러한 필터를 적용할 때는 명백한 사용자 입력 영역이나 Get 및 Post 명령과 같은 일반적인 매개 변수뿐만 아니라 쿠키 및 HTTP 헤더에 대해서도 적용해야 합니다.
코드 주입에 대한 수정 적용
사용자 환경에서 불필요한 사용자 입력 영역을 제거하고 최소한의 권한 원칙을 적용하고 최신 필터링 및 소독 도구를 사용하여 잠재적인 공격을 검사하고 감지하면 이 위험한 취약점의 문이 닫을 수 있습니다. 사용자 입력을 신뢰하지 않는 사고 방식을 갖는 것은 또한 잘 앞으로 나아갈 수 있습니다. 이 모든 것을 할 수 있으며, 이 위험한 유형의 공격보다 한 발 앞서 나갈 수 있습니다.
추가 읽기를 위해 코드 주입에 대한 OWASP 쓰기를 살펴 볼 수 있습니다. 또한 새로운 방어 지식을 테스트에 넣을 수 있습니다. Secure Code Warrior 사이버 보안 팀이 궁극적인 사이버 전사가 될 수 있도록 하는 플랫폼. 이 취약점을 물리치는 것에 대해 자세히 알아보려면 Secure Code Warrior 블로그.
페이스 코드 사출 정면, 지금. 게임화된 교육 플랫폼에서 도전하기: [여기에서 시작]
코드 주입 공격은 많은 웹 사이트와 응용 프로그램이 발생할 가장 일반적이며 가장 위험합니다. 정교함과 그들이 제기하는 위험측면에서 영역을 모두 실행하지만 사용자 입력을 허용하는 거의 모든 사이트 나 앱이 취약할 수 있습니다. 사실, 이러한 종류의 공격은 거의 모든 사이버 보안 수비수가 경력의 어느 시점에서 처리해야 하며 아마도 여러 번 다루어야 할 것입니다.
응용 프로그램 이나 웹 사이트가 사용자의 입력을 수락 할 때마다 코드 주입 공격이 발생할 수 있습니다. 이는 검색 기능을 제공하거나 사용자에게 식별 정보를 입력하도록 요청하는 것만큼 간단할 수 있습니다. 악의적인 사용자가 일반 텍스트 입력 대신 오픈 필드에 코드를 입력하면 공격이 발생합니다. 그들의 목표는 서버가 유효한 코드에 대한 입력을 실수로 한 다음 공격자가 원하는 모든 기능을 실행하는 것입니다.
코드 주입 공격은 매우 일반적이지만 이를 중지하는 데 사용할 수 있는 방어도 마찬가지입니다. 이 에피소드에서는 다음을 배우게 됩니다.
- 작동 방식
- 왜 그렇게 위험합니까?
- 방어를 막기 위해 어떻게 방어할 수 있을까요?
공격자는 코드 주입을 어떻게 사용합니까?
코드 주입 공격에 대한 구체적인 세부 정보는 사용되는 프로그래밍 언어에 따라 변경되지만 사용자가 데이터를 입력할 수 있는 한 모든 앱 이나 웹 사이트가 취약할 수 있습니다. SQL, HTML, XML, CSS 및 기타 모든 일반적인 프로그래밍 언어에 대해 코드 주입 공격이 트리거되었습니다.
첫째, 공격자는 일반적으로 사용자가 자신의 입력을 입력할 수 있는 시점에서 응용 프로그램 내에서 취약한 코드를 찾아야 합니다. 예를 들어 이 코드는 PHP eval() 함수를 가져와 반환 문자열의 유효성 검사 없이 수정하기 위해 사용자에게 전달합니다.
$myvar = "varname";
$x = $_GET[arg];
eval("\$myvar = \$x;");
영리한 공격자는 eval 함수에 자신의 문자열을 쉽게 추가할 수 있으며, 원하는 경우 시스템 명령을 실행하기도 합니다.
/index.php?arg=1; 시스템(id)
코드 주입 공격에는 시스템 명령 전송이 포함될 수 있지만 그렇게 하는 것만으로는 제한되지 않습니다. 사실, 코드 주입 공격으로, 해커는 언어 자체의 기능에 의해 제한됩니다. 이 예제에서는 공격자가 대상 시스템을 프로그래밍하여 PHP 프레임워크에서 허용하는 거의 모든 작업을 수행할 수 있습니다.
코드 주입 공격이 왜 그렇게 위험한가요?
코드 주입 공격은 공격자의 기술에 따라 잠재적으로 매우 위험할 수 있습니다. 프로그래밍 언어가 허용하는 모든 작업을 수행할 수 있으며, 이 언어는 앱 프로그래머와 동일한 발판을 마련할 수 있습니다. 공격자는 실질적으로 자신의 앱을 작성하고 대상 환경 내에서 실행할 수 있습니다.
숙련도가 낮을 수 있는 공격자도 위험할 수 있습니다. 자체 응용 프로그램 이나 코드 문자열을 작성 하는 대신, 그들은 단순히 수락 하 고 미리 프로그래밍 된 악성 코드를 설치 하는 대상 된 시스템을 주문할 수 있습니다. 이로 인해 사이트 훼손, 랜섬웨어 공격 또는 사이트 사용자에 대해 평준화된 피싱 캠페인의 기초가 될 수도 있습니다.
대부분의 경우 코드 주입 공격은 사용자 목록 및 암호와 같은 것들을 훔치거나 추가 타협을 목표로 하는 시스템에 귀중한 정찰을 얻는 데 사용됩니다. 그러나 경고, 숙련 된 코더는 코드 주입 공격으로 거의 모든 작업을 수행 할 수 있습니다, 그래서 그 중 모든 잠재적 인 인스턴스가 발견및 환경에서 제거되는 것이 중요합니다.
아무도 신뢰! (또는 적어도, 사용자가 아님)
코드 사출 공격 취약점을 제거할 때 가장 먼저 살펴볼 장소는 사용자 입력을 요청하거나 허용하는 곳입니다. 사용자가 입력한 모든 항목은 어떠한 경우에도 신뢰할 수 없습니다. 필터링이나 검사 없이 사용자 입력을 허용하는 경우 기본적으로 공격자가 시스템이나 네트워크를 손상시키는 데 무료 촬영을 하도록 초대합니다.
항상 가능한 것은 아니지만 코드 주입 공격을 차단하는 가장 좋은 방법은 함수가 사용자 입력을 직접 실행하거나 해석하는 것을 방지하는 것입니다. 아마도 사용자는 자신의 쿼리를 입력하는 자유 통치 대신 정적 옵션을 선택할 수 있으며 응용 프로그램은 제한된 선택만 유효한 것으로 받아들이도록 프로그래밍됩니다. 항상 그렇게 하는 것이 적절하지는 않지만 가능한 경우 코드 주사를 시작하기 전에 제거할 수 있습니다.
사용자가 자신의 입력을 입력해야 하는 영역의 경우 해당 데이터에 엄격한 컨트롤을 배치해야 합니다. 모든 것이 잠재적인 공격이라고 가정하는 것은 시작하기에 좋은 장소입니다. 클라이언트와 서버 쪽 모두에서 읽기 전용 사용자 액세스와 같은 최소 권한 정책을 적용하면 대부분의 코드가 실행되지 않도록 할 수 있습니다.
다른 좋은 방어는 모든 사용자 입력에 응용 프로그램 전체 필터 및 위생을 구현하는 것입니다. 개발자는 수년 동안 코드 주입 공격을 알고 있었으며 모든 프레임워크와 언어에 입증된 필터 라이브러리가 존재합니다. 이러한 필터를 적용할 때는 명백한 사용자 입력 영역이나 Get 및 Post 명령과 같은 일반적인 매개 변수뿐만 아니라 쿠키 및 HTTP 헤더에 대해서도 적용해야 합니다.
코드 주입에 대한 수정 적용
사용자 환경에서 불필요한 사용자 입력 영역을 제거하고 최소한의 권한 원칙을 적용하고 최신 필터링 및 소독 도구를 사용하여 잠재적인 공격을 검사하고 감지하면 이 위험한 취약점의 문이 닫을 수 있습니다. 사용자 입력을 신뢰하지 않는 사고 방식을 갖는 것은 또한 잘 앞으로 나아갈 수 있습니다. 이 모든 것을 할 수 있으며, 이 위험한 유형의 공격보다 한 발 앞서 나갈 수 있습니다.
추가 읽기를 위해 코드 주입에 대한 OWASP 쓰기를 살펴 볼 수 있습니다. 또한 새로운 방어 지식을 테스트에 넣을 수 있습니다. Secure Code Warrior 사이버 보안 팀이 궁극적인 사이버 전사가 될 수 있도록 하는 플랫폼. 이 취약점을 물리치는 것에 대해 자세히 알아보려면 Secure Code Warrior 블로그.
페이스 코드 사출 정면, 지금. 게임화된 교육 플랫폼에서 도전하기: [여기에서 시작]
시작할 수 있는 리소스
보안 기술 벤치마킹: 기업에서 보안 설계 간소화
보안 설계 이니셔티브의 성공에 대한 의미 있는 데이터를 찾는 것은 매우 어렵기로 악명이 높습니다. CISO는 직원과 회사 차원에서 보안 프로그램 활동의 투자 수익률(ROI)과 비즈니스 가치를 입증하는 데 어려움을 겪는 경우가 많습니다. 특히 기업이 현재 업계 표준과 비교하여 조직이 어떻게 벤치마킹되고 있는지에 대한 인사이트를 얻는 것은 더욱 어렵습니다. 대통령의 국가 사이버 보안 전략은 이해관계자들에게 "보안과 회복탄력성을 설계에 포함"할 것을 촉구했습니다. 설계에 의한 보안 이니셔티브의 핵심은 개발자에게 안전한 코드를 보장하는 기술을 제공하는 것뿐만 아니라 규제 기관에 이러한 기술이 제대로 갖추어져 있음을 확신시키는 것입니다. 이 프레젠테이션에서는 25만 명 이상의 개발자로부터 수집한 내부 데이터 포인트, 데이터 기반 고객 인사이트, 공개 연구 등 여러 주요 소스에서 파생된 수많은 정성적 및 정량적 데이터를 공유합니다. 이러한 데이터 포인트의 집계를 활용하여 여러 업종에 걸친 보안 설계 이니셔티브의 현재 상태에 대한 비전을 전달하고자 합니다. 이 보고서는 현재 이 분야의 활용도가 낮은 이유, 성공적인 업스킬링 프로그램이 사이버 보안 위험 완화에 미칠 수 있는 중대한 영향, 코드베이스에서 취약성 범주를 제거할 수 있는 잠재력에 대해 자세히 설명합니다.