Upgrade to Pro — share decks privately, control downloads, hide ads and more …

쇼생크 (못)탈출: 폐쇄망에서의 AI 개발 및 서비스-성대현

쇼생크 (못)탈출: 폐쇄망에서의 AI 개발 및 서비스-성대현

Lablup Inc.

November 27, 2024
Tweet

More Decks by Lablup Inc.

Other Decks in Technology

Transcript

  1. 연사 소개  성대현(Daehyun Sung) o 래블업 소프트웨어 엔지니어 |

    DevOps o 오픈소스 관련 10년 이상 컨트리뷰션 경력  KDE kcharselect, GNOME gucharmap, GNOME character LibreOffice, etc o LibreOffice Membership o GNOME Foundation Member o openSUSE Asia Committee Member o Expired CISA(Certified Information Systems Auditor) certification(2014-2020)
  2. 고객의 데이터는 중요합니다  중요한 데이터가 탈출할 수 없게 하려면

    단절망(Air-gapped)환경이 필요함  단절망(air-gapped)환경 구축을 하면 핵심 데이터(민감 및 기밀유지) 유출방지가 용이하게 됨 – 데이터 보안 강화, 규제 준수 – 그러나 ML/AI의 많은 패키지는 여러 외부 패키지를 참조해야 함 – 즉, 단절망(air-gapped)에서 패키지 반입이 필요
  3. Air-gapped 환경이란?  네트워크로부터 완전히 분리된 컴퓨팅 시스템 – 민감한

    데이터의 보호 – 데이터 유출 방지 – 외부 위협으로부터의 보호
  4. Air-gapped 환경의 도전 과제  인터넷 연결 없음 – 수

    많은 라이브러리와 패키지를 인터넷 환경으로 접근 할 수 없으니 많은 제약이 생김 – 데이터가 탈출을 못하나, 데이터를 활용한 AI/ML/LLM구축을 위한 라이브러리, 패키지를 구할 수 없는 단점  패키지 반입 문제 – 필요한 라이브러리나 패키지를 가져오는 과정이 까다로움 – 패키지가 대용량인 경우가 많음 예) pypi (2024.09.11. 22.9TB, 용량이 계속 늘어남) https://pypi.org/stats/ – 검증된 패키지만 반입해야 하므로 보안 검수 절차 필요함
  5. 기업 및 정부의 오픈소스 채택 바람  기업 및 정부에서

    오픈소스 소프트웨어 채택 – 비용절감: 무료로 사용할 수 있어 라이선스 비용을 크게 절감 가능 – 벤더 종속성 감소: 특정 업체에 종속되지 않고 다양한 옵션을 선택할 수 있어 유연성이 높아짐 – 기술 혁신: 오픈소스를 통해 최신 기술에 쉽게 접근 할 수 있고, 혁신을 촉진할 수 있음 – 커스터마이징 용이성: 소스코드가 공개되어 있어 필요에 따라 수정하고 확장할 수 있음 – 보안(Security)과 투명성(Transparency): 소스코드가 공개되어 보안 취약점을 쉽게 식별하고 수정할 수 있음  실제 사례 – 기업사례: IBM, MS, Google, Meta Microsoft loves open source https://pulse.microsoft.com/nl-nl/transform-nl-nl/na/fa1-microsoft-loves- open-source/ – 정부사례: 유럽연합은 "EU 오픈소스 소프트웨어 전략2020-2023"을 수립하여 오픈소스 활용을 정책적으로 장려 https://ec.europa.eu/info/sites/info/files/en_ec_open_source_strategy_2020-2023.pdf
  6. 오픈소스의 보안 취약점  예제1) openSSL HeartBleed (CVE-2014-0160) – 2014년도에

    나온 openSSL버그 OpenSSL 취약점 하트블리드(HeartBleed), 왜 위험한가? https://blog.alyac.co.kr/76  예제2) XZ Utils – 무손실 압축 라이브러리 (CVE-2024-3094) – Jia Tan이라는 사람이 xz-utils의 메인테이너가 된 후 백도어(Backdoor)를 심음 – 오픈소스 프로젝트의 컨트리뷰터의 결과물을 기업에서 신뢰할 수 있을까? – 코드 기여자의 신뢰성을 보장하기 어려운 경우가 있음  Ubuntu의 Security 알림 – https://ubuntu.com/security/notices – Xz-utils의 보안취약점 설명(CVE-2024-3094) § https://ubuntu.com/security/CVE-2024-3094
  7. 단절망(Air-gapped)환경에서도 해킹 당할 수 있음  스턱스넷(Stuxnet) – 2010년 6월에

    발견된 웜바이러스 – 이란의 나탄즈(Natanz) 핵시설 – 외부 인터넷과 완전히 차단된 단절망 환경으로 운영함 – 공격 방법: USB메모리 스틱을 통한 침투 – 이란의 핵 개발 속도를 상당히 늦췄고, 많은 원심분리기가 물리적으로 손상됨 – 단절망 환경에서도 물리적 매체(USB)와 고도의 정교한 악성코드를 통해 공격이 가능함을 보여줌 – Wikipedia: https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%84%B1%EC%8A%A4%EB%84%B7  단절망 환경에서 보안 이슈 – 물리적 보안의 중요성 단절망은 외부로부터 시스템을 보호할 수 있지만, 물리적 보안이 취약할 경우 외부 매체를 활용하면 뚫릴 수 있음 내부 시스템에 대한 보안 강화 필요
  8. Pypi 저장소 관련 보안 문제  Pypi(Python Package Index) –

    https://pypi.org/ – 누구나 쉽게 패키지를 업로드 할 수 있음 특정 사용자가 악의적인 목적으로 악성 코드를 배포할 수 있는 위험성 존재 – Pypi패키지에서 보안 검사와 모니터링을 강화하고 있지만 여전히 실존하는 위험 – 지속적인 주의와 관리가 필요
  9. Pypi 저장소의 보안 문제 사례(1)  실제 사례: aiotoolsbox (현재

    삭제됨) – Detecting Malicious Packages on PyPI: Malicious package on PyPI use phishing techniques to hide its malicious intent https://blog.checkpoint.com/2023/03/18/detecting-malicious-packages-on-pypi-malicious-package-on- pypi-use-phishing-techniques-to-hide-its-malicious-intent/ – 피싱 기법을 이용하여 악성코드를 숨기고 있음
  10. Pypi 저장소의 보안 문제 사례(2)  pycryptoconf – 북한 해커그룹

    라자루스 그룹에서 만든 패키지 (현재 삭제됨) – New Malicious PyPI Packages used by Lazarus https://blogs.jpcert.or.jp/en/2024/02/lazarus_pypi.html – pycryptoconf-1.0.6.tar.gz sha256 hash: 956d2ed558e3c6e447e3d4424d6b14e81f74b63762238e84069f9a7610aa2531 – Virustotal: https://www.virustotal.com/gui/file/956d2ed558e3c6e447e3d4424d6b14e81f74b63762238e84069f9a 7610aa2531 – V3 검사 결과
  11. Pypi 저장소의 악성 코드 탐지 예  Pypi 저장소에서 악성

    코드가 탐지된 패키지의 예 o 대다수는 악성코드를 탐지하고 분석하는 패키지, 해킹툴(Hacking tools) 관련 패키지  Cuckoo, androbane o 오탐(False Positive)의 경우도 존재함 o 실제 악성코드가 탐지되어 "yanked" flag가 붙은 사례 (pypi.org에서 다운로드는 가능함)  py7zr
  12. Clamav로 악성코드 의심으로 탐지되는 목록  Packages of which clamscan

    thinks they contain malicious files o https://gist.github.com/MartinThoma/1a1ee801854bad6b169ca1fc732d825a#file-clamscan- csv-L1
  13. 고객사에 Repository 반입하는 절차  고객사에 Repository를 반입  용량이

    크기 때문에 DVD, 하드디스크 반입 혹은 인터넷망(VPN등)으로 반입  검수 과정 (백신 검사)  DVD, 하드디스크 반입 후, 보안을 위해 사용 완료한 하드디스크 혹은 DVD 파쇄
  14. Backend.AI Reservoir의 실제 사례  Baceknd.AI Reservoir의 반입 절차 o

    일반적인 사이트 반입  인터넷망으로 사이트 담당자에게 Repository 반입  고객사이트에서 보안 검토 완료 후 사이트 내로 반입  고객사 내 Backend.AI session 및 개발PC에서 Reservoir 저장소 사용 o 완전 단절망(Air-Gapped Network) 업데이트  외부망과의 직접 연결 지양  Update 파일 공유 후 고객사 인력에 의해 내부 반입 진행(담당자가 직접 검사 진행)  지정한 특정 위치에 해당 업데이트 파일을 넣으면 Reservoir 업데이트 적용  고객사 내 Backend.AI session 및 개발PC에서 Reservoir 저장소 사용
  15. Backend.AI Reservoir의 실제 사례  기본적으로 Read-only media 반입 요청

    o 조건을 만족하는 media의 종류:  DVD  Blu-ray  DVD의 문제점 o DVD 반입 시 미디어 용량의 한계 o DVD 싱글레이어: 4.7GB  DVD 듀얼레이어: 8.5GB o 경우에 따라 Reader 기기 특성을 타는 경우도 있음 o + 굽기 힘듬  Blu-ray 반입 시 Reader 기기가 보급되어 있지 않음 o 용량 상으로는 25GB를 기본으로 300GB 까지 가능하므로 괜찮음 o 백신 검사를 통과해야 하기에, Reading 속도가 제대로 나오지 않음 o 고객사에 Reader 기기가 보급되지 않은 경우도 있었음
  16. Disk 반입  대용량의 경우 반입할 수 있도록 예외 처리

    가능 o 반출이 불가능하고 폐기하거나 (이 경우에도 고객사 정책에 따라 검사) o 또는 반입 반출 시 변경사항이 있는지 검사 (고객사 정책에 따라 결정)  검사에 보통 Windows PC를 사용하기 때문에 일부 제약이 존재함 o Windows에서 인식할 수 있는 Filesystem이어야 함 o 검사 전후에 Linux server에서 읽고 쓸 수 있는 Filesystem이어야 함 o 이 조건을 만족시키면서 10GB 이상의 대용량 파일을 담을 수 있어야 함 o 반입 Disk는 TB 용량 o 위 조건을 만족하는 Filesystem은 exFAT
  17. 고객사 보안 검사 (백신 검사)  검사 시스템 o OS는

    보통 Windows o 백신  보통 V3  200MB까지의 압축 파일만 지원함.  V3보다 더 큰 압축 파일 검사를 지원하는 알약 o 백신 검사 때문에 압축 파일을 원형 그대로 유지하여 반입하기 어려움  압축 버전과 압축 해제 버전을 두 벌 반입  다음은 repository에 들어 있는 대표적 압축 file o .tar, .tar.*, .deb, .zip, .whl  경우에 따라서 소유자 및 권한을 유지하면서 개별적으로 압축 해제가 되는 200MB 이하의 압축 파일로 나눴다가 원상복원해야 함.
  18. exFAT 와 Disk 용량 최적화  Repository에 담겨 있는 파일은

    작은 크기의 파일이 대부분임  exFAT은 큰 파일을 담기는 좋으나, 작은 파일을 많이 담기에는 적합하지 않음 o Disk 용량을 거의 못 쓰기도 함.  1TB 정도의 block device에서 exFAT으로 포맷 후 1 byte를 쓰는 파일을 100,000개 만들어 보면 약 13GB 용량을 차지함  200MB 이하로 개별 압축 해제 가능한 압축 파일을 만들어 반입 ~/work/mnt $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 976.6G 0 loop /home/test/work/mnt ~/work/mnt $ ls target | wc -l 100000 ~/work/mnt $ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/loop0 1024000000 12843648 1011156352 2% /home/test/work/mnt 12,843,648 / 100,000 = 128.43648 (KB) *계산 상 개당 128KB, wikipidia는 Win10기준 기재하고 ​AB로 설명 ** ext4는 16TB까지 4KiB block size(cluster size) 로 지원
  19. Backend.AI Reservoir  Backend.AI 클러스터 내부/외부를 대상으로 한 독립 패키지

    저장소 및 업데이트 서비스 – 로컬 패키지 저장소 서비스 격리된 네트워크 내 올인원 오프라인 서비스 구축 패키지의 악성코드 검사 후 반입을 하여 검증이 가능 패키지 저장소 캐시 서비스로 네트워크 트래픽 절약 – 지원 가능 패키지 저장소 Ubuntu centos-stream cran conda pypi
  20. 결론  폐쇄망(Air-gapped) 환경에서의 AI/ML, LLM 구축 시 Repository 구축에

    꽤 많은 시간과 인력이 필요  Pypi의 예를 보아도 폐쇄망 환경에서 Repository의 패키지 반입을 할 때 패키지 검증이 필수적  신뢰할 수 없는 패키지를 반입할 경우, 악성코드로 인해 폐쇄망 시스템의 보안이 무너질 수 있음  고객의 핵심 역량에 집중하기 위해 Backend.AI Reservoir가 좋은 대안이 될 것
  21. Miscellaneous  Pypi 악성 패키지 신고 – PyPI Blog: "Malware

    Reporting Evolved" (2024-03-06) https://blog.pypi.org/posts/2024-03-06-malware-reporting-evolved/ – V3, clamav에서 탐지한 패키지를 직접 신고하였음 “Report project as malware” pypi.org의 패키지 프로젝트 하단에 위치 - 로그인해야 보임 그러나, 신고후에 반려됨 단순히 패키지의 악성코드 분석으로는 오탐(False Positive)의 가능성이 있기 때문에, 추가 지표 알려야 한다며 반려