Category Archives: Security

Android 취약점 탐색 자동화를 위한 Jandroid 적용기

안녕하세요. LINE에서 보안 업무를 담당하고 있는 박선주입니다. LINE 보안 팀에서는 릴리스될 서비스와 애플리케이션의 보안 위협을 사전에 발견하여 제품을 더 안전하게 만들기 위해 노력하고 있습니다. 서비스나 애플리케이션을 대상으로 보안 검수를 진행하다 보면, 기존에 보안 이슈가 발생했던 코드와 유사한 패턴을 사용하거나 취약한 패턴의 코드를 재사용하여 취약점이 발생하는 경우가 많습니다. 이처럼 빈번하게 발생하는 보안 이슈를 쉽고 빠르게 탐지하기 위해서 상용 솔루션을 사용하거나 자체적인 도구를 개발하고 있는데요. 이번 포스팅에서는 Android 애플리케이션에서 사용할 수 있는 자동화 취약점 탐색 도구인 Jandroid를 LINE Android 애플리케이션에 적용하여 보안 이슈를 발견한 내용을 공유하고자 합니다.

오크(ORK) – 난독화 컴파일러 도구 2편

안녕하세요. LINE에서 클라이언트 보호 솔루션인 AIR ARMOR 개발을 담당하고 있는 정상민입니다. 지난 1편에선 예제 소스 코드의 컴파일 과정을 살펴보며 난독화가 실행되는 단계를 확인했습니다. 이번 글에선 오크의 난독화가 어떻게 동작하는지 역시 예제 실행 파일을 통해서 살펴보겠습니다.

오크(ORK) – 난독화 컴파일러 도구 1편

안녕하세요. LINE에서 클라이언트 보호 솔루션인 AIR ARMOR 개발을 담당하고 있는 정상민입니다. 이전 글, ‘iOS 코드 서명에 대해서’에서는 심민영 님이 iOS 앱의 무결성과 서명자를 검증할 수 있는 iOS 코드 서명에 대해서 설명했는데요. 이번 글에서는 앱의 위변조 및 도용 방지를 위해서 자체 개발 중인 난독화 도구를 소개하려고 합니다. 예제 소스 코드를 이용해 컴파일러 동작의 각 단계를 확인하면서 난독화가 어떻게 수행되는지 살펴보겠습니다.

iOS 코드 서명에 대해서

안녕하세요. LINE에서 AIR ARMOR 개발을 담당하고 있는 심민영입니다. AIR ARMOR는 LINE GAME PLATFORM 중 하나인 AIR를 구성하는 보안 솔루션 중 하나입니다.

이전 포스팅, ‘AIR GO에 안드로이드 9 APK 서명 scheme v3 적용하기‘에서는 승훈 님이 Android의 서명 구조인 APK Signing에 대해 설명드렸는데요. 저는 이번 포스팅에서 iOS의 보안 구조 중 하나인 ‘코드 서명’에 대해서 설명하려고 합니다. 코드 서명은 파일의 무결성을 검증하고 서명자(개발자)를 확인하는 역할을 합니다. Mach-O 형식의 iOS 바이너리 파일의 무결성을 검증하고 서명자를 확인하는 작업엔 뒤에서 설명할 ‘code signature 구조체’를 이용합니다. 그럼 우선 iOS 코드 서명이 무엇인지부터 먼저 말씀드리겠습니다.

자바 애플리케이션의 보안 검수 방법 살펴보기

안녕하세요. LINE에서 보안 업무를 담당하고 있는 최하늘입니다. LINE은 메신저 이외에도 많은 서비스를 론칭하고 있고 각 서비스는 새로운 기능이 추가되거나 버그가 수정될 때마다 수시로 업데이트됩니다. 보안 팀에선 새로 출시한 서비스나 업데이트한 서비스에 보안 상 문제가 없는지 확인하는데요. 이때 기존 코드에 이미 수행했던 동일한 보안 평가를 서비스에 새로 추가된 코드에 반복적으로 수행해야 하는 경우가 많았습니다. 그래서 보안 팀에선 자주 발견되는 보안 취약점 패턴을 정의하는 등 취약점을 자동으로 탐지해내기 위해 끊임없이 노력하고 있는데요. 이와 더불어 개발자들이 개발 과정에서 취약점을 자동으로 발견할 수 있는 도구를 사용한다면 보안 평가 과정에서 발견되는 보안 이슈가 훨씬 줄어들 수 있을 것입니다. 실제로 이를 위한 오픈소스나 상용 제품이 존재하며 LINE에서도 이를 적용하여 애플리케이션의 보안 이슈를 사전에 제거하려고 노력하고 있습니다. 이번 글에서는 보안 취약점을 자동으로 찾아내는 방법 중의 하나인 정적 분석에 대해서 알아보고, 자바(Java)용 오픈소스 정적 분석 도구인 SpotBugs를 보안 평가에 어떻게 활용할 수 있는지 알아보겠습니다.

AIR GO에 안드로이드 9 APK 서명 scheme v3 적용하기

안녕하세요. LINE에서 AIR GO를 개발하고 있는 김승훈입니다. AIR GO에 대해선 이전에 ‘AIR GO를 소개합니다‘에서 먼저 말씀드렸는데요. 이번 블로그에서는 그에 이어 APK 서명에 관한 내용과 AIR GO 탐지 정보를 소개하고자 합니다. 최근 Google이 Android 9(Pie)에서 APK Signature Scheme v3을 소개했는데요. 이에 관련된 내용을 AIR GO에 적용하면서 개발자에게 도움이 될 만한 부분을 정리한 글입니다.

FIDO at LINE: 패스워드 없는 세상으로의 첫 발걸음

안녕하세요. 오늘은 LINE의 인증서버가 서비스 제공업체로서는 전세계 최초로 FIDO(Fast Identity Online) Universal Server(모든 FIDO 인증 장치와 상호호환성을 보장하는 서버) 인증을 획득한 소식을 전해드리려고 합니다.

안전한 SSL/TLS를 운영하기 위해 알아야 하는 것들

안녕하세요. LINE에서 Security Engineering을 담당하고 있는 이지훈입니다. 제가 속한 팀은 업무 환경과 서비스 환경에서 사용되는 인프라를 더욱 안전하게 만들어가는 업무를 담당합니다. 그 일환으로 SSL/TLS 인증서 관리나 관련 가이드를 제공하는 활동도 하고 있습니다. 대규모 환경에서는 보안은 물론 클라이언트와의 호환성이나 서비스 환경도 고려해야 하는데요. 오늘은 이와 관련된 경험 중 일부를 공유할까 합니다.

TLS는, 브라우저 같은 클라이언트가 공개된 인터넷 망을 통해 웹서버와 커뮤니케이션할 때, 여러 가지 보안 메커니즘을 제공하여 원하는 상대와 안전하게 연결될 수 있도록 도와주는 인터넷 프로토콜입니다. 현재 널리 이용되는 TLS 프로토콜의 기술적인 요건은 RFC 2246(TLS 1.0), RFC 4346(TLS 1.1), RFC 5246(TLS 1.2) 등 링크를 통해 확인하실 수 있는데요. 현재 지속적으로 보안 수준을 높여가고 있습니다. 최근(2018.3.21) Proposed Standard로 정해진 TLS 1.3의 경우 이미 알려진 보안 문제에 대한 대응이 설계에 추가로 반영되었습니다.

대표적으로 HTTP가 SSL/TLS를 이용하여 HTTPS(HTTP over TLS)를 제공하고 있으며, SNMP, FTP 등 다양한 인터넷 프로토콜에서도 SSL/TLS가 쓰이고 있습니다. 본 포스팅에서는 nginx와 같은 웹서버를 이용하여 웹서비스를 제공하는 경우를 가정하고 이에 대한 안전한 설정과 고려 사항에 대해 이야기하고자 합니다.

독자 여러분께서는 각자의 필요에 따라 다음과 같이 본 포스팅을 활용하실 수 있습니다.

  • 기술적인 이해 없이도 설명에 따라 안전한 설정을 하고 싶다. → 포스팅 앞 부분, 바로 이어지는 ‘Step by Step’을 읽어보시기 바랍니다.
  • 내용을 좀 더 이해하고 싶다. → 포스팅 뒷부분까지 전부 읽고, 인용되어 있는 외부 링크나 용어까지 추가로 확인해 볼 것을 권해드립니다.

AIR GO를 소개합니다

AIR GO는 Android와 iOS의 패키지 파일(APK 파일과 IPA 파일)을 스캔하여 취약점을 찾아주는 서비스입니다. 오프소스 툴인 SandDroid를 사용해보신 분이라면 어떤 서비스인지 쉽게 떠올릴 수 있을 것 같습니다. 최근 LINE에서는 앱을 배포하기 전에 AIR GO를 활용하여 취약점을 발견하고 통지함으로써 앱에 포함된 위험을 미리 제거하고 있습니다. 또한 AIR GO는 누구나 간단한 이메일 계정 등록만으로 사용 가능한 서비스입니다. 보안 서비스 ‘AIR’는 이미 한 번 소개된 적이 있는데요. 이번에는 엔지니어의 관점에서 AIR를 구성하는 도구 중 하나인 AIR GO에 대해서 소개드리려고 합니다.

airgo_main