Relro
Reading time: 6 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
Relro
RELROはRelocation Read-Onlyの略で、GOT (Global Offset Table)の上書きに関連するリスクを軽減するためにバイナリで使用されるセキュリティ機能です。RELRO保護には2種類あります:(1) Partial RELROと(2) Full RELROです。どちらもELFファイルからGOTとBSSの順序を変更しますが、結果と影響は異なります。具体的には、GOTセクションをBSSの_前_に配置します。つまり、GOTはBSSよりも低いアドレスにあり、したがってBSS内の変数をオーバーフローさせることでGOTエントリを上書きすることは不可能です(メモリへの書き込みは低いアドレスから高いアドレスに向かって行われることを思い出してください)。
この概念を明確にするために、2つの異なるタイプに分解しましょう。
Partial RELRO
Partial RELROは、バイナリのパフォーマンスに大きな影響を与えずにセキュリティを強化するためのよりシンプルなアプローチを取ります。Partial RELROは**.gotを読み取り専用にします(GOTセクションの非PLT部分)。セクションの残りの部分(.got.pltなど)はまだ書き込み可能であり、したがって攻撃の対象となることに注意してください。これは任意の書き込みの脆弱性からGOT**が悪用されるのを防ぐものではありません。
注:デフォルトでは、GCCはPartial RELROでバイナリをコンパイルします。
Full RELRO
Full RELROは、GOT全体(.gotと.got.pltの両方)および.fini_arrayセクションを完全に読み取り専用にすることで保護を強化します。バイナリが起動すると、すべての関数アドレスが解決され、GOTにロードされ、その後、GOTは読み取り専用としてマークされ、実行時にそれに対する変更を効果的に防ぎます。
ただし、Full RELROのトレードオフはパフォーマンスと起動時間にあります。GOTを読み取り専用としてマークする前に、すべての動的シンボルを起動時に解決する必要があるため、Full RELROが有効なバイナリは読み込み時間が長くなる可能性があります。この追加の起動オーバーヘッドが、すべてのバイナリでFull RELROがデフォルトで有効になっていない理由です。
バイナリでFull RELROが有効かどうかを確認することができます:
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
バイパス
フル RELRO が有効な場合、バイパスする唯一の方法は、任意の実行を得るために GOT テーブルに書き込む必要のない別の方法を見つけることです。
LIBC の GOT は通常部分的な RELRO であるため、任意の書き込みで変更可能です。 詳細は Targetting libc GOT entries。
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。