Skip to content

기글하드웨어기글하드웨어

인터넷 / 소프트웨어 : 윈도우즈, 리눅스, 기타 운영체제, 각종 어플리케이션, 프로그램, 소프트웨어, 인터넷, 인터넷 서비스에 대한 이야기, 소식, 테스트, 정보를 올리는 게시판입니다.

Extra Form
참고/링크 https://security.googleblog.com/2021/04/...tform.html

꽤 인상적인 블로그가 올라왔네요.

 

요약하자면 안드로이드의 C/C++ 메모리 보안 취약점은 고위험 취약점의 70%을 차지하고 인적, 경제적 비용이 많이 들고 있다고 설명했습니다. 그리고 AOSP는 이제 메모리 안전 언어로 코틀린/자바외에 Rust언어를 추가한다고 공지했네요.

 

이하 구글 번역(+수정)

 

- 시스템 프로그레밍

 

Java 및 Kotlin과 같은 관리 언어(역주: 자동 메모리 관리 언어)는 Android 앱 개발을위한 최상의 옵션입니다. 이러한 언어는 사용 용이성, 휴대 성 및 안전을 위해 설계되었습니다. Android 런타임 (ART)은 개발자를 대신하여 메모리를 관리합니다. Android OS는 Java를 광범위하게 사용하여 Android 플랫폼의 상당 부분을 메모리 버그로부터 효과적으로 보호합니다. 불행히도 OS의 하위 계층의 경우 Java 및 Kotlin은 옵션이 아닙니다. 

 

image.png

 

로우 레벨 OS에는 C, C ++ 및 Rust와 같은 시스템 프로그래밍 언어가 필요합니다. 이러한 언어는 제어 및 예측 가능성을 목표로 설계되었습니다. 저수준 시스템 리소스 및 하드웨어에 대한 액세스를 제공합니다. 리소스가 적고 예측 가능한 성능 특성이 있으며 C 및 C ++의 경우 개발자가 메모리 수명 관리를 담당합니다. 불행히도, 특히 복잡하고 다중 스레드 코드베이스에서이 작업을 수행 할 때 실수하기 쉽습니다. 

 

Rust는 메모리 액세스가 유효한지 확인하고 객체 수명 / 소유권 및 런타임 검사를 시행하기 위해 컴파일 시간 검사의 조합을 사용하여 메모리 안전 보장을 제공합니다. 이러한 안전성은 C 및 C ++와 동등한 성능을 제공하면서 달성됩니다.

 

 

- 샌드박스의 한계

 

C 및 C ++ 언어는 이와 동일한 안전 보장을 제공하지 않으며 강력한 격리가 필요합니다. 모든 Android 프로세스는 샌드 박스 처리되며, 기능에 추가 격리 및 박탈이 필요한지 여부를 결정하기 위해 규칙 2를 따릅니다. 2의 규칙은 간단합니다. 세 가지 옵션이 주어지면 개발자는 다음 세 가지 옵션 중 두 가지만 선택할 수 있습니다.

 

image.png

Android의 경우 이는 코드가 C / C ++로 작성되고 신뢰할 수없는 입력을 파싱하는 경우 엄격하게 제한되고 권한이없는 샌드박스 내에 포함되어야 함을 의미합니다. Rule of 2를 준수하면 보안 취약성의 심각도와 악용 가능성을 줄이는 데 효과적이지만 제한이 있습니다. 샌드 박싱은 비용이 많이 듭니다. 필요한 새 프로세스는 추가 오버 헤드를 소비하고 IPC 및 추가 메모리 사용으로 인해 대기 시간을 발생시킵니다. 샌드 박싱은 코드에서 취약점을 제거하지 않으며 높은 버그 밀도로 인해 효율성이 감소하여 공격자가 여러 취약점을 함께 연결할 수 있습니다. Rust와 같은 메모리 안전 언어는 두 가지 방법으로 이러한 한계를 극복하는 데 도움이됩니다.     

 

1)코드 내의 버그 밀도를 낮추어 현재 샌드 박싱의 효율성을 높입니다.    

2)샌드 박싱 요구 사항을 줄여 리소스에 대해 더 안전하고 가벼운 새로운 기능을 도입 할 수 있습니다.

 

-중략-

 

- 예방 우선 

 

Rust는 다양한 다른 언어 특징을 현대화하여 코드의 정확성을 향상시킵니다.     

 

1.메모리 안전성- 컴파일러와 런타임 검사의 조합을 통해 메모리 안전성을 강화합니다.

    

2. 데이터 동시성- 데이터 경합을 방지합니다. 이를 통해 사용자가 효율적이고 스레드로부터 안전한 코드를 쉽게 작성할 수있게되면서 Rust의 Fearless Concurrency(두려움 없는 동시성) 슬로건에 부합합니다.

    

3. 보다 표현적인 유형 시스템- 논리적 프로그래밍 버그 (예 : newtype 래퍼, 내용이있는 열거 형 변형)를 방지합니다.     참조 및 변수는 기본적으로 변경 불가능합니다. 개발자가 최소 권한의 보안 원칙을 따르고 실제로 의도 한 경우에만 참조 또는 변수를 변경 가능하도록 표시하도록 지원합니다. C ++에는 const가 있지만 자주 사용되지 않고 일관성없이 사용되는 경향이 있습니다. 이에 비해 Rust 컴파일러는 결코 변경되지 않는 변경 가능한 값에 대한 경고를 제공하여 잘못된 가변성 주석을 방지하는 데 도움을줍니다.    

 

4. 표준 라이브러리에서 더 나은 오류 처리- Result에서 잠재적으로 실패한 호출을 래핑하여 컴파일러가 필요한 값을 반환하지 않는 함수에 대해서도 사용자가 실패를 확인하도록 요구합니다. 이는 처리되지 않은 오류로 인해 발생하는 Rage Against the Cage 취약점과 같은 버그로부터 보호합니다. ?연산자를 통해 오류를 쉽게 전파 할 수 있습니다. 운영자와 낮은 오버 헤드를 위해 결과를 최적화하는 Rust는 사용자가 오류가있는 함수를 동일한 스타일로 작성하고 동일한 보호를 받도록 권장합니다.    

 

5. 초기화- 사용하기 전에 모든 변수를 초기화해야합니다. 초기화되지 않은 메모리 취약점은 역사적으로 Android 보안 취약점의 3-5 %의 근본 원인이었습니다. Android 11에서는이 문제를 줄이기 위해 C / C ++에서 메모리를 자동 초기화하기 시작했습니다. 그러나 0으로 초기화하는 것이 항상 안전하지는 않습니다. 특히 반환 값과 같은 경우 잘못된 오류 처리의 새로운 원인이 될 수 있습니다. Rust는 사용하기 전에 모든 변수를 해당 유형의 유효한 멤버로 초기화하여 의도하지 않게 안전하지 않은 값으로 초기화하는 문제를 방지해야합니다. C / C ++ 용 Clang과 유사하게 Rust 컴파일러는 초기화 요구 사항을 인식하고 이중 초기화의 잠재적 인 성능 오버 헤드를 방지합니다.    

 

6. 더 안전한 정수 처리- 기본적으로 Rust 디버그 빌드에 대해 오버플로 삭제 기능이 설정되어있어 프로그래머가 실제로 오버플로를 계산하려는 경우에는 Wrapping_add를 지정하고 그렇지 않은 경우에는 saturating_add를 지정하도록 권장합니다. Android의 모든 빌드에 대해 오버플로 삭제를 활성화하려고합니다. 또한 모든 정수 유형 변환은 명시적 형변환입니다. 개발자는 변수에 할당 할 때 또는 다른 유형으로 산술을 시도 할 때 함수 호출 중에 실수로 형변환 할 수 없습니다.

 

- 다음 계획

 

Android 플랫폼에 새로운 언어를 추가하는 것은 큰 작업입니다. 유지 관리해야하는 툴체인 및 종속성, 업데이트해야하는 테스트 인프라 및 도구, 교육을 받아야하는 개발자가 있습니다. 지난 18 개월 동안 우리는 Android 오픈 소스 프로젝트에 Rust 지원을 추가했으며 앞으로 몇 달 동안 공유 할 얼리 어답터 프로젝트가 몇 개 있습니다. 이를 더 많은 OS로 확장하는 것은 다년간의 프로젝트입니다. 이 블로그에 더 많은 업데이트를 게시 할 예정입니다. 

 

 



  • profile
    엠폴 2021.04.15 14:55
    글 쓰는 도중에 블로그에서 구글이 Rust를 리눅스 커널에 추가하는 작업에 도움을 주고 있다고 언급했습니다.
    출처: https://security.googleblog.com/2021/04/rust-in-linux-kernel.html
  • ?
    치킨코테지 2021.04.15 14:56
    퓨시아에도 러스트가 approved되었죠.
    고랭은 그저 지못미....
  • profile
    엠폴 2021.04.15 17:32
    제가 알기론 Go는 하이레벨 프로그래밍에서 많이 쓰인다고 하네요.
    꽤 간단하고 외우기 쉬워서요.
  • ?
    고슴도치 2021.04.15 23:32
    BPF 쪽에서는 이미 고랭이 적용된 사례가 있어요. 물론 고랭은 그보단 하이레벨이 주류긴 하지만요.
  • ?
    치킨코테지 2021.04.16 00:27
    넹....퓨시아도 로우레벨 네트웤 부분은 고랭으로 짰지염. 바꾸고 싶은데 힘들어서 안바꾸고 그냥 쓴다고...데노도 Go를 기반으로 작성했다가 러스트로 바꾸고...1.17때 제레릭이 나와도 그닥 인기가 많아질 것 같지는 않습니당...저잘쓰긴 하지만ㅠ
  • ?
    고슴도치 2021.04.16 02:02
    인기가 없다고 하기엔 이미 너무 커진거 같습니다. 인프라쪽은 이제 고랭없으면 유지가 안되는 수준이에요.
    러스트는 성장가능성은 크지만, 반대로 지금당장 없어져도 큰 문제는 없다는게 현실이고요. ㅠ

    그래도 요즘 추세를 보면
    커널-러스트, 인프라-고랭, 애플리케이션-기타등등
    요 구도로 갈꺼같다는 생각이 드네요.
  • profile
    엠폴 2021.04.16 12:44
    모질라가 rust 개발자들 해고한 이후 아마존이 대부분의 개발자를 고용하고 rust에 적극적 지원을 약속을 했기 때문에 쉽게 망하진 않을 거라 보고 있습니다.
    출처: https://aws.amazon.com/ko/blogs/opensource/why-aws-loves-rust-and-how-wed-like-to-help/
  • profile
    title: 컴맹칼토로스 2021.04.15 18:30
    이러면 c/c++도 레거시 언어로 밀려나는 건가요
    몇년 뒤면 rust가 로우레벨 주력 언어로 되는 건가
  • profile
    엠폴 2021.04.15 18:45
    안드로이드는 년단위 장기 계획으로 가고 있고. 리눅스쪽은 신규 드라이버등 리눅스 커널 코어 부분외에 새로운 기능들에 한하여 rust가 적용됩니다. 아무래도 수천만줄의 코드를 쉽사리 바꾸지 못하죠.

    근데 언어를 바꾸는데 엄청난 비용과 시간이 드는데도 실행하는 것은 그만큼 c/c++의 메모리 관리가 힘들다는 것이겠죠.
  • ?
    title: 가난한아이들링 2021.04.15 21:02
    파이어폭스가 낳았던 자식이 파이어폭스보다 더 잘나가는 느낌이군요
  • profile
    엠폴 2021.04.15 22:45
    저도 그렇게 생각합니다.
  • profile
    ForGoTTen      결제중.... 2021.04.15 21:09
    사실 시스템의 최하위 부분은 네이티브 코드가 필요하니...
    다른 언어들이 날고 긴다고 해도... 결국 최하위 단에는 OS와 연결시켜줄 네이티브단이 필요하죠.

    지금까지는 C/C++에게 전담시켰던 부분들도... 시대에 변화에 맞춰서 바뀌어야 한다는건 모두가 동의하나...
    누가 바통을 이어받을지는....
  • profile
    엠폴 2021.04.15 22:46
    가장 스트레스 쌓이는 메모리 보안 취약점을 근본적으로 해결하는게 엄청나게 크죠.
    컴파일 단계에서 메모리 버그를 잡아주니 얼마나 편리하겠어요.

작성된지 4주일이 지난 글에는 새 코멘트를 달 수 없습니다.


  1. No Image

    KT '기가인터넷' 논란…내부 양심고백 "더 큰 문제 있다"

    KT서비스 직원 A씨는 19일 아시아타임즈와의 통화에서 "KT는 단기간 빠르게 가입자를 늘리고자, 기가 인터넷을 사용할 수 없는 곳에도 기가 상품으로 개통해왔다"고 폭로했다. 또 다른 직원 B씨 역시 "다가구 건물 1층 상가는 거의 다 전...
    Date2021.04.19 소식 By낄낄 Reply24 Views2527
    Read More
  2. PDF 개발자 Charles Geschke 별세

      존 워녹(John Warnock)과 1982년 Adobe Systems를 창업하였으며 텍스트와 이미지 인쇄에 커다란 혁신을 일으킨 PostScript를 발표하였습니다. 그 후 전 세계인들의 문서 표준으로 자리 잡은 PDF를 1993년에 발표하였습니다.   1986년...
    Date2021.04.19 소식 By포도맛계란 Reply8 Views1084 file
    Read More
  3. KT 인터넷에서 제 속도가 나오지 않을 때 해결하기

    요새 말 많은 KT 인터넷인데, 이런 짤이 돌아다니는군요. 해당 페이지 가장 아래의 '사용중인 부가서비스'를 눌러야 합니다. KT 홈페이지로 바로가기가 아니라요. KT가 괜히 막지 않을까 생각도 드네요.
    Date2021.04.19 일반 By낄낄 Reply1 Views1066 file
    Read More
  4. No Image

    브라우저 추천해주세요

    웹에서 위 링크의 글을 봤는데 어느 브라우저가 보안이 더 강력한가요? 둘은 어떤 부분에서 차이가 있나요?
    Date2021.04.19 질문 ByKAYNE Reply6 Views512
    Read More
  5. No Image

    Vocie, NFT 소셜 플랫폼으로 업그레이드

    해외 소셜 네트워크 서비스인 보이스(Voice)가 NFT(Nonfungible tokens)를 거래할 수 있는 플랫폼으로 바귑니다. NFT는 디지털 컨텐츠를 토큰으로 삼아 블럭 체인을 통해 거래하는 것입니다. 설명은 대출 여기서 보시고 https://terms.nav...
    Date2021.04.18 소식 By낄낄 Reply0 Views333
    Read More
  6. 구글 90의 새로운 기능

    구글 크롬 90의 새로운 기능입니다. 웹 페이지의 텍스트를 선택하고 우클릭하면 Copy link to highlight가 뜹니다. 이걸로 복사된 링크를 열면 해당 부분이 강조된 채로 열립니다. 각 탭마다 원하는 이름을 붙일 수 있게 됐습니다. 탭 표...
    Date2021.04.17 소식 By낄낄 Reply2 Views963 file
    Read More
  7. No Image

    구글어스 Timelapse 3D 기능 추가

    구글어스에 Timelapse 기능의 3D 버전이 추가됐습니다. Timelapse는 1984년부터 2020년까지 37년 동안 지구가 어덯게 변화했는지를 보여주는 기능인데, 이제는 그걸 3D로 볼 수 있게 됐습니다. 2400만장의 위성 사진, 20PB의 데이터를 구...
    Date2021.04.17 소식 By낄낄 Reply4 Views484
    Read More
  8. No Image

    CPU-Z에서 알더레이크와 600 시리즈 칩셋 지원

    CPU-Z 1.96 버전에서 인텔 알더레이크, 600 시리즈 칩셋, DDR5 메모리를 지원합니다. 또 AMD 라이젠 5000G 시리즈 APU, 라데온 RX 6000 시리즈 그래픽카드의 지원도 추가됐습니다.
    Date2021.04.17 소식 By낄낄 Reply1 Views319
    Read More
  9. No Image

    인텔 11세대 윈도우 설치 디스크가 보이지 않음 문제

    11세대 인텔부터는 기본적인 방법으론 윈도우가 안깔리네요... 오늘 처음 알았습니다. 뭐 대충 usb 꼽고 부팅순서 바꿔주고 하는데 안되길래 뭐지...?하고 보니까 윈도우에서 ssd를 인식을 못하는 겁니다. . . . . . 알고보니까 인텔 11세...
    Date2021.04.16 분석 By240Hz Reply7 Views2212
    Read More
  10. 삼성 TV 플러스 이거 좋네요?

      새 어플이 나와서 설치 해봤습니다 티비는 잘 안보지만 가끔 필요 할 때가 있는데 무료로 라이브 시청이 가능하네요     채널도 나름 다양 합니다 전 스포티비가 있어서 가장 좋네요.   그리고 일단은 무료입니다   마지막으로 혹시 몰...
    Date2021.04.16 소식 By급식단 Reply4 Views1554 file
    Read More
  11. No Image

    패러럴즈 데스크탑, 애플 M1을 공식 지원

    패러럴즈 데스크탑 16.5 버전에서 애플 M1과 인텔 프로세서를 모두 지원합니다. 이걸로 맥에서 윈도우 10을 (패러럴즈의 주장에 의하면) 원활하게 실행할 수 있습니다. 애플 M1 맥은 인텔 맥북 에어보다 소비 전력이 250% 작고 다이렉트 X...
    Date2021.04.16 소식 By낄낄 Reply1 Views735
    Read More
  12. No Image

    구글 크롬 90 발표, AV1 인코디 지원, https가 자동으로 붙음

    구글이 크롬 v90.0.4430.72를 발표했습니다. WebRTC에서 AV 인코더를 쓸 수 있고, 주소 표시줄에 url을 스면 https://가 아니라 https://가 자동 완성으로 붙습니다. 다만 위 기능들은 대부분 베타 버전에서 이미 추가된 것들입니다. 그리...
    Date2021.04.16 소식 By낄낄 Reply1 Views711
    Read More
  13. No Image

    [유투브/영어] 리눅스 서버 보안 설정법에 대한 미신 - LiveOverFlow

      독일계 보안 연구자 (겸 유튜버) 인 LiveOverFlow 님께서 리눅스 서버 보안 설정법 - ssh 암호/포트 설정법 등 - 에 대한 미신들을 debunk하는 영상입니다. 언어는 영어입니다.   세세한 의견은 사람에 따라 다를 수 있겠으나.. 전반적...
    Date2021.04.16 일반 ByPHYloteer Reply2 Views611
    Read More
  14. Rust 언어의 안드로이드 플렛폼 이식

    꽤 인상적인 블로그가 올라왔네요.   요약하자면 안드로이드의 C/C++ 메모리 보안 취약점은 고위험 취약점의 70%을 차지하고 인적, 경제적 비용이 많이 들고 있다고 설명했습니다. 그리고 AOSP는 이제 메모리 안전 언어로 코틀린/자바외에...
    Date2021.04.15 소식 By엠폴 Reply13 Views1869 file
    Read More
  15. No Image

    FreeBSD 13 공식 릴리즈

          FreeBSD 13이 공식 릴리즈 되었습니다.   변경점은 다음과 같습니다.   clang, lld, lldb 유틸리티 및 compiler-rt, llvm, libunwind, llbc++ 라이브러리가 버전 11.0.1로 판올림 되었습니다. /usr/libexec에 설치되었던 구형 버전...
    Date2021.04.14 소식 By헥사곤윈 Reply5 Views965
    Read More
목록
Board Pagination Prev 1 ... 273 274 275 276 277 278 279 280 281 282 ... 579 Next
/ 579

AMD
더함
한미마이크로닉스
MSI 코리아

공지사항        사이트 약관        개인정보취급방침       신고와 건의


기글하드웨어는 2006년 6월 28일에 개설된 컴퓨터, 하드웨어, 모바일, 스마트폰, 게임, 소프트웨어, 디지털 카메라 관련 뉴스와 정보, 사용기를 공유하는 커뮤니티 사이트입니다.
개인 정보 보호, 개인 및 단체의 권리 침해, 사이트 운영, 관리, 제휴와 광고 관련 문의는 이메일로 보내주세요. 관리자 이메일

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소