들어가며
점점 어려워지는 난이도와 떨어지는 집중력 때문에 진도를 많이 나가지 못했다.
오늘의 TIL은 크게 개념적으로 정리 할 내용이 많지 않았으니 CS스터디 중 다루고 싶었던 내용과 백트래킹으로 풀 수 있는 문제를 공부한 내용을 작성해보고자 한다.
컴퓨터 보안
보안 공격
보안 공격하면 많은 사람들이 'DDoS 공격'을 떠올릴 것이다. 나도 정확한 시기는 기억이 나지 않지만 한때 국내에서 DDos 공격이 뉴스에서 자주 언급되어서 알게 됐던 것 같다. 또, 한동안 큰 문제로 부상했던 공격을 꼽으라면 단연 '랜섬웨어'를 말할 수 있다. 그 전까지는 컴퓨터를 자주 사용하지 않는 사람이라면 모를 가능성이 큰 공격이었는데 일반인도 감염되는 사례가 속출하자 뉴스에 본격적으로 다뤄지기 시작하면서 이젠 랜섬웨어를 모르는 사람이 거의 없다고 해도 무방할 정도로 유명한 보안 공격이 되었다.
그 외에도, 보안 공격이 뭔지 몰라도 '스팸'이나 '피싱'은 모르는 사람이 없을 것이다. 공공 와이파이를 사용할 때 주의하라고 당부하는 이유도 이런 보안 공격에 취약하기 때문이다.
가장 최근에 발생한 보안 관련 이슈는 Log4j의 제로데이 보안 취약점 사태이다. 이 사태는 보안 공격 중 하나인 인젝션(Injection)과 매우 밀접한 관련이 있다. 인젝션은 사전적 의미로는 주입, 삽입으로 번역될 수 있고 컴퓨터 보안 분야에서는 공격자가 신뢰할 수 없는 입력을 프로그램에 주입하도록 하는 공격을 말한다.
제로데이란?
컴퓨터 소프트웨어의 취약점을 공격하는 기술적 위협으로, 해당 취약점에 대한 패치가 나오지 않은 시점에서 이루어지는 공격을 말한다.
출처 - 위키백과
그럼 Log4j는 대체 무엇이고, 이게 왜 문제가 됐을까?
Log4j는 간단하게 말하면 Java 혹은 Kotlin, Scala 등등의 언어로 코딩을 할 때, 프로그램의 로그를 기록해주는 라이브러리이다. 나는 Log4j 사태 이후에 개발을 배워서 사용해보지는 않았지만 그 이전까지는 꽤 많은 인터넷 서비스에서 사용하고 있던 라이브러리였다고 한다.
이 Log4j가 문제가 되는 이유는 간단한 문자열을 활용해 원격 코드 실행을 통한 서버 장악이 가능하고, 취약점을 가진 Log4j 라이브러리가 세계적으로 사용되고 있기 때문이다. 게다가 위에서 언급했듯이 패치도 하기전에 공격을 당할 수 있는 '제로데이' 취약점이기 때문에 더욱 문제가 되었다.
Log4j의 취약점은 원리가 간단한데, 해커는 Log4j에서 제공하는 문법인 ${prefix:name} 형식을 가지고 로그가 기록되는 곳을 찾아 특정한 값을 추가하기만 하면 취약점을 이용할 수 있게 된다. 이 값을 넣는 방법은 일반적인 HTTP 헤더일 수도 있고 여러가지 방법이 있다고 하는데, 자세하게 이 취약점으로 해킹이 해보고 싶다면 (하면 안된다) 구글링을 추천한다.
이 내용과 관련해서 노마드코더에서 알기 쉽게 설명해둔 영상이 있으니 한번 봐보는 것도 좋을 것 같다.
애플도 당했다! 최악의 보안사태 "Log4J" 설명해드림. 10분컷.
백트래킹(Backtracking)
백트래킹은 필요없는 경우를 가지치기(pruning)함으로써 시간복잡도를 줄이는 방법이다.
쉽게 말하면, 현재 노드에서 다음 노드로 나아갈 수 있는 모든 경우를 찾되, 원하는 값과 불일치하는 부분이 발생하면 더이상 탐색을 진행하지 않고 전 단계로 돌아가는 알고리즘이다.
백트래킹에 대해 아직 공부가 많이 되지 않아서 가장 유명한 문제인 N-Queen문제를 보면서 공부하자.
문제 풀이
마치며
점점 올라가는 난이도 때문에 집중력과 의욕이 크게 떨어지고 생각이 많아졌다. 갈피를 못잡고 이렇게 우울해하기만 하면 안되겠다 싶어서 가장 가까운 사람과 상담을 했더니 여러가지 조언을 해주었다. 덕분에 다시 원래 하려고 했던 방향성을 다시 다잡고 지금 나한테 필요한 걸 할 수 있도록 마음을 단단히 먹는 계기가 되었다.
일요일은 복습도 예습도 시간을 잘 나눠서 해야겠다.
출처
'Study > TIL' 카테고리의 다른 글
[TIL] 05/24 항해99 16일차 - 이진탐색트리, 문제풀이 (0) | 2022.05.24 |
---|---|
[TIL] 05/23 항해99 15일차 - 트리, 이진 트리, 문제풀이 (1) | 2022.05.24 |
[TIL] 05/20 항해99 12일차 - BFS, DFS vs BFS, 문제풀이 (0) | 2022.05.21 |
[TIL] 05/19 항해99 11일차 - 그래프, DFS (0) | 2022.05.19 |
[TIL] 05/18 항해99 10일차 - 해시 테이블, 문제풀이 (0) | 2022.05.19 |