코드 주입이란 무엇이며 그것을 피할 수있는 방법

코드 주입 취약점은 공격자가 악성 코드를 주입하고 실행하기 위해 악용 할 수있는 취약점을 설명하는 일반적인 용어입니다.

이 취약점은 일반적으로 신뢰할 수 없는 데이터 유효성 검사가 없기 때문에 발생합니다. 먼저 코드를 검증하지 않고 직접 평가하는 응용 프로그램은 이러한 유형의 공격에 취약합니다.

코드 삽입은 때때로 명령 삽입과 같은 다른 취약점과 혼동됩니다. 코드 삽입은 공격자가 운영 체제 명령 대신 코드를 삽입하는 다른 유형의 취약점입니다. 즉,코드 삽입 취약점과 관련하여 공격자는 응용 프로그램의 언어 기능에 의해 제한됩니다.

공격자 제한

이러한 취약점을 악용하는 경우 공격자는 응용 프로그램의 언어(예:/파이썬)기능에 의해 제한됩니다. 그러나 대부분의 경우 공격자는 인터프리터의 기능을 활용하여 코드 주입에서 명령 주입으로 전환 할 수 있습니다.

예를 들어,공격자가 웹 응용 프로그램에 코드를 삽입하는 경우 공격자는 인터프리터에서 사용할 수 있는 기능에 의해 제한됩니다. 삽입 공격이 발생하면 인터프리터가 삽입된 코드를 실행하고 인터프리터의 기능에 따라 공격자가 시스템 명령을 실행하기 위해 사용할 수 있는 프로그램 실행 함수를 활용할 수 있습니다.

코드 삽입 방지

코드 삽입의 영향

성공적인 공격에 미치는 영향은 응용 프로그램에서 사용하는 언어,응용 프로그램에서 사용할 수 있는 기능 등과 같은 여러 요인에 따라 달라질 수 있습니다.

그러나 대부분의 경우 공격이 성공하면 응용 프로그램 및 해당 데이터의 기밀성,무결성 및 가용성이 완전히 손상될 수 있습니다.

사용자 입력과 같은 신뢰할 수 없는 데이터를 전달 하는 웹 응용 프로그램을 상상해보십시오. 이 함수는 문자열이 유효한 경우 세미콜론으로 끝납니다.

<?1821>$백업= “”;

$입력=$_가져오기;

평가(“\$백업=\$입력;”);

?>

응용 프로그램이 사용자의 입력을 위험한 평가 함수에 전달하고 유효성 검사가 수행되지 않으므로 응용 프로그램은 코드 삽입 공격에 취약합니다.

공격자는 입력 1 을 제공하여 이 약점을 악용할 수 있습니다.:

https://example.com/index.php?arg=1;https://example.com/index.php?arg=1; ();

운영 체제 시스템 명령 실행

취약점을 확인한 후 공격자는 명령 실행을 허용하는 인터프리터의 기능을 활용하여 시스템 명령 실행을 진행할 수 있습니다. 이 경우 시스템()기능이 사용됩니다.

https://example.com/index.php?arg=1;https://example.com/index.php?arg=1; 호출할 때 현재 사용자의 사용자 이름을 인쇄합니다. 즉,응용 프로그램

이 사용자의 입력을 평가 함수에 전달할 때,인터프리터는

의 기본 운영 체제에서 위아미 명령을 실행합니다.

공격자가 시스템 명령을 실행할 수 있으면 취약한

시스템에서 대화식 셸을 얻고 손상된 시스템의 내부 네트워크 내의 다른 시스템에 대한 다른 공격을 수행 할 수 있습니다.

예방

사용되는 언어에 관계없이 아래에 설명된 모범 사례

에 따라 코드 삽입 취약점을 피할 수 있습니다:

  • 신뢰할 수 없는 데이터 평가 방지

◦ 엄격하게 요구되지 않는 한 평가()와 같은 안전하지 않은 기능을 사용하여 신뢰할 수없는 데이터를 직접 평가하지 마십시오. *모든 데이터를 신뢰할 수 없는

로 취급합니다. 쿠키, 요청 헤더 및 업로드된 파일과 같이 사용자가 제어하는 정보는 신뢰할 수 없는 것으로 처리해야 합니다.

  • 신뢰할 수 없는 데이터

◦ 항상 서버 측에서 사용자 입력의 유효성을 검사합니다.

사용자가 날짜,우편 번호,번호,이메일

주소 등과 같은 특정 형식으로 입력을 제출해야하는 경우 사용자의 입력이 예상 형식과 일치하는지 확인하십시오.

응용 프로그램이 제한된 옵션 집합 내에서 값을 기대하는 경우 화이트리스트 접근 방식을 따르고

제출된 입력이 허용된 옵션 중 하나인지 확인합니다.

  • 통역사 강화

◦ 예를 들어, 인터프리터의 기능은 응용 프로그램이 작동하는 데 필요한 최소한의 기능으로 제한되어야 합니다. 이는 공격자가 시스템 명령을 실행하는 것을 훨씬 더 어렵게 만들 수 있습니다. 예를 들어, 프로그램 실행 기능은 수정하여 비활성화 할 수 있습니다.이니 파일.

  • 정적 분석

◦ 정적 분석 작업을 수행하여 안전하지 않은 평가와 관련된 취약점을 식별합니다.

◦ 정기적인 취약성 평가 및 침투 테스트 활동을 수행하여 이러한 약점을 식별하고 완화합니다.

답글 남기기

이메일 주소는 공개되지 않습니다.