Category :
Securities
,
ColdFusion
Comments :
댓글쓰기
Posted by
장창학
at
11:18 PM
Windows에서 설치하였던, Linux에서 설치하였던 Adobe ColdFusion의 설치디렉토리안의 bin 디렉토리는 CF서버를 끄고 켤수 있는 중요한 시작파일이 있는데 이 안에는 또 다른 재미있는 물건이 하나 있습니다. cfencode.exe (Linux에서는 cfencode.linux 또는 Solaris에서는 cfencode.solaris 파일)이라는 작은 유틸리티인데요. 이 파일은 ColdFusion소스코드를 암호화하여 다른 개발자가 소스를 보지 못하도록 해줍니다. 예를 들어 PHP의 Zend Encoder와 같은 것인데요. PHP의 Zend Encoder로 암호화된 PHP소스코드를 실행하려면 반드시 PHP설치시 Zend Encoder가 설치되어 있어야 하는 것처럼 Adobe ColdFusion은 cfencode.exe로 암호화된 파일을 읽고 해석할 수 있습니다.참고로 cfencode 유틸리티는 GUI유틸리티가 아니므로 반드시 Command Line에서 명령해야 합니다.

ColdFusion은 사용자가 전혀 새로운 태그를 정의하거나, 함수를 정의할 수 있습니다. Custom tags와 UDF(User Defined Functions)이라는 것인데요. 이것을 고생스레 만들어 놨는데 누군가가 소스코드내의 이러한 정의 태그나 함수를 맘대로 가져다 쓰거나 또는 보안상 회사의 중요한 기술적 가치가 있는 소스를 배포, 판매하는 경우 누군가가 소스를 훔쳐보거나 도용하는 것을 막을 수 있는 방법은 소스코드 자체를 암호화해 버리는 것이 안전합니다. 물론, 복호화가 불가능해야 겠죠? 하지만 모든 보안기술이 그렇듯 누군가가 보호하려고하면 누군가는 풀어 헤치려고 합니다. Adobe(엄밀히 말하면 Macromedia 이전의 Allaire까지 올라갑니다만..)는 Encode 유틸리티만 제공하지, 한번 암호화된 소스를 다시 복호화하는 유틸리티는 제공하지 않습니다. 복호화 유틸리티가 있다면 사실상 암호화 유틸리티 자체가 무의미한 것이 되니까요. 수년전에 cfDecrypt Utility를 만들어 파는 사람도 있었습니다.(http://www.password-crackers.com/crack/cfdecrypt.html)
한가지 중요한 것은 이 cfencode 유틸리는 Adobe ColdFusion만을 위한 암호화 유틸리티이므로 이 유틸리티를 이용해서 암호화한 cfm문서는 BlueDragon(Open BD포함)이나 Railo와 같은 다른 ColdFusion엔진에서는 해석 및 실행이 불가능합니다. 아울러 암호화시 암호화 버전을 1로 선택했다면 ColdFusion 3이전의 버전에서만 해석이 가능합니다. 따라서 반드시 암호화 할때는 버전2로 암호화해야 ColdFusion 4이상의 모든 버전에서 해석이 가능합니다.간단한 예를 가지고 테스트 해 봅시다.
우선 간단한 cfm문서를 하나 만듭니다. 다음과 같은 소스가 있다고 생각합니다. 이 cfm문서를 누군가가 습득하였어도 소스를 볼 때 알아볼 수 없는 소스로 나타내려고 합니다. 물론 ColdFusion서버에서의 실행은 가능하지만요.
sample.cfm
<cfprocessingdirective pageencoding="utf-8">
<cfcontent type="text/html; charset=utf-8">
<cfset setEncoding("URL", "utf-8")>
<cfset setEncoding("Form", "utf-8")>
<cfset myEncryption = "안녕, 콜드퓨전">
<cfoutput>#myEncryption#</cfoutput>
자, 이 소스문서를 암호화 해 봅시다. Windows환경 또는 Linux 환경에서 ColdFusion의 설치경로의 bin디렉토리로 이동합니다. Windows의 경우 기본경로는 C:\ColdFusion9\bin 입니다. Linux나 Solaris의 경우 /opt/ColdFusion9/bin 입니다. Windows라면 시작-실행에서 cmd를 입력하여 도스 커맨드창에서 해당 경로로 이동하는 것 입니다. 우선, 간단하게 cfencode사용법을 알아봅니다. 도스명령어 창에 다음과 같이 입력합니다.
| cfencode.exe ? |
그러면 아래 <그림1>과 같은 간단한 명령구문과 옵션, 설명창이 나타납니다. Allaire란 이름이 반갑네요.

해당 설명대로 명령어를 입력합니다. 다음과 같이 sample.cfm의 경로가 D드라이브안의 sample폴더안에 들어 있다면 같은 경로안에 암호화된 파일을 다음과 같이 만들 수 있습니다.
| cfencode.exe d:\sample\sample.cfm d:\sample\samle_encrypted.cfm /r /q /h myEncrytion /v 2 |
이때 /h 다음의 myEncrytion은 헤더옵션로서 임의로 지정한 문자열입니다. /h 옵션자체가 없어도 됩니다. /v는 버전을 나타내며 숫자2는 버전2로 암호화 하겠다는 이야기입니다. 버전2로해야 ColdFusion 4이상의 서버에서 모두 실행할수 있습니다. 자, 암호화가 끝나면 새로운 sample_encrypted.cfm파일이 생깁니다.이 파일을 드림위버 등에서 열어보면 알 수 없는 말들로 소스를 전혀 알아 볼 수 없습니다. 첨부된 두개의 cfm문서를 비교해 보시길 바랍니다.


|


ColdFusion (61)
Comments