論文の概要: Breaking Type Safety in Go: An Empirical Study on the Usage of the
unsafe Package
- arxiv url: http://arxiv.org/abs/2006.09973v4
- Date: Thu, 22 Jul 2021 18:51:48 GMT
- ステータス: 処理完了
- システム内更新日: 2022-11-19 21:38:45.467259
- Title: Breaking Type Safety in Go: An Empirical Study on the Usage of the
unsafe Package
- Title(参考訳): goにおける型安全性の破れ:unsafeパッケージの使用に関する実証的研究
- Authors: Diego Elias Costa, Suhaib Mujahid, Rabe Abdalkareem, Emad Shihab
- Abstract要約: 我々は,2,438のGoプロジェクトにおいて,安全でないパッケージの使用に関する大規模な研究を行った。
我々の調査によると、安全でないプロジェクトはGoプロジェクトの24%で使われており、主にオペレーティングシステムやCコードとの通信によって動機付けられています。
クラッシュするエラーや非決定的な振る舞いから、デプロイを制限するまで、安全でないプロジェクトによって直面する現実的な問題を報告します。
- 参考スコア(独自算出の注目度): 3.548075273599941
- License: http://arxiv.org/licenses/nonexclusive-distrib/1.0/
- Abstract: A decade after its first release, the Go programming language has become a
major programming language in the development landscape. While praised for its
clean syntax and C-like performance, Go also contains a strong static
type-system that prevents arbitrary type casting and arbitrary memory access,
making the language type-safe by design. However, to give developers the
possibility of implementing low-level code, Go ships with a special package
called unsafe that offers developers a way around the type-safety of Go
programs. The package gives greater flexibility to developers but comes at a
higher risk of runtime errors, chances of non-portability, and the loss of
compatibility guarantees for future versions of Go.
In this paper, we present the first large-scale study on the usage of the
unsafe package in 2,438 popular Go projects. Our investigation shows that
unsafe is used in 24% of Go projects, motivated primarily by communicating with
operating systems and C code, but is also commonly used as a source of
performance optimization. Developers are willing to use unsafe to break
language specifications (e.g., string immutability) for better performance and
6% of analyzed projects that use unsafe perform risky pointer conversions that
can lead to program crashes and unexpected behavior. Furthermore, we report a
series of real issues faced by projects that use unsafe, from crashing errors
and non-deterministic behavior to having their deployment restricted from
certain popular environments. Our findings can be used to understand how and
why developers break type-safety in Go, and help motivate further tools and
language development that could make the usage of unsafe in Go even safer.
- Abstract(参考訳): 最初のリリースから10年後、Goプログラミング言語は開発現場で主要なプログラミング言語となった。
クリーンな構文とCライクなパフォーマンスを称賛される一方で、Goには任意の型キャストと任意のメモリアクセスを防止する強力な静的型システムが含まれており、言語は設計上安全である。
しかし、開発者が低レベルのコードを実装できるようにするために、goはunsafeと呼ばれる特別なパッケージを出荷しており、開発者はgoプログラムの型安全性を回避できる。
このパッケージは開発者により大きな柔軟性を提供するが、ランタイムエラー、非移植性の可能性、将来のバージョンのgoの互換性保証の喪失のリスクが高い。
本稿では,2,438の人気のあるgoプロジェクトにおいて,unsafeパッケージの使用に関する最初の大規模研究を行う。
調査の結果、unsafeはgoプロジェクトの24%で使用されており、主にオペレーティングシステムとcコードとの通信を動機としているが、パフォーマンス最適化のソースとしても一般的に使用されている。
開発者は、安全でない言語仕様(例えば文字列不変性)をより良いパフォーマンスに破り、分析されたプロジェクトの6%は、プログラムのクラッシュや予期せぬ振る舞いを引き起こす危険なポインタ変換を実行している。
さらに、クラッシュするエラーや非決定的な振る舞いから、デプロイが特定の一般的な環境から制限されるまでの、安全でないプロジェクトによって直面する現実的な問題を報告する。
私たちの発見は、開発者がGoで型安全性を損なう理由と理由を理解し、Goで安全でない使用をさらに安全にするためのツールや言語開発を動機付けるのに役立ちます。
関連論文リスト
- SJMalloc: the security-conscious, fast, thread-safe and memory-efficient heap allocator [0.0]
ヒープベースのエクスプロイトは、アプリケーションのセキュリティに重大な脅威をもたらす。
強化アロケータは現実世界のアプリケーションでは広く採用されていない。
SJMallocは、ヒープ上のアプリケーションのデータから離れて、そのメタデータを帯域外で保存する。
SJMallocは、GLibcsアロケータに比べて6%パフォーマンスが向上し、わずか5%のメモリしか使用していない。
論文 参考訳(メタデータ) (2024-10-23T14:47:12Z) - Characterizing Unsafe Code Encapsulation In Real-world Rust Systems [2.285834282327349]
内部アンセーフは、システムソフトウェア開発においてRustコミュニティによって提唱される重要な設計パラダイムである。
Rustコンパイラは、安全でないコードを含む安全な関数の健全性を検証することができない。
安全でないコードの本質的な使用法とカプセル化をモデル化するための,新しいアンセーフティアイソレーショングラフを提案する。
論文 参考訳(メタデータ) (2024-06-12T06:59:51Z) - Bringing Rust to Safety-Critical Systems in Space [1.0742675209112622]
Rustは、バグ導入の可能性を劇的に削減し、より安全で安全なコードを生成することを目的としている。
この作業は、Rustで安全クリティカルな宇宙システムを開発するための一連のレコメンデーションを提供する。
論文 参考訳(メタデータ) (2024-05-28T12:48:47Z) - A Mixed-Methods Study on the Implications of Unsafe Rust for Interoperation, Encapsulation, and Tooling [2.2463451968497425]
Rust開発者は、マルチ言語アプリケーション内の健全性を保証するための検証ツールが必要である。
開発者は、外部関数呼び出しの理由、現在使用しているツールの制限、安全でないコードを使用する動機、そしてそれをカプセル化する理由について調査する。
論文 参考訳(メタデータ) (2024-04-02T18:36:21Z) - CodeAttack: Revealing Safety Generalization Challenges of Large Language Models via Code Completion [117.178835165855]
本稿では,自然言語入力をコード入力に変換するフレームワークであるCodeAttackを紹介する。
我々の研究は、コード入力に対するこれらのモデルの新たな、普遍的な安全性の脆弱性を明らかにした。
CodeAttackと自然言語の分布ギャップが大きくなると、安全性の一般化が弱くなる。
論文 参考訳(メタデータ) (2024-03-12T17:55:38Z) - GWP-ASan: Sampling-Based Detection of Memory-Safety Bugs in Production [30.534320345970286]
Heap-use-after-freeとheap-buffer-overflowのバグは、CやC++で記述されたアプリケーションのセキュリティ、信頼性、開発者の生産性の主要な問題である。
本稿では,この2種類のメモリセーフなバグを実運用環境でほぼゼロのオーバーヘッドで検出するツール群について述べる。
論文 参考訳(メタデータ) (2023-11-15T21:41:53Z) - All Languages Matter: On the Multilingual Safety of Large Language Models [96.47607891042523]
我々は、大規模言語モデル(LLM)のための最初の多言語安全ベンチマークを構築した。
XSafetyは、複数の言語ファミリーにまたがる10言語にわたる14種類の一般的な安全問題をカバーしている。
本稿では,ChatGPTの多言語安全性向上のための簡易かつ効果的なプロンプト手法を提案する。
論文 参考訳(メタデータ) (2023-10-02T05:23:34Z) - A Static Evaluation of Code Completion by Large Language Models [65.18008807383816]
単純なプログラミング問題に対するモデル生成コードの機能的正当性を評価するために,実行ベースベンチマークが提案されている。
プログラムを実行せずにエラーを検出するlinterのような静的解析ツールは、コード生成モデルを評価するために十分に研究されていない。
抽象構文木を利用して,Pythonのコード補完における静的エラーを定量化する静的評価フレームワークを提案する。
論文 参考訳(メタデータ) (2023-06-05T19:23:34Z) - CodeLMSec Benchmark: Systematically Evaluating and Finding Security
Vulnerabilities in Black-Box Code Language Models [58.27254444280376]
自動コード生成のための大規模言語モデル(LLM)は、いくつかのプログラミングタスクにおいてブレークスルーを達成した。
これらのモデルのトレーニングデータは、通常、インターネット(例えばオープンソースのリポジトリから)から収集され、障害やセキュリティ上の脆弱性を含む可能性がある。
この不衛生なトレーニングデータは、言語モデルにこれらの脆弱性を学習させ、コード生成手順中にそれを伝播させる可能性がある。
論文 参考訳(メタデータ) (2023-02-08T11:54:07Z) - SafeText: A Benchmark for Exploring Physical Safety in Language Models [62.810902375154136]
テキスト生成およびコモンセンス推論タスク用に設計された各種モデルのコモンセンス物理安全性について検討する。
最先端の大規模言語モデルは、安全でないテキストの生成に影響を受けやすく、安全でないアドバイスを拒否するのが困難であることがわかった。
論文 参考訳(メタデータ) (2022-10-18T17:59:31Z) - Natural Language to Code Translation with Execution [82.52142893010563]
実行結果-プログラム選択のための最小ベイズリスク復号化。
そこで本研究では,自然言語からコードへのタスクにおいて,事前訓練されたコードモデルの性能を向上することを示す。
論文 参考訳(メタデータ) (2022-04-25T06:06:08Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。