Apple laat populaire terminal-emulatorapp iSH toch in App Store staan

Apple gaat de terminal-emulatorapp iSH toch niet verwijderen uit de App Store. Het bedrijf besloot dat onlangs te doen, maar komt terug op die beslissing. Een reden geeft het bedrijf niet, maar vermoedelijk gebeurt dat na veel kritiek van gebruikers.

De makers van iSH schrijven in een update dat de applicatie in de App Store mag blijven staan. Het gaat om de terminal-emulatorapp iSH, waarmee gebruikers op een iPhone of iPad een terminal kunnen draaien. Er zijn wel andere soortgelijke terminal-apps, maar iSH was uniek omdat het gebaseerd was op de volledige Linux-distro Alpine. De applicatie werkt op iPhones en iPads, en kan op die laatste toetsenborden ondersteunen met bijvoorbeeld de Escape- en pijlknoppen.

De app verscheen op 22 oktober in de App Store, maar de makers zeiden al vrij snel daarna dat de app daar zou worden verwijderd. De app voldeed niet aan de richtlijnen van de App Store, en specifiek de regel dat apps alleen binnen hun eigen bundel mogen werken. Omdat iSH ook commando's als wget en curl ondersteunde weigerde Apple de app. Ook zou het bedrijf hebben gezegd dat iSH een beveiligingsrisico zou opleveren. De makers zeggen zelf dat ze voldoen aan de regels waardoor andere soortgelijke apps wel worden toegestaan. De makers van iSH spreken van willekeur. De beslissing kreeg veel kritiek op forums zoals Hacker News.

De makers zeggen dat ze hebben gewerkt om bepaalde functionaliteit uit de app te verwijderen, maar waarschuwden tegelijkertijd dat ze niet dachten dat op tijd te kunnen doen. Na Apples waarschuwing zouden de makers van iSH veertien dagen de tijd hebben wijzigingen door te voeren. Op maandag zou de app eigenlijk uit de App Store moeten zijn verdwenen, maar Apple is dus op het laatste moment op de beslissing teruggekomen. "We zijn gebeld door iemand van Apple. Ze hebben zich verontschuldigd en gezegd dat ze ons bezwaar accepteren, en zullen iSH niet uit de App Store verwijderen", schrijft het bedrijf. Ondertussen blijven de makers in contact met Apple om over details te praten.

iSH Shell

Door Tijs Hofmans

Nieuwscoördinator

09-11-2020 • 10:16

40

Submitter: Takezo

Reacties (40)

40
39
23
2
0
10
Wijzig sortering
Kende het niet, even geïnstalleerd en het werkt behoorlijk ok. Moet nog even een package manager installeren maar dan heb ik zomaar een portable ‘linux2go’ oplossing op mijn iphone. Kan soms van pas komen en ik kan dan misschien wel een hele zooi netwerktooltjes van mijn iphone verwijderen want die functionaliteit heb ik dan vast ook vanuit deze terminal.
Het installeren van apk als package manager heb ik alsvolgt gedaan:
wget -qO- "http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86/apk-tools-static-2.10.5-r1.apk" | tar -xz sbin/apk.static && ./sbin/apk.static add apk-tools && rm sbin/apk.static
Daarna "apk update", "apk upgrade" en vervolgens kon ik via "apk add" tools als bijvoorbeeld curl, iperf3, openssh-client enzovoort installeren. Heerlijk.
Vraag me af hoe dit onderwater werkt. Krijgt de app een virtuele interface ofzo? Lijkt me sterk dat processen die een socket openen (of open houden) zomaar zouden kunnen werken bijvoorbeeld nmap, iperf etc.
Ik denk dat de app werd geweigerd omdat je geen emulators mag gebruiken. Dit leek er wellicht te veel op in eerste instantie.
Waarom is die regel er eigenlijk op IOS? Kan iemand mij dat uitleggen?
Kan me twee redenen voorstellen:

1. Zo'n emulator maakt dan meestal native ARM assembly aan. Waarop je misschien iets kan maken dat op iOS kan inbreken, door de directe toegang. De op je iPhone ter plekke aangemaakte ARM assembly kan natuurlijk niet door de App Store gekeurd worden.

2. Meestal is de legaliteit van alles wat op spelcomputer emulatoren wordt gedraaid wat schimmig, en eerder gedoogd omdat er toch niks meer met die oude spellen verdient wordt. Dat Apple daar liever ver van weg blijft, en hoopt dat de makers van populaire oude spellen graag hun spel in de App Store zetten (dan boos worden dat Apple het achterlangs onbetaald toelaat).

[Reactie gewijzigd door Henk Poley op 25 juli 2024 06:39]

Voor zover ik weet is (1) niet mogelijk op iOS, aangezien de kernel er voor zorgt dat alleen geheugen dat gecontroleerd is door het code signing systeem van iOS uitvoerbaar is. Enige uitzondering die ze daarop maken is voor de JavaScript engine van Safari; dat is ook een van de redenen dat "alternatieve" browsers zoals Chrome en Firefox op iOS gedwongen zijn om de Safari engine te gebruiken waardoor de meerwaarde beperkt is.
Het is een emulator, het emuleert dus in feite de x86 code van de tools die erin draaien. Dus er wordt geen nieuw gecompileerde code echt uitgevoerd, maar er wordt x86 assembly geinterpreteerd en geemuleerd.
Nee dat klopt volgens mij niet, emulatie doelt op emulatie van een terminal interface, niet x86 naar arm oid
Inderdaad, had het verkeerd begrepen. Dat komt misschien ook omdat het hier helemaal niet om emulatie gaat. Het is gewoon een echte terminal. Heb hun "appeal" even doorgelezen. Het maakt gebruik van scripting om packages te downloaden en voert deze gewoon netjes uit. Er wordt inderdaad niets geemuleerd.
De interface emulatie noemen vind ik wat ver gaan, het is gewoon een text based interface. iSH noemt het ook nergens zelf zo, dat heeft Tweakers ervan gemaakt.
Terminal emulatie komt van de tijd dat het nog printers waren die direct op papier printen. 1960, 1970. Het protocol van die machines word 'geemuleerd' en terminal emulator is een veel gebruikte term en zeker niet iets dat tweakers zo maar zelf heeft bedacht ;)
Nou, zo simpel is het niet. Een programma kan zelf makkelijk nieuwe code 'verzinnen' (of inladen van internet), en uitvoeren. Wat er gesigneerd wordt door Apple (bij goedkeuring), is puur en alleen het programma dat je installeert. Wat er na het opstarten daarvan voor instructies uitgevoerd worden, is niet iets waar nog een signature check overheen gaat ofzo.

Als een programma de mogelijkheid heeft om dynamisch nieuwe instructies in te laden, zoals vanaf internet, vanaf invoer van de gebruiker enz, voorkom je dat alleen door een app die die mogelijkheid biedt niet te signen, en dus gewoon te verbieden. Zoals Apple normaal doet dus.

Dit kan in extreme gevallen inderdaad tot een 'uitbraak' uit de sandbox leiden, al is dat niet heel eenvoudig anders had die hele sandbox geen zin. Daarom signeert Apple normaal dit soort apps dus niet, maar waar ze hebben er nu blijkbaar een uitzondering op gemaakt. Ik denk dat ze steeds meer vertrouwen beginnen te krijgen in de kwaliteit van hun sandboxing.

[Reactie gewijzigd door GekkePrutser op 25 juli 2024 06:39]

Voor zover ik weet is het wel zo simpel. Een memory mapping die (ooit) schrijfbaar is (geweest), mag nooit executable zijn in iOS apps (behalve als je een developer bent en je app in een debugger draait). Als je dat probeert werkt het gewoon niet. Wat er voor zorgt dat je dus niet dynamisch code kan genereren.
Ah maar dat is een andere beperking, dat heeft niks met het signen te maken. Maar meer met de sandbox en het OS (NX flags). Ik wist inderdaad niet dat ze dat deden.

Maar hoe kan deze app dan werken als hij x86 emuleert?

[Reactie gewijzigd door GekkePrutser op 25 juli 2024 06:39]

Het begrip "terminal emulator" doelt op het emuleren van een ouderwetse terminal (een op tekst-gebaseerd invoer/uitvoer apparaat voor interactie met een gebruiker). Heel kort door de bocht betekent het "commandovenster" hier. Ik vermoed dat alle commandos die je in het commando venster draait native gecompiled zijn voor de iPhone.

[Reactie gewijzigd door enzozus op 25 juli 2024 06:39]

Ah ja, aan punt 1 had ik nog niet gedacht. Bedankt!
Legale app store games kunnen natuurlijk niet concurreren met illegaal gedownloade Nintendo games.

Maar ik denk niet dat dat iets met deze app te maken heeft. Een app die scripts uit kan voeren (is dit een volledige Bash shell?) kan onveilig zijn. Apple heeft er niet zoveel zin in om te testen of dit wel voldoende sandboxed is.

[Reactie gewijzigd door Wolfos op 25 juli 2024 06:39]

Een reden geeft het bedrijf niet, maar vermoedelijk gebeurt dat na veel kritiek van gebruikers.
Als Apple zich iets aantrok van de kritiek van hun gebruikers, zaten Fortnite en xCloud/Stadia ook in de App Store. Ik denk niet dat dit de reden is geweest,
De blokkade van Fortnite had een hele andere reden. Apple wil niet dat partijen een eigen eco-systeem of store achter de huidige AppleStore bouwen. Apple verliest hierdoor controle en inkomsten.
En de klant verliest zijn gegevens en eenvoud van centrale factuur en subscription management. Ook voor klanten zijn er nadelen aan het hebben van losse betaalmiddelen. Ze hebben dat misschien niet direct door, maar het is wel degelijk aanwezig.
Als dat klopt, prefereren mensen wel gewoon apps die met een bepaalde betaalprovider samenwerken. Dat Apple het niet toestaat toont mij alleen maar dat Apple bang is dat mensen dit soort voordelen niet belangrijk genoeg vinden om de Apple-taks voor af te dragen.

Het is zeker een voordeel, maar om dat nou als tegenargument voor een vrije appmarkt te gebruiken vind ik wat ver gaan.
Als dat klopt, prefereren mensen wel gewoon apps die met een bepaalde betaalprovider samenwerken. Dat Apple het niet toestaat toont mij alleen maar dat Apple bang is dat mensen dit soort voordelen niet belangrijk genoeg vinden om de Apple-taks voor af te dragen.
Geen enkele store staat het toe. Dus dat is het argument niet.

Als consument wordt je veel te snel een poot uitgedraaid als het neerkomt op betalen, kosten en mogelijke nadelen in ruil voor wisselgeld. Dat is waar partijen als Google en FB groot mee zijn geworden. De consument boeit het wel degelijk iets alleen komt men daar pas achter als het te laat is.
Niet helemaal netjes geformuleerd, wat Epic feitelijk gedaan heeft is dat ze gewoon de regels hebben overtreden door een stuk code? later te activeren. Hierdoor konden betaling buiten de Apple omgeving mogelijk worden. Naar aanleiding van het overtreden van de regels heeft Apple Fortnite verwijderd uit de App store en het account geblokkeerd. Gezien dit doelbewust gedaan was snap ik dat Apple niet luistert naar de kritieken (buiten beschouwing gelaten of je het er mee eens bent of niet..

Bij de casus van Termulator lijkt dat ieder geval niet het geval. Dit kan er voor zorgen dat Apple heel anders luistert naar deze kritiek.

[Reactie gewijzigd door jdh009 op 25 juli 2024 06:39]

Kans is aanwezig, dat de Apple engineers de boel hebben nagekeken, en er geen mogelijkheid was om uit de sandbox te komen ( dus alleen in Alpine )

Een goede terminal-app op IOS zou welkom zijn, nu klooi ik wat aan door een Guacamole-shell in een webpagina aan te roepen.

* en goed bevat dan ook een eventuele eenmalige aankoop, niet subscription based zoals Termius

[Reactie gewijzigd door FreshMaker op 25 juli 2024 06:39]

Sluit niet uit dat de Apple engineers het hebben nagekeken en hebben bedacht dat dit wel een erg handig tooltje is en het zelf willen/ kunnen gebruiken.

Aangezien het niet om veel geld gaat met zaken als in game aankopen is de drijfveer om het te blokkeren een stuk kleiner.
Sinds wanneer is Termius subscription based? Gebruik het al jaren naar tevredenheid. Geldt dat dan enkel voor nieuwe users?
Ah dat is alleen voor bepaalde Premium features die ik zelf niet nodig heb zie ik nu.

[Reactie gewijzigd door CyBeRSPiN op 25 juli 2024 06:39]

Gebruik al jaren WebSSH.
Werkt prima op iphone, ipad
Da's een heel ander verhaal, dat heeft met (veel) geld te maken.
Net als a-Shell draait dit geheel als WebAssembly (wasm) binnen WKWebView (Safari render engine).

Dus zijn ze net zo (on)veilig als websites. Lijkt mij dus eigenlijk geen App Store regels overtreden. Of misschien wel ergens naar de letter, maar niet om de reden dat ze een regel hebben ingesteld. Namelijk: geen ARM assembly downloaden en uitvoeren, omdat dit te hack-gevoelig is. Dit zit nu net als Safari, binnen drie van Apple's eigen beveiliging lagen: App sandbox, WebKit sandbox, WebAssembly vertaling.

a-Shell heeft overigens ook het bericht gehad dat ze uit de App Store geweerd worden.

[Reactie gewijzigd door Henk Poley op 25 juli 2024 06:39]

Uit interesse: wat zou je hier vooral mee (kunnen) doen op je iOS device?
Je hebt eigenlijk gewoon een portable linux sandbox, ik gebruik persoonlijk Android maar maak redelijk vaak gebruik van terminal apps om bijvoorbeeld een snel scriptje in python te schrijven en te testen terwijl ik geen laptop / pc beschikbaar heb.
Gebruik deze app al lange tijd en hij is af en toe echt heel handig. Zelfs youtube-dl draait er prima in trouwens, al is het aardig traag. Om met andere servers te verbinden zijn er wel betere apps, zoals Shelly.
"Termulator"? Is dat echt een woord voor de aanduiding van een algemene Terminal Emulator of is Termulator toch een specifiek product? Op andere sites over iSH kom ik dat woord niet tegen en heeft men het gewoon over Terminal Emulator.
Wel een leuk woord overigens :)

[Reactie gewijzigd door clueless12 op 25 juli 2024 06:39]

Klopt, taaltechnisch gezien dan, maar ik moet zeggen dat ik van "termulator" nog nooit had gehoord. En ik gebruik toch al jaren Linux waardoor de terminal verre van ongewoon voor me is, en ik zit daarbij ook nog op Linux-sites, maar ook daar hebben mede-Linuxers het nooit over "termulator" gehad.

[Reactie gewijzigd door TheVivaldi op 25 juli 2024 06:39]

Kende de term ook niet, en gebruik toch al zo'n 20 jaar diverse terminal emulators, de term wordt in ieder geval niet gebruikt binnen Linux, BSD en Solaris kringen.
Het is ook gewoon een 'terminal'. "Open even een terminal" betekent heus niet dat je die oude VT100 moet gaan openschroeven...
Het valt niet vaak voor dat de eindgebruiker z'n zin krijgt in Cupertino. Hoera!

Op dit item kan niet meer gereageerd worden.