개발자에 대한 최선의 보안 방법

Adobe AIR 1.0 이상

웹 기술을 사용하여 AIR 응용 프로그램을 작성하는 경우에도 개발자는 브라우저 보안 샌드박스 내에서 작업하고 있지 않음을 인식해야 합니다. 즉, 로컬 시스템에 의도적으로 또는 예기치 않게 손상을 줄 수 있는 AIR 응용 프로그램을 작성할 수 있습니다. AIR은 이러한 위험을 최소화하려고 하지만 취약성이 발생할 수 있는 경우가 여전히 존재합니다. 이 항목에서는 중요한 잠재적 보안 문제를 다룹니다.

파일을 응용 프로그램 보안 샌드박스로 가져올 위험

응용 프로그램 디렉토리에 있는 파일은 응용 프로그램 샌드박스에 할당되고 런타임의 전체 권한을 가집니다. 로컬 파일 시스템에 쓰는 응용 프로그램은 app-storage:/ 에 쓰는 것이 좋습니다. 이 디렉토리는 사용자 컴퓨터에 있는 응용 프로그램 파일과 별개로 존재하므로 파일이 응용 프로그램 샌드박스에 할당되지 않고 다소 약화된 보안 위험을 제공합니다. 개발자는 다음 사항을 고려하는 것이 좋습니다.

  • 필요한 경우에만 설치된 응용 프로그램의 AIR 파일에 파일을 포함합니다.

  • 비헤이비어를 완전히 이해하고 신뢰하는 경우에만 설치된 응용 프로그램의 AIR 파일에 스크립팅 파일을 포함합니다.

  • 응용 프로그램 디렉토리의 내용에 쓰거나 내용을 수정하지 않습니다. 런타임은 SecurityError 예외를 발생하여 app:/ URL 스킴을 통해 응용 프로그램이 파일 및 디렉토리를 쓰거나 수정할 수 없도록 지정합니다.

  • 네트워크 소스의 데이터를 코드 실행을 유발할 수 있는 AIR API의 메서드에 대한 매개 변수로 사용하지 않습니다. 여기에는 Loader.loadBytes() 메서드 및 JavaScript eval() 함수의 사용이 포함됩니다.

외부 소스를 사용하여 경로를 결정할 위험

AIR 응용 프로그램은 외부 데이터 또는 내용을 사용할 때 손상될 수 있습니다. 따라서 네트워크 또는 파일 시스템의 데이터를 사용할 때 특별한 주의를 기울여야 합니다. 신뢰의 책임은 전적으로 개발자 및 개발자가 만드는 네트워크 연결에 있지만 외부 데이터를 로드하는 것은 본질적으로 위험하므로 중요한 작업에 대한 입력에는 사용하지 않습니다. 개발자는 다음 작업은 수행하지 않는 것이 좋습니다.

  • 네트워크 소스의 데이터를 사용하여 파일 이름을 결정합니다.

  • 네트워크 소스의 데이터를 사용하여 응용 프로그램이 개인 정보를 보내는 데 사용하는 URL을 생성합니다.

안전하지 않은 자격 증명을 사용, 저장 또는 전송할 위험

사용자의 로컬 파일 시스템에 사용자 자격 증명을 저장하면 본질적으로 이러한 자격 증명이 손상될 수 있는 위험이 발생합니다. 개발자는 다음 사항을 고려하는 것이 좋습니다.

  • 자격 증명을 로컬로 저장해야 하는 경우 로컬 파일 시스템에 쓸 때 자격 증명을 암호화합니다. 런타임은 EncryptedLocalStore 클래스를 통해 각각의 설치된 응용 프로그램에 고유한 암호화된 저장소를 제공합니다. 자세한 내용은 암호화된 로컬 저장소 를 참조하십시오.

  • 네트워크 소스를 신뢰할 수 없고 HTTPS: 또는 TLS(Transport Layer Security) 프로토콜이 전송에 사용되지 않을 경우 암호화되지 않은 사용자 자격 증명을 해당 소스로 전송하지 마십시오.

  • 자격 증명을 만들 때 기본 암호를 지정하지 마십시오. 사용자가 직접 자신의 암호를 지정해야 합니다. 기본값을 그대로 두는 사용자는 기본 암호를 이미 알고 있는 공격자에게 자신의 자격 증명을 노출하게 됩니다.

다운그레이드 공격 위험

응용 프로그램을 설치하는 동안 런타임은 응용 프로그램 버전이 현재 설치되어 있지 않은지 확인합니다. 응용 프로그램이 이미 설치되어 있으면 런타임은 설치 중인 버전에 대해 버전 문자열을 비교합니다. 이 문자열이 다른 경우 사용자는 설치를 업그레이드하도록 선택할 수 있습니다. 런타임은 새로 설치된 버전이 기존 버전보다 새 버전임을 보장하지 않고 단지 두 버전이 서로 다른지 여부만 확인합니다. 공격자는 사용자에게 이전 버전을 배포하여 보안 약점을 피할 수 있습니다. 따라서 개발자는 응용 프로그램이 실행될 때 버전 감지를 수행하는 것이 좋습니다. 응용 프로그램이 네트워크에서 필수 업데이트를 검사하도록 지정하는 것이 좋습니다. 그렇게 하면 공격자로 인해 사용자가 기존 버전을 실행하게 된 경우에도 해당 기존 버전은 업데이트해야 함을 인식합니다. 또한 응용 프로그램에 대해 분명한 버전 지정 스킴을 사용하면 사용자에게 다운그레이드된 버전을 설치하도록 속이는 것이 보다 어려워집니다.