curl | bashYou wouldn't run a stranger's code without reading it. Yet every second developer docs page ends with this command.
This is the command in question:
It downloads a shell script from the internet and immediately executes it. You have no idea what runs. Neither does your team. Neither does your audit log.
The pipe is live. Bash receives and executes lines as they arrive. Drop the connection mid-transfer and you get partial execution: a command like rm -r /usr/share/program can truncate to rm -r /usr. Commands ran, cleanup didn’t.
Servers detect the curl User-Agent or use timing: send a sleep command early in the script — if bash is executing it, pipe reads pause, curl blocks, and the server observes the delay. Confirmed execution. Then serve a different payload. “I’ll read it in the browser first” doesn’t protect you: what you read is not what ran.
No checksum, no signature. You trust DNS, TLS, the CDN, and the origin simultaneously. A compromised CDN or BGP hijack delivers malware silently.
Not just the author. You trust the domain registrar, DNS provider, CDN, hosting, every CI/CD pipeline that built the artifact, and every future maintainer who will ever push to that repo.
The URL is live and mutable. No record exists of what exactly executed on your machine — only that something did.
sudo and it’s game over
curl ... | sudo bash grants root to whoever controls that URL at that moment. This pattern appears in real published docs. Often.
Real install scripts, analyzed in June 2026. These are not hypothetical threats.
The boring option is usually the right one. Package managers handle integrity, updates, and uninstallation.
One extra step. Gives you a chance to read the script and keeps a local copy for future reference.
If you must pipe — record what ran so you can audit or undo later.
bash -x traces top-level commands only. Subprocesses and sourced scripts won’t appear in the log.
If the project publishes a SHA-256 hash, use it. Non-negotiable on production machines.
“But I trust the vendor, so it’s fine, right?”
Trusting the vendor is necessary but not sufficient. curl | bash adds attack surface on top of that trust: you also trust DNS, the CDN, the hosting provider, and anyone who might compromise the URL between now and the moment you run it. A package installed through a package manager goes through additional verification layers. The vendor being reputable doesn’t make the delivery mechanism safe.
curl | bashВы бы не запускали чужой код не читая его. Но именно этим заканчивается каждая вторая страница документации.
Вот о какой команде речь:
Она скачивает шелл-скрипт из интернета и немедленно его выполняет. Вы понятия не имеете что запускается. И ваша команда тоже. И ваш аудит-лог тоже.
Пайп работает в реальном времени. Обрыв соединения на середине — частичное выполнение: rm -r /usr/share/program может усечься до rm -r /usr. Команды отработали, откат — нет.
Сервер отправляет sleep в начале скрипта — если bash его выполняет, чтение пайпа паузирует, curl блокируется, сервер видит задержку — факт выполнения подтверждён, дальше — другой пейлоад. «Сначала открою в браузере» не поможет: то что вы прочитали — не то что запустилось.
Нет контрольной суммы, нет подписи. Вы одновременно доверяете DNS, TLS, CDN и серверу. Скомпрометированный CDN или BGP-hijack тихо подменяет скрипт.
Не только автору. Вы доверяете регистратору домена, DNS-провайдеру, CDN, хостингу, каждому CI/CD-пайплайну и каждому будущему мейнтейнеру репозитория.
URL живой и изменяемый. Никакой записи о том, что именно выполнилось на вашей машине — только факт, что что-то было.
sudo — и всё кончено
curl ... | sudo bash отдаёт root тому, кто контролирует этот URL прямо сейчас. Этот паттерн встречается в реальной документации. Часто.
Реальные инсталл-скрипты, проанализированные в июне 2026. Это не гипотетические угрозы.
Скучный вариант — обычно правильный. Пакетные менеджеры сами занимаются целостностью, обновлениями и удалением.
Один лишний шаг. Дает возможность прочитать скрипт и сохраняет локальную копию для справки.
Если уж пайпите — записывайте что запустилось, чтобы потом можно было аудитировать или отменить.
bash -x traces top-level commands only. Subprocesses and sourced scripts won’t appear in the log.
Если проект публикует SHA-256 хэш — используйте его. На продакшн-машинах — не обсуждается.
«Но я доверяю вендору, значит всё ок?»
Доверия вендору недостаточно. curl | bash добавляет attack surface поверх доверия вендору: вы также доверяете DNS, CDN, хостингу и всем, кто может скомпрометировать URL до момента запуска. Пакет, установленный через пакетный менеджер, проходит дополнительные слои проверки. Репутация вендора не делает механизм доставки безопасным.
curl | bashВи б не запускали чужий код не читаючи його. Але саме цим закінчується кожна друга сторінка документації.
Ось про яку команду йдеться:
Вона завантажує шелл-скрипт з інтернету і негайно його виконує. Ви не маєте уявлення що запускається. Ваша команда теж. Ваш аудит-лог теж.
Канал активний. Bash отримує та виконує рядки в міру їх надходження. Перервіть з’єднання посередині передачі — і отримаєте часткове виконання: команда на кшталт rm -r /usr/share/program може скоротитися до rm -r /usr. Команди виконались, прибирання — ні.
Сервери визначають curl User-Agent або використовують таймінг: надсилають команду sleep на початку скрипту — якщо bash її виконує, зчитування з pipe призупиняється, curl блокується, і сервер фіксує затримку. Виконання підтверджено. Після цього він віддає інший payload. «Я спочатку прочитаю це в браузері» вас не захистить: те, що ви читаєте, — не те, що виконується.
Ні контрольної суми, ні підпису. Ви одночасно довіряєте DNS, TLS, CDN та джерелу. Скомпрометований CDN або BGP-перехоплення доставлять шкідливе програмне забезпечення непомітно.
Не лише автору. Ви довіряєте реєстратору домену, DNS-провайдеру, CDN, хостингу, кожному CI/CD-конвеєру, що зібрав артефакт, і кожному майбутньому супроводжувачу, хто коли-небудь зробить push до цього репозиторію.
URL активний і змінний. Жодного запису про те, що саме виконувалось на вашій машині, не існує — лише факт, що щось виконувалось.
sudo — і це кінець
curl ... | sudo bash надає права root тому, хто контролює цей URL у конкретний момент. Цей патерн зустрічається в реально опублікованій документації. Часто.
Реальні інсталл-скрипти, проаналізовані у червні 2026. Це не гіпотетичні загрози.
Нудний варіант зазвичай правильний. Пакетні менеджери забезпечують цілісність, оновлення та видалення.
Один додатковий крок. Дає можливість прочитати скрипт і зберігає локальну копію для майбутніх довідок.
Якщо вже використовуєте pipe — записуйте, що виконувалось, щоб мати можливість аудиту або відкату.
bash -x відстежує лише команди верхнього рівня. Дочірні процеси та підключені скрипти в лог не потраплять.
Якщо проєкт публікує SHA-256-хеш — використовуйте його. Обов’язково на робочих машинах.
«Але я довіряю постачальнику — значить, все гаразд?»
`curl | bash` додає поверхню атаки поверх довіри до постачальника: ви також довіряєте DNS, CDN, хостинг-провайдеру та всім, хто може скомпрометувати URL між моментом публікації та моментом запуску. Пакет, встановлений через пакетний менеджер, проходить додаткові рівні перевірки. Репутація постачальника не робить механізм доставки безпечним.
curl | bashNe biste pokrenuli tuđi kod bez čitanja. Ipak, svaka druga stranica dokumentacije završava ovom komandom.
Reč je o ovoj komandi:
Preuzima shell skriptu sa interneta i odmah je izvršava. Nemate pojma šta se pokreće. Ni vaš tim. Ni vaš audit log.
Kanal je aktivan. Bash prima i izvršava linije kako pristižu. Prekinite vezu usred prenosa — i dobijate parcijalno izvršavanje: komanda poput rm -r /usr/share/program može se skratiti na rm -r /usr. Komande su se izvršile, čišćenje nije.
Serveri detektuju curl User-Agent ili koriste tajming: pošalju komandu sleep na početku skripte — ako bash izvršava tu komandu, čitanje iz pipe-a se pauzira, curl blokira, a server primećuje kašnjenje. Izvršavanje potvrdjeno. Zatim servira drugi payload. «Pročitaću to prvo u browseru» ne štiti vas: ono što čitate nije ono što se izvršilo.
Ni kontrolne sume, ni potpisa. Istovremeno verujete DNS-u, TLS-u, CDN-u i izvoru. Kompromitovani CDN ili BGP otmica dostavlja malver bez ikakvog upozorenja.
Ne samo autoru. Verujete registraru domena, DNS provajderu, CDN-u, hostingu, svakom CI/CD pipeline-u koji je izgradio artefakt, i svakom budućem održavaocu koji ikada bude radio push na taj repozitorijum.
URL je aktivan i promenljiv. Ne postoji nikakav zapis o tome šta je tačno izvršeno na vašoj mašini — samo da se nešto izvršilo.
sudo i gotovo je
curl ... | sudo bash daje root pristup onome ko kontroliše taj URL u tom trenutku. Ovaj obrazac se pojavljuje u stvarno objavljenoj dokumentaciji. Često.
Realni install skripti, analizirani u junu 2026. Ovo nisu hipotetičke pretnje.
Dosadna opcija je obično ispravna. Menadžeri paketa se brinu o integritetu, ažuriranjima i deinstalaciji.
Jedan korak više. Daje vam šansu da pročitate skriptu i čuva lokalnu kopiju za buduću referencu.
Ako već morate koristiti pipe — snimite šta se izvršilo kako biste mogli da vršite audit ili vraćanje promena.
bash -x prati samo komande na najvišem nivou. Podprocesi i učitane skripte neće se pojaviti u logu.
Ako projekat objavljuje SHA-256 heš, koristite ga. Neophodno na produkcijskim mašinama.
«Ali verujem prodavcu, znači sve je u redu, zar ne?»
Verovati prodavcu je neophodno, ali nije dovoljno. `curl | bash` dodaje napadnu površinu na vrh tog poverenja: takodje verujete DNS-u, CDN-u, hosting provajderu i svima koji bi mogli kompromitovati URL izmedju trenutka objavljivanja i trenutka pokretanja. Paket instaliran putem menadžera paketa prolazi kroz dodatne slojeve verifikacije. Reputacija prodavca ne čini mehanizam isporuke bezbednim.
curl | bashVous ne lanceriez pas le code d’un inconnu sans le lire. Pourtant, c’est exactement ce que propose une doc sur deux.
Voici la commande en question :
Elle télécharge un script shell depuis internet et l’exécute immédiatement. Vous ignorez ce qui tourne. Votre équipe aussi. Votre journal d’audit aussi.
Le tube est actif. Bash reçoit et exécute les lignes au fur et à mesure. Coupez la connexion en plein transfert: une commande comme rm -r /usr/share/program peut être tronquée en rm -r /usr. Les commandes ont été exécutées, le nettoyage, non.
Les serveurs détectent le User-Agent de curl ou utilisent le timing: envoyer une commande sleep en début de script — si bash l’exécute, les lectures du tube marquent une pause, curl se bloque, et le serveur observe le délai. Exécution confirmée. Ensuite, il sert un payload différent. «Je vais d’abord le lire dans le navigateur» ne vous protège pas: ce que vous lisez n’est pas ce qui s’est exécuté.
Ni somme de contrôle, ni signature. Vous faites confiance simultanément au DNS, au TLS, au CDN et à l’origine. Un CDN compromis ou un détournement BGP livre silencieusement des logiciels malveillants.
Pas seulement à l’auteur. Vous faites confiance au registrar de domaine, au fournisseur DNS, au CDN, à l’hébergement, à chaque pipeline CI/CD qui a construit l’artefact, et à chaque futur mainteneur qui poussera un jour sur ce dépôt.
L’URL est active et mutable. Il n’existe aucune trace de ce qui s’est exactement exécuté sur votre machine — seulement que quelque chose l’a fait.
sudo et c’est terminé
curl ... | sudo bash accorde les droits root à quiconque contrôle cette URL à cet instant. Ce schéma apparaît dans de vraies documentations publiées. Souvent.
Scripts d’installation réels, analysés en juin 2026. Ce ne sont pas des menaces hypothétiques.
L’option ennuyeuse est généralement la bonne. Les gestionnaires de paquets gèrent l’intégrité, les mises à jour et la désinstallation.
Une étape supplémentaire. Vous donne l’occasion de lire le script et conserve une copie locale pour référence ultérieure.
Si vous devez utiliser un tube — enregistrez ce qui s’est exécuté afin de pouvoir auditer ou annuler plus tard.
bash -x ne trace que les commandes de premier niveau. Les sous-processus et les scripts sourceés n’apparaîtront pas dans le journal.
Si le projet publie un hachage SHA-256, utilisez-le. Non négociable sur les machines de production.
«Mais je fais confiance au fournisseur, donc c’est bon, non ?»
Faire confiance au fournisseur est nécessaire mais pas suffisant. `curl | bash` ajoute une surface d’attaque par-dessus cette confiance: vous faites également confiance au DNS, au CDN, à l’hébergeur, et à quiconque pourrait compromettre l’URL entre maintenant et le moment où vous l’exécutez. Un paquet installé via un gestionnaire de paquets passe par des couches de vérification supplémentaires. La réputation du fournisseur ne rend pas le mécanisme de livraison sûr.
curl | bashIhr würdet den Code eines Fremden nicht ausführen, ohne ihn zu lesen. Trotzdem endet jede zweite Dokumentationsseite mit diesem Befehl.
Um diesen Befehl geht es:
Er lädt ein Shell-Skript aus dem Internet herunter und führt es sofort aus. Ihr habt keine Ahnung was läuft. Euer Team auch nicht. Euer Audit-Log auch nicht.
Die Pipe ist live. Bash empfängt und führt Zeilen aus, sobald sie ankommen. Wird die Verbindung mitten im Transfer getrennt, kommt es zu partieller Ausführung: ein Befehl wie rm -r /usr/share/program kann zu rm -r /usr abgeschnitten werden. Befehle wurden ausgeführt, die Bereinigung nicht.
Server erkennen den curl User-Agent oder nutzen Timing: ein sleep-Befehl wird früh im Skript gesendet — wenn bash ihn ausführt, pausieren Pipe-Lesevorgänge, curl blockiert, und der Server beobachtet die Verzögerung. Ausführung bestätigt. Dann wird ein anderer Payload geliefert. „Ich lese es zuerst im Browser“ schützt Sie nicht: was Sie lesen, ist nicht das, was ausgeführt wurde.
Keine Prüfsumme, keine Signatur. Sie vertrauen gleichzeitig DNS, TLS, dem CDN und dem Ursprungsserver. Ein kompromittiertes CDN oder ein BGP-Hijack liefert lautlos Schadsoftware.
Nicht nur dem Autor. Sie vertrauen dem Domain-Registrar, dem DNS-Anbieter, dem CDN, dem Hosting, jeder CI/CD-Pipeline, die das Artefakt gebaut hat, und jedem zukünftigen Maintainer, der jemals in dieses Repository pushen wird.
Die URL ist live und veränderlich. Es gibt keine Aufzeichnung darüber, was genau auf Ihrem System ausgeführt wurde — nur dass irgendetwas ausgeführt wurde.
sudo hinzufügen und das Spiel ist aus
curl ... | sudo bash gewährt Root-Rechte an jeden, der diese URL in diesem Moment kontrolliert. Dieses Muster taucht in real veröffentlichten Dokumentationen auf. Häufig.
Echte Install-Skripte, analysiert im Juni 2026. Das sind keine hypothetischen Bedrohungen.
Die langweilige Option ist meist die richtige. Paketmanager kümmern sich um Integrität, Updates und Deinstallation.
Ein zusätzlicher Schritt. Gibt Ihnen die Möglichkeit, das Skript zu lesen, und behält eine lokale Kopie für spätere Referenz.
Wenn Sie eine Pipe verwenden müssen — zeichnen Sie auf, was ausgeführt wurde, damit Sie später prüfen oder rückgängig machen können.
bash -x protokolliert nur Befehle der obersten Ebene. Unterprozesse und eingebundene Skripte erscheinen nicht im Protokoll.
Wenn das Projekt einen SHA-256-Hash veröffentlicht, verwenden Sie ihn. Auf Produktivmaschinen nicht verhandelbar.
„Aber ich vertraue dem Anbieter, also ist es doch in Ordnung, oder?“
Dem Anbieter zu vertrauen ist notwendig, aber nicht hinreichend. `curl | bash` fügt zusätzliche Angriffsfläche auf dieses Vertrauen auf: Sie vertrauen außerdem DNS, dem CDN, dem Hosting-Anbieter und jedem, der die URL zwischen jetzt und dem Moment Ihrer Ausführung kompromittieren könnte. Ein über einen Paketmanager installiertes Paket durchläuft zusätzliche Verifizierungsschichten. Die Reputation des Anbieters macht den Liefermechanismus nicht sicher.
curl | bashNo ejecutarías el código de un extraño sin leerlo. Sin embargo, cada segunda página de documentación termina con este comando.
Este es el comando en cuestión:
Descarga un script de shell desde internet y lo ejecuta inmediatamente. No tienes idea de qué se ejecuta. Tu equipo tampoco. Tu registro de auditoría tampoco.
La tubería está activa. Bash recibe y ejecuta líneas según van llegando. Interrumpe la conexión a mitad de la transferencia: un comando como rm -r /usr/share/program puede truncarse a rm -r /usr. Los comandos se ejecutaron, la limpieza no.
Los servidores detectan el User-Agent de curl o usan temporización: envían un comando sleep al principio del script — si bash lo está ejecutando, la lectura de la tubería se pausa, curl se bloquea y el servidor observa el retraso. Ejecución confirmada. Luego sirven una carga diferente. «Primero lo leeré en el navegador» no te protege: lo que lees no es lo que se ejecutó.
Sin suma de comprobación, sin firma. Confías en DNS, TLS, el CDN y el origen simultáneamente. Un CDN comprometido o un secuestro BGP entrega malware en silencio.
No solo en el autor. Confías en el registrador de dominio, el proveedor de DNS, el CDN, el alojamiento, cada pipeline de CI/CD que construyó el artefacto, y cada futuro mantenedor que alguna vez haga push a ese repositorio.
La URL está activa y es mutable. No existe ningún registro de qué se ejecutó exactamente en tu máquina — solo que algo lo hizo.
sudo y todo está perdido
curl ... | sudo bash concede acceso root a quien controle esa URL en ese momento. Este patrón aparece en documentación real publicada. Con frecuencia.
Scripts de instalación reales, analizados en junio de 2026. No son amenazas hipotéticas.
La opción aburrida suele ser la correcta. Los gestores de paquetes gestionan la integridad, las actualizaciones y la desinstalación.
Un paso extra. Te da la oportunidad de leer el script y conserva una copia local para consultas futuras.
Si tienes que usar una tubería — registra lo que se ejecutó para poder auditarlo o deshacerlo después.
bash -x registra solo los comandos de nivel superior. Los subprocesos y los scripts incluidos con source no aparecerán en el registro.
Si el proyecto publica un hash SHA-256, úsalo. Innegociable en máquinas de producción.
«Pero confío en el proveedor, así que está bien, ¿verdad?»
Confiar en el proveedor es necesario pero no suficiente. `curl | bash` añade superficie de ataque sobre esa confianza: también confías en DNS, el CDN, el proveedor de alojamiento y cualquiera que pueda comprometer la URL entre ahora y el momento en que la ejecutes. Un paquete instalado a través de un gestor de paquetes pasa por capas de verificación adicionales. Que el proveedor sea reputado no hace que el mecanismo de entrega sea seguro.
curl | bashVocê não executaria o código de um estranho sem ler. No entanto, cada segunda página de documentação termina com este comando.
Este é o comando em questão:
Ele baixa um script shell da internet e o executa imediatamente. Você não tem ideia do que roda. Sua equipe também não. Seu log de auditoria também não.
O pipe está ativo. O Bash recebe e executa linhas conforme chegam. Interrompa a conexão no meio da transferência: um comando como rm -r /usr/share/program pode ser truncado para rm -r /usr. Os comandos foram executados, a limpeza não.
Os servidores detectam o User-Agent do curl ou usam temporização: enviam um comando sleep no início do script — se o bash o estiver executando, a leitura do pipe pausa, o curl bloqueia e o servidor observa o atraso. Execução confirmada. Em seguida, servem um payload diferente. «Vou ler no navegador primeiro» não te protege: o que você lê não é o que foi executado.
Sem soma de verificação, sem assinatura. Você confia em DNS, TLS, no CDN e na origem simultaneamente. Um CDN comprometido ou um sequestro BGP entrega malware silenciosamente.
Não apenas no autor. Você confia no registrador de domínio, no provedor de DNS, no CDN, no hospedeiro, em cada pipeline de CI/CD que construiu o artefato e em cada futuro mantenedor que venha a fazer push naquele repositório.
A URL está ativa e é mutável. Não existe nenhum registro do que exatamente foi executado na sua máquina — apenas que algo foi.
sudo e está tudo perdido
curl ... | sudo bash concede acesso root a quem controlar aquela URL naquele momento. Esse padrão aparece em documentação real publicada. Com frequência.
Scripts de instalação reais, analisados em junho de 2026. Não são ameaças hipotéticas.
A opção entediante costuma ser a certa. Gerenciadores de pacotes cuidam da integridade, atualizações e desinstalação.
Um passo extra. Dá a você a chance de ler o script e mantém uma cópia local para referência futura.
Se você precisar usar pipe — registre o que foi executado para que possa auditar ou desfazer depois.
bash -x rastreia apenas os comandos de nível superior. Subprocessos e scripts incluídos com source não aparecerão no log.
Se o projeto publicar um hash SHA-256, use-o. Inegociável em máquinas de produção.
«Mas eu confio no fornecedor, então está tudo bem, não está?»
Confiar no fornecedor é necessário, mas não suficiente. `curl | bash` adiciona superfície de ataque sobre essa confiança: você também confia em DNS, no CDN, no provedor de hospedagem e em qualquer pessoa que possa comprometer a URL entre agora e o momento em que você a executar. Um pacote instalado por meio de um gerenciador de pacotes passa por camadas adicionais de verificação. O fato de o fornecedor ser conceituado não torna o mecanismo de entrega seguro.
curl | bashNon eseguiresti il codice di uno sconosciuto senza leggerlo. Eppure, ogni seconda pagina di documentazione finisce con questo comando.
Questo è il comando in questione:
Scarica uno script shell da internet e lo esegue immediatamente. Non hai idea di cosa gira. Nemmeno il tuo team. Nemmeno il tuo log di audit.
La pipe è attiva. Bash riceve ed esegue le righe man mano che arrivano. Interrompi la connessione a metà trasferimento: un comando come rm -r /usr/share/program può essere troncato a rm -r /usr. I comandi sono stati eseguiti, la pulizia no.
I server rilevano il User-Agent di curl o usano la temporizzazione: inviano un comando sleep all’inizio dello script — se bash lo sta eseguendo, la lettura della pipe si mette in pausa, curl si blocca e il server osserva il ritardo. Esecuzione confermata. Poi servono un payload diverso. «Lo leggerò prima nel browser» non ti protegge: quello che leggi non è ciò che è stato eseguito.
Nessun checksum, nessuna firma. Ti fidi di DNS, TLS, del CDN e dell’origine contemporaneamente. Un CDN compromesso o un dirottamento BGP consegna malware in silenzio.
Non solo dell’autore. Ti fidi del registrar del dominio, del provider DNS, del CDN, dell’hosting, di ogni pipeline CI/CD che ha costruito l’artefatto e di ogni futuro manutentore che farà mai push su quel repository.
L’URL è attiva e mutabile. Non esiste alcun registro di ciò che esattamente è stato eseguito sulla tua macchina — solo che qualcosa è stato eseguito.
sudo e la partita è finita
curl ... | sudo bash concede i privilegi di root a chiunque controlli quell’URL in quel momento. Questo schema appare in documentazione reale pubblicata. Spesso.
Script di installazione reali, analizzati a giugno 2026. Non sono minacce ipotetiche.
L’opzione noiosa di solito è quella giusta. I gestori di pacchetti gestiscono integrità, aggiornamenti e disinstallazione.
Un passo in più. Ti dà la possibilità di leggere lo script e conserva una copia locale per riferimenti futuri.
Se devi usare una pipe — registra ciò che è stato eseguito così puoi fare un’analisi o annullare in seguito.
bash -x traccia solo i comandi di primo livello. I sottoprocessi e gli script inclusi con source non appariranno nel log.
Se il progetto pubblica un hash SHA-256, usalo. Non negoziabile su macchine di produzione.
«Ma mi fido del fornitore, quindi va bene, no?»
Fidarsi del fornitore è necessario ma non sufficiente. `curl | bash` aggiunge superficie di attacco su quella fiducia: ti fidi anche di DNS, del CDN, del provider di hosting e di chiunque potrebbe compromettere l’URL tra ora e il momento in cui lo esegui. Un pacchetto installato tramite un gestore di pacchetti passa attraverso ulteriori livelli di verifica. Il fatto che il fornitore sia affidabile non rende il meccanismo di consegna sicuro.
curl | bashNie uruchomiłbyś kodu obcego bez jego przeczytania. A jednak co druga strona dokumentacji kończy się tym poleceniem.
O tę komendę chodzi:
Pobiera skrypt powłoki z internetu i natychmiast go wykonuje. Nie wiesz co się uruchamia. Twój zespół też nie. Twój dziennik audytu też nie.
Potok działa na żywo. Bash odbiera i wykonuje linie w miarę ich napływania. Przerwij połączenie w trakcie transferu: polecenie takie jak rm -r /usr/share/program może zostać obcięte do rm -r /usr. Polecenia zostały wykonane, czyszczenie nie.
Serwery wykrywają curl User-Agent lub używają pomiaru czasu: wysyłają polecenie sleep na początku skryptu — jeśli bash je wykonuje, odczyty potoku się wstrzymują, curl blokuje, a serwer obserwuje opóźnienie. Potwierdzono wykonanie. Następnie serwuje inny ładunek. „Najpierw przeczytam to w przeglądarce” nie chroni cię: to, co czytasz, nie jest tym, co zostało uruchomione.
Brak sumy kontrolnej, brak podpisu. Ufasz DNS, TLS, CDN i serwerowi źródłowemu jednocześnie. Skompromitowane CDN lub przechwycenie BGP dostarcza złośliwe oprogramowanie bez żadnego sygnału.
Nie tylko autorowi. Ufasz rejestratorowi domeny, dostawcy DNS, CDN, hostingowi, każdemu potokowi CI/CD, który zbudował artefakt, i każdemu przyszłemu opiekunowi, który kiedykolwiek wypchnie do tego repozytorium.
URL jest aktywny i zmienny. Nie istnieje żaden zapis tego, co dokładnie zostało wykonane na twoim komputerze — jedynie to, że coś zostało.
sudo i po wszystkim
curl ... | sudo bash nadaje uprawnienia root temu, kto kontroluje ten URL w danym momencie. Ten wzór pojawia się w prawdziwej, opublikowanej dokumentacji. Często.
Prawdziwe skrypty instalacyjne, przeanalizowane w czerwcu 2026. To nie są hipotetyczne zagrożenia.
Nudna opcja jest zazwyczaj właściwą. Menedżery pakietów dbają o integralność, aktualizacje i deinstalację.
Jeden dodatkowy krok. Daje ci szansę przeczytania skryptu i zachowuje lokalną kopię do przyszłego użytku.
Jeśli musisz używać potoku — zapisz, co zostało uruchomione, abyś mógł to później zaudytować lub cofnąć.
bash -x śledzi jedynie polecenia najwyższego poziomu. Podprocesy i dołączane skrypty nie pojawią się w dzienniku.
Jeśli projekt publikuje skrót SHA-256, użyj go. Niezbędne na maszynach produkcyjnych.
„Ale ufam dostawcy, więc wszystko w porządku, prawdą?”
Zaufanie dostawcy jest konieczne, ale niewystarczające. `curl | bash` dodaje powierzchnię ataku na wierzch tego zaufania: ufasz również DNS, CDN, dostawcy hostingu i każdemu, kto mógłby skompromitować URL między teraz a momentem jego uruchomienia. Pakiet zainstalowany przez menedżera pakietów przechodzi przez dodatkowe warstwy weryfikacji. Renoma dostawcy nie sprawia, że mechanizm dostarczania jest bezpieczny.
curl | bashBir yabancının kodunu okumadan çalıştırmazsınız. Yine de her ikinci dokümantasyon sayfası bu komutla bitiyor.
Söz konusu komut bu:
İnternetten bir kabuk betiği indirip hemen çalıştırır. Ne çalıştığını bilmiyorsunuz. Ekibiniz de bilmiyor. Denetim günlüğünüz de.
Pipe canlıdır. Bash, satırları geldikçe alır ve çalıştırır. Aktarım ortasında bağlantıyı keserseniz kısmi yürütme elde edersiniz: rm -r /usr/share/program gibi bir komut rm -r /usr şeklinde kesilebilir. Komutlar çalıştı, temizlik çalışmadı.
Sunucular curl User-Agent’ı algılar ya da zamanlama kullanır: betiğin başında bir sleep komutu gönderir — bash bunu çalıştırıyorsa pipe okumaları duraksatilir, curl bloke olur ve sunucu gecikmeyi gözlemler. Çalıştırma doğrulandı. Ardından farklı bir payload sunar. “Önce tarayıcıda okuyacağım” sizi korumaz: okuduğunuz, çalışanla aynı değildir.
Sağlama toplamı yok, imza yok. DNS, TLS, CDN ve kaynağa aynı anda güveniyorsunuz. Ele geçirilmiş bir CDN ya da BGP ele geçirmesi sessizce kötü amaçlı yazılım teslim eder.
Sadece yazara değil. Alan adı kayıt kuruluşuna, DNS sağlayıcısına, CDN’e, barındırma hizmetine, artefaktı oluşturan her CI/CD pipeline’ına ve o repoya gelecekte push yapacak her bakımcıya güveniyorsunuz.
URL canlı ve değişkendir. Makinenizde tam olarak neyin çalıştırıldığına dair hiçbir kayıt yoktur — yalnızca bir şeyin çalıştığı bilinir.
sudo ekleyin ve iş biter
curl ... | sudo bash, o URL’yi o an kontrol eden kişiye root yetkisi verir. Bu kalıp gerçek yayımlanmış belgelerde görünür. Sıklıkla.
Haziran 2026’da analiz edilen gerçek kurulum betikleri. Bunlar varsayımsal tehditler değil.
Sıkıcı seçenek genellikle doğru olandır. Paket yöneticileri bütünlüğü, güncellemeleri ve kaldırma işlemlerini yönetir.
Bir adım fazla. Betiği okuma fırsatı verir ve gelecekte başvurmak için yerel bir kopya tutar.
Pipe kullanmak zorundaysanız — ileride denetleyebilmek veya geri alabilmek için çalışanı kaydedin.
bash -x yalnızca üst düzey komutları izler. Alt süreçler ve kaynaklanan betikler günlükte görünmez.
Proje bir SHA-256 karması yayımlıyorsa kullanın. Üretim makinelerinde tartışmasız zorunludur.
“Ama sağlayıcıya güveniyorum, yani sorun yok, değil mi?”
Sağlayıcıya güvenmek gereklidir ama yeterli değildir. `curl | bash`, bu güvenin üzerine ek saldırı yüzeyi ekler: aynı zamanda DNS’e, CDN’e, barındırma sağlayıcısına ve URL’yi şu an ile çalıştırdığınız an arasında ele geçirebilecek herkese güveniyorsunuz. Bir paket yöneticisi aracılığıyla kurulan paket ek doğrulama katmanlarından geçer. Sağlayıcının saygın olması, teslim mekanizmasını güvenli kılmaz.
curl | bash你不会不读就运行陌生人的代码。然而,每隔一个文档页面都以这条命令结尾。
就是这条命令:
它从互联网下载一个 shell 脚本并立即执行。你不知道运行了什么。你的团队也不知道。你的审计日志也不知道。
管道是实时的。Bash 在接收到每一行时就立即执行。如果在传输过程中断开连接:比如 rm -r /usr/share/program 这样的命令可能被截断为 rm -r /usr。命令已经执行,清理却没有完成。
服务器可以检测 curl User-Agent,或通过时序判断:在脚本开头发送一个 sleep 命令——如果 bash 正在执行它,管道读取就会暂停,curl 被阻塞,服务器便能观察到这一延迟,从而确认命令正在执行。随后,服务器可以投递不同的载荷。「我先在浏览器里看一眼」并不能保护你:你看到的不是实际运行的。
没有校验和,没有签名。你同时信任 DNS、TLS、CDN 和源服务器。被攻陷的 CDN 或 BGP 劫持会悄无声息地投递恶意软件。
不只是作者。你还信任域名注册商、DNS 提供商、CDN、托管服务、构建该制品的每一条 CI/CD 流水线,以及未来所有会向该仓库推送代码的维护者。
URL 是活跃且可变的。没有任何记录能说明你的机器上究竟执行了什么——只知道执行了某些东西。
sudo,彻底完了
curl ... | sudo bash 将 root 权限交给了在那一刻控制该 URL 的任何人。这种用法出现在真实发布的文档中。而且很常见。
2026年6月分析的真实安装脚本。这些不是假设性威胁。
无聊的选项通常才是正确的。包管理器负责处理完整性验证、更新和卸载。
只需多一个步骤。给你机会阅读脚本,并保留一份本地副本供日后参考。
如果你非用管道不可——记录下运行了什么,以便事后审计或撤销。
bash -x 只跟踪顶层命令。子进程和通过 source 引入的脚本不会出现在日志中。
如果项目发布了 SHA-256 哈希值,请务必使用。在生产环境机器上这是不可妥协的要求。
「但我信任这个厂商,所以没问题,对吧?」
信任厂商是必要条件,但并不充分。`curl | bash` 在这种信任之上叠加了额外的攻击面:你同时还信任 DNS、CDN、托管服务提供商,以及在你运行命令前的任意时刻可能危害该 URL 的任何人。通过包管理器安装的软件包会经过额外的验证层。厂商声誉良好,并不意味着交付机制本身是安全的。
curl | bashNespouštěli byste cizí kód bez přečtení. Přesto každá druhá stránka dokumentace končí tímto příkazem.
O tento příkaz jde:
Stáhne shell skript z internetu a okamžitě ho spustí. Nevíte co běží. Váš tým také ne. Váš audit log také ne.
Roura je živá. Bash přijímá a spouští řádky průběžně, jak přicházejí. Přerušte spojení uprostřed přenosu: příkaz jako rm -r /usr/share/program může být zkrácen na rm -r /usr. Příkazy proběhly, úklíd ne.
Servery detekují curl User-Agent nebo používají měření času: pošlou příkaz sleep na začátku skriptu — pokud ho bash provádí, čtení z roury se pozastaví, curl zablokuje a server zaznaméná prodlevu. Provádění potvrzeno. Pak odešle jiný payload. ‚Nejdřív si to přečtu v prohlížeči‘ vás nechrání: to, co čtete, není to, co se spustilo.
Žádný kontrolní součet, žádný podpis. Zároveň důvěřujete DNS, TLS, CDN i zdrojovému serveru. Kompromitované CDN nebo BGP hijack doručí malware bez jediného varování.
Nejen autorovi. Důvěřujete registrátorovi domény, poskytovateli DNS, CDN, hostingu, každému CI/CD pipeline, který sestavil artefakt, a každému budoucímu správci, který kdy pushne do toho repozitáře.
URL je živá a proměnlivá. Neexistuje žádný záznam o tom, co přesně bylo spouštěno na vašem stroji — jen to, že něco bylo.
sudo a je po všem
curl ... | sudo bash udělí root přístup tomu, kdo v danou chvíli kontroluje tuto URL. Tento vzor se vyskytuje ve skutečných publikovaných dokumentacích. Často.
Skutečné instalační skripty, analyzované v červnu 2026. Nejsou to hypotetičné hrozby.
Nudná možnost je obvykle ta správná. Správci balíčků se starají o integritu, aktualizace a odinstalaci.
Jeden krok navíc. Dá vám příležitost přečíst skript a uchová místní kopii pro budoucí referenci.
Pokud musíte rouru použít — zaznamenejte, co proběhlo, abyste to mohli auditovat nebo vrátit.
bash -x sleduje pouze příkazy nejvyšší úrovně. Podprocesy a zdroje skriptů se v záznamu neobjeví.
Pokud projekt zveřejňuje hash SHA-256, použijte ho. Na produkčních strojích je to nepodmíněná nutnost.
‚Nejdřív si to přečtu v prohlížeči‘ vás nechrání: to, co čtete, není to, co se spustilo.
Důvěřovat dodavateli je nutné, ale nestačí. `curl | bash` přidává na tuto důvěru další útočnou plochu: zároveň důvěřujete DNS, CDN, poskytovateli hostingu a každému, kdo by mohl kompromitovat URL mezi tímto okamžikem a chvílí, kdy příkaz spustíte. Balíček nainstalovaný přes správce balíčků prochází dalšími vrstvami ověřování. To, že je dodavatel renomovaný, z mechanismu doručení bezpečný nástroj nedělá.