- Di GitHub Actions, shell yang digunakan untuk menjalankan blok
run: dapat ditentukan dengan kata kunci shell
- Di workflow ini bersifat opsional, tetapi dalam definisi action individual ini wajib
- Nilai bawaan ditentukan otomatis sesuai sistem operasi: Linux/macOS menggunakan
bash, Windows menggunakan pwsh
- Jika secara eksplisit menetapkan
shell: bash, flag bawaan berikut juga akan disertakan: --noprofile --norc -eo pipefail
Program apa pun dapat ditetapkan sebagai shell
- Orang mudah mengira bahwa nilai yang bisa digunakan pada
shell itu terbatas
- Kenyataannya, semua executable yang ada di
$PATH dapat digunakan sebagai shell
- Jika perintah yang dijalankan tidak menerima input file, argumen khusus
{0} harus diteruskan
{0} akan otomatis diganti GitHub dengan path file sementara
Contoh eksperimental
- Bahkan compiler bahasa C (
tcc) bisa dipakai seperti shell untuk menjalankan sesuatu secara langsung
- Dengan memanipulasi
$PATH, shell bash palsu juga bisa dibuat dan digunakan
- GitHub tidak peduli apakah nilai yang dicantumkan pada entri
shell itu sebenarnya executable apa
Implikasi keamanan
- Di GitHub Actions, batas antara menulis file dan mengeksekusi file menjadi kabur (bahkan melalui
GITHUB_ENV, $GITHUB_PATH, dll. ada kemungkinan untuk dieksekusi)
- Bahkan nilai yang sudah dikenal seperti
shell: bash pun dicari melalui $PATH, dan tidak menggunakan path executable tetap seperti /bin/bash
- Bertentangan dengan dugaan, nilai seperti
python juga dieksekusi berdasarkan path nyata, bukan sekadar referensi tool cache
2 komentar
Bahkan hanya dengan melihat repo github/runner-image, sudah terpasang cukup banyak paket yang bisa langsung digunakan....
Kalau membuat image, 1GB itu langsung terpakai....
Opini Hacker News
-xpada bash. Ini sangat berguna untuk debuggingrepository_dispatchdengan wildcardMake) lalu memanggilnya dari GitHub Actions, atauScriptHandler.csberisi semua kode untuk menyiapkan environment proses, argumen, dan sebagainyabashuntuk menjalankan program apa pungoevalmasih belum mendukung input file secara langsunggoeval