소프트웨어(SW) 보안약점 진단원/구현단계 보안약점 제거 기준
구현단계 보안약점 기준 - 주석문 안에 포함된 시스템 주요정보
브루노W
2025. 6. 3. 21:17
유형 | 보안기능 |
보안약점 | 주석문 안에 포함된 시스템 주요정보 |
개요 |
비밀번호를 주석문에 넣어두면 시스템 보안이 훼손될 수 있다. 소프트웨어 개발자가 편의를 위해서 주석문에 비밀번호를 적어둔 경우, 소프트웨어가 완성된 후에는 제거하는 것이 어렵게 된다.
또한, 공격자가 소스코드에 접근할 수 있다면,아주 쉽게 시스템에 침입할 수 있다.
|
보안대책 |
주석에는 ID, 비밀번호 등 보안과 관련된 내용을 기입하지 않는다.
|
진단방법 |
DB접속, 관리자 로그인 등이 구현된 코드를 확인하고, 주석을 확인하여 암호 포함 여부 확인한다.
|
연관된 설계단계 기준 | 암호키 관리 |
코드예제
● 안전하지 않은 코드 예 (Java)
// 주석문으로 DB연결 ID, 비밀번호의 중요한 정보를 노출시켜 안전하지 않다.
// DB연결 root / a1q2w3r3f2!@
con = DriverManager.getConnection(URL, USER, PASS);
● 안전한 코드 예 (Java)
// ID, 비밀번호등의 중요 정보는 주석에 포함해서는 안 된다.
con = DriverManager.getConnection(URL, USER, PASS);
● 안전하지 않은 코드 예 (C#)
// 주석문으로 DB연결 ID, 비밀번호의 중요한 정보를 노출시켜 안전하지 않다.
//DB연결 root / a1q2w3r3f2!@
conn = customGetConnection(USER, PASS);
● 안전한 코드 예 (C#)
// ID, 비밀번호등의 중요 정보는 주석에 포함해서는 안 된다.
conn = customGetConnection(USER, PASS);
● 안전하지 않은 코드 예 (C)
/* password is "admin" */
/* passwd is "admin" */
int verfiyAuth(char *ipasswd, char *orgpasswd) {
char *admin = "admin";
if(strncmp(ipasswd, oprgpasswd, sizeof(ipasswd)) != 0) {
printf("Authentication Fail!\n");
}
return admin;
}
● 안전한 코드 예 (C)
int verfiyAuth(char *ipasswd, char *orgpasswd) {
char *admin = "admin";
if(strncmp(ipasswd, oprgpasswd, sizeof(ipasswd)) != 0) {
printf("Authentication Fail!\n");
}
return admin;
}
진단방법

DB접속, 관리자 로그인 등이 구현된 코드를 확인하고(①), 주석을 확인하여 암호 포함 여부 확인한다(②).
● 일반적인 진단의 예
…/*
* Password for administrator is "tiger." ·············································②
*/
public Connection DBConnect(String id, String password) {
String url = "DBServer";
Connection conn = null;
try {
String CONNECT_STRING = url + ":" + id + ":" + password;
InitialContext ctx = new InitialContext();
DataSource datasource = (DataSource) ctx.lookup(CONNECT_STRING); ·············①
conn = datasource.getConnection();
} catch (SQLException e) {
System.err.printf("….");
}
…
}
● 정탐코드
public void daoTest() throws Exception {
// db sample : 84d5d0a08a3ec5e2d91a
// 암호화 전, 후 : 1365ADMIN_01, aa84c40031d808196537ad3dcf81f9af
String pwd= "46c165a343fd6841273ae04655af24dd";
String pwd1= ARIAEngine.decARIA(pwd);
System.out.println(pwd1);
}
주석문 안에 개발자의 이해를 돕기 위한 목적 등으로 비밀번호를 적어 놓고 있으므로 취약하다고 판정한다.
● 오탐코드
// 암호화
String Sid = getSessionValue(session, "ihidnum");
Sid = AEScryptWithSaltKey.encode(StrTool.sNN(Sid));
String sIhidnum = Sid;