Stack Overflow에서 가장 많이 사용되는 Java 코드 조각에 오류가 있습니다.

자바

출판 된 연구 2018 년 XNUMX 월 경험적 소프트웨어 공학 잡지에서 학계 Sebastian Baltes와 Stephan Diehl 제공된 코드 스 니펫이 질문에 대한 답변 Andreas Lundblad의 2010 년 XNUMX 월 스택 오버플로, Palantir의 Java 개발자, 커뮤니티 플랫폼에서 가장 널리 사용되는 Java 코드 조각입니다.

그러나, 지난주 게시물에서 Lundblad는 코드에 결함이 있으며 바이트 수를 잘못 변환하고 있다고 설명했습니다. 사람이 읽을 수있는 형식으로. 문제의 코드는 천 개가 넘는 권장 사항을 축적했으며 많은 프로젝트에도 포함되었으며 GitHub의 저장소에 약 7 천 번 있습니다.

주목할만한 것은 사용자가 오류를 찾지 못했습니다. 프로젝트에서이 코드를 사용한 하지만 팁의 원저자에 의해.

고려 된 코드는 읽을 수있는 형식으로 바이트 크기를 변환했습니다. 예를 들어 110592는 "110.6kB"또는 "108.0KiB". 이 코드는 로그를 사용하여 최적화 된 이전에 제안 된 조언의 변형으로 제안되었습니다. 여기서 값은 루프의 초기 값을«10 18, 10 15, 10 12, 10 19, 10 6, 10 3 및 10 ″ , 제수가 원래 값 (바이트)보다 큰 경우에도 마찬가지입니다.

최적화 된 버전의 부정확 한 계산으로 인해 (긴 값 오버플로), 매우 많은 수를 처리 한 결과 (엑사 바이트) 현실과 일치하지 않았습니다.

Lundblad는 코드에 약간의 부정확 한 파일 크기 추정을 가져 오는 사소한 변환 오류가 포함되어 있다고 설명했습니다. 즉, 그보다 훨씬 더 나쁠 것으로 추정됩니다.

코드에 보안 취약점이있을 수 있습니다.예를 들어. 그렇다면 취약한 모든 애플리케이션을 복구하여 사용자를 공격에 노출시키는 데 수개월 또는 수년이 걸렸을 것입니다.

조언의 저자는 또한 문제에 대한 관심을 끌기 위해 노력했습니다. 소스를 참조하지 않고 라이센스를 지정하지 않고 예제를 사용합니다.

“여러 사람이 참여하는 공동 작업 세션에서 우리는 CWE (Common Weakness Enumeration) 지침에 따라 보안 취약성에 대해 각 코드를 수동으로 평가했습니다.

최소한 하나의 GitHub 호스팅 프로젝트에서 사용 된 72,483 개의 스캔 된 코드 스 니펫 중 69 가지 유형으로 분류 된 총 29 개의 ​​취약한 코드 스 니펫을 발견했습니다. 연구 된 코드 스 니펫의 대부분은 아직 수정되지 않았습니다.”라고 연구원들은 보고서에서 말했습니다.

69 개의 ​​취약한 코드 조각 Stack Overflow에서 발견됨 총 2859 개의 GitHub 프로젝트에서 재 사용됨. Stack Overflow에서 공유 코드 스 니펫의 품질을 개선하기 위해 Stack Overflow 사용자가 스 니펫을 플랫폼에 다운로드 할 때 스 니펫에서 취약점을 검색 할 수있는 브라우저 확장을 개발했습니다.

그러나 연구원의 경고에도 불구하고 개발자는 여전히 분석을 수행하지 않고 Stack Overflow 코드를 프로젝트에 복사합니다.

Ashkan Sami, IT 부교수, 공학 및 정보 기술 이란의 쉬라즈 대학에서

“이 연구는 결함이있는 코드가 Stack Overflow에서 GitHub로 마이그레이션되는 방식을 조사하려는 시도였습니다. 기본적으로 우리가 보여 주려는 것은 Stack Overflow 코드를 면밀히 검사하지 않고 사용하면 애플리케이션 취약점으로 이어질 수 있다는 것입니다.”라고 Sami는 말했습니다. 이 연구는 또한 2017 년의 학술 기사를 참조합니다.

이 기사에 따르면 Stack Overflow에 게시 된 1161 개의 안전하지 않은 코드 스 니펫이 Google Play에서 제공되는 1.3 만 개의 Android 앱에서 사용되었습니다.

이전 연구에 추가하여 작성자를 지정하지 않고 StackOverflow 코드를 사용한 개발자의 46 %, 코드가 CC BY-SA에 따라 라이선스가 부여된다는 사실을 알지 못했으며 75 %는 이것이 귀속이 필요하다는 것을 알지 못했습니다.

다른 연구의 데이터에 따르면 샘플 코드를 사용하는 것은 코드의 버그 위험뿐 아니라 취약성과도 관련이 있습니다.

예를 들어 StackOverflow에서 72483 개의 C ++ 코드 샘플을 분석 한 후 연구원들은 가장 인기있는 권장 사항 목록에 포함 된 69 개의 ​​샘플 (0.09 %)에서 심각한 취약점을 식별했습니다.

출처 : https://programming.guide


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.