Category Archives: News

S3 Ep24: How not to get snooped, scammed or hoaxed [Podcast]

An iPhone app that allowed anyone to snoop on anyone’s calls. A data breach where 150,000 surveillance cameras protecting hundreds or thousands of customers were apparently “secured” by a single password. And please don’t forget: “Don’t spread hoaxes, folkses.”

With Kimberly Truong, Doug Aamoth and Paul Ducklin.

Intro and outro music by Edith Mudge.


WHERE TO FIND THE PODCAST ONLINE

You can listen to us on Soundcloud, Apple Podcasts, Google Podcasts, Spotify, Stitcher, Overcast and anywhere that good podcasts are found.

Or just drop the URL of our RSS feed into your favourite podcatcher software.

If you have any questions that you’d like us to answer on the podcast, you can contact us at tips@sophos.com, or simply leave us a comment below.

Bitcoin scammer who hacked celeb Twitter accounts gets 3 years

Remember when a whole bunch of celebs and top brands apparently went crazy tweeting about Bitcoin?

It happened in July 2020, when many prominent blue-badged Twitter accounts suddenly starting sending out scammy cryptocoin messages.

Fake tweets were blasted out from compromised accounts belonging to an eclectic range of high-profile people and companies, including Joe Biden, Elon Musk, Barack Obama, Bill Gates, Apple and many others.

The scam was based on a catchy, if unlikely, proposition: pay $X in bitcoins to the the happy-go-lucky celeb, and they’d later pay you back $2X, presumably because you’d have helped to stimulate trading in Bitcoin by doing your $X transaction in the first place.

Feeling greatful [note spelling blunder], doubling all payments made to my Bitcoin address,” said one message, urging people to pay out $1000 now, with a $2000 payback to follow later.

(Cynical recipients of these messages no doubt stopped to think that the world’s richest people generally didn’t achieve their wealth by selling products and services at a 50% loss, given that making a profit depends, by definition, on taking in more money than you pay out.)

Social engineering

It soon transpired that Twitter had lost control of numerous high-profile accounts to gift-of-the-gab cybercriminals – social engineers, in popular parlance – who had tricked Twitter staff into handing over internal account passwords for Twitter systems.

Those passwords ultimately allowed the crooks to login to internal Twitter servers that would usually only be used by Twitter support staff.

Apparently there was (at the time, anyway) no secondary protection such as two-factor authentication or managerial approval to guard against unauthorised updates to critical data such as the email address associated with a Twitter account, even a blue-flagged “verified” account.

The crooks were therefore allegedly able to set themselves up to receive password reset notifications for 45 accounts, out of the 130 that they tried to take over, and thereby to get direct control of the Twitter feeds of Musk, Gates, Apple et al.

But what was embarrasssing for Twitter and 45 of its blue-flag users was much worse for hopeful victims who “invested” a total of BTC 12.86 (about $120,000 at the time) in the scam.

As one of the law enforcement agents who investigated the attack noted wrly in his affidavit, “No bitcoin was ever returned, much less doubled.

Charges brought

The investigation quickly led to arrests, with one of the suspects charged for this attack being just 17 years old at the time.

Despite his youth, he nevertheless had his bail set at a whopping $725,000.

That bail hearing achieved a measure of world-wide fame it could have done without, having been Zoombombed by numerous online interlopers who blasted the courtroom with music, profanities, rants against the judiciary and, perhaps unsurprisingly, porn.

The accused, Graham Ivan Clark, was said in August 2020 to have escaped prosecution as a 16-year-old in a 2019 case in which he voluntarily paid back BTC 100 (about $1 million at the time, which is not an amount that you’d expect many 16-year-olds would have in their possession) to investigators.

According to a New York Times story published around the time of Clark’s bail hearing, those 100 bictoins were part of a larger haul of BTC 164 taken from a Seattle technology investor, who was the victim of a SIM swap.

Interestingly, that would have left BTC 64 unaccounted for – an amount that was, at the time, very close to the $725,000 bail fee set by the court.

Plea deal done

Clark has now made what is known in America as a plea agreement with prosecutors, whereby he will accept a sentence of three years in prison followed by three years on probation in return for pleading guilty to and accepting responsibility for the crime.

Clark has apparently been in custody since his arrest at the end of July 2020 – it seems he didn’t come up with the money needed to make bail, after all – and that time will be counted towards his three-year stretch.

According to the Florida judiciary, Clark will serve his sentence as a youngster, given that he was under 18 at the time he committed the crime, but will get at least 10 years in an adult prison if he violates the terms of his juvenile probation following his release from custody.

If there’s any good news in all of this, it’s that the court’s reports says that “Law enforcement officials seized all the Bitcoin received by Clark through this ‘Bit-Con’ scam and it is expected to be returned to its rightful owners.

With BTC 1 now worth about five times as many dollars as it was at the time of the scam, the victims may come out ahead after all, but not through any effort on Clark’s part – and not to the tune of two-times-five-times better off, of coure, which is where they’d be if Clark had been telling the truth.

What to do?

To help you protect yourself from ‘Bit-Con’ scams of this sort, we’ll repeat the advice we gave last year when news of this crime hit:

  • If a message sounds too good to be true, it IS too good to be true. If Musk, Gates, Apple, Biden or any well-known person or company wanted to hand out huge amounts of money on a whim, they wouldn’t demand that you hand them money first. That’s not a gift, it’s a trick, and it’s an obvious sign that the person’s account has been hacked. If in doubt, leave it out!
  • Cryptocurrency transactions don’t have the legal protections that you get with banks or payment card companies. There is no fraud reporting service or transaction cancellation in the world of cryptocurrency. Sending someone cryptocoins is like handing over banknotes in an envelope – if they go to a crook, you are unlikely ever to see them again. The fact that the stolen bitcoins were apparently recovered in this case can be considered a lucky exception, not the rule. If in doubt, don’t send it out!
  • Look out for any and all signs that a message might not be real. Crooks don’t have to make spelling mistakes or get important details wrong, but often they do, like the word greatful (should be grateful) in the example above. If the crooks do make a blunder, such as writing 50$ when in your country the currency sign comes first, or making a mess of their own phone number, or using clumsy or unnatural language, don’t let them get away with it. Treat it with doubt unless everything checks out!

LEARN MORE ABOUT SOCIAL ENGINEERING

We talk to world-renowned social engineering expert Rachel Tobac.
No audio player visible? Listen directly on Soundcloud.

Serious Security: The Linux kernel bugs that surfaced after 15 years

Researchers at cybersecurity company GRIMM recently published an interesting trio of bugs they found in the Linux kernel…

…in code that had been sitting there inconspicuously for some 15 years.

Fortunately, it seemed that no one else had looked at the code for all that time, at least not diligently enough to spot the bugs, so they’re now patched and the three CVEs they found are now fixed:

  • CVE-2021-27365. Exploitable heap buffer overflow due to the use of sprintf().
  • CVE-2021-27363. Kernel address leak due to pointer used as unique ID.
  • CVE-2021-27364. Buffer overread leading to data leakage or denial of service (kernel panic).

The bugs were found in the kernel code that implements iSCSI, a component that implements the venerable SCSI data interface over the network, so you can talk to SCSI devices such as tape and disk drives that aren’t connected directly to your own computer.

Of course, if you don’t use SCSI or iSCSI anywhere in your network any more, you’re probably shrugging right now and thinking, “No worries for me, I don’t have any of the iSCSI kernel drivers loaded because I’m simply not using them.”

After all, buggy kernel code can’t be exploited if it’s just sitting around on disk – it has to get loaded into memory and actively used before it can cause any trouble.

Except, of course, that most (or at least many) Linux systems not only come with hundreds or even thousands of kernel modules in the /lib/modules directory tree, ready to use in case they are ever needed, but also come configured to allow suitably authorised apps to trigger the automatic loading of modules on demand.

Note. As far as we’re aware, these bugs were patched in the following officially-maintained Linux kernels, all dated 2021-03-07: 5.11.4, 5.10.21, 5.4.103, 4.19.179, 4.1.4.224, 4.9.260, 4.4.260. If you have a vendor-modified kernel or an unofficial series kernel not on this list, consult your distro maker. To check your kernel version, run uname -r at a command prompt.

For example, my own Linux system comes with nearly 4500 just-in-case-you-ever-need-them kernel modules:

 root@slack:/lib/modules/5.10.23# find . -name '*.ko' ./kernel/arch/x86/crypto/aegis128-aesni.ko ./kernel/arch/x86/crypto/blake2s-x86_64.ko ./kernel/arch/x86/crypto/blowfish-x86_64.ko [...4472 lines deleted...] ./kernel/sound/usb/usx2y/snd-usb-usx2y.ko ./kernel/sound/x86/snd-hdmi-lpe-audio.ko ./kernel/virt/lib/irqbypass.ko #

I guess I might need the Blowfish cipher module some day, but because I don’t have any software that I expect to use it, I could probably do without the blowfish-x86_64.ko driver.

And although I really wouldn’t mind owning one of Tascam’s rather cool Ux2y sound cards (e.g. US122, US224, US428), I don’t really have the need or space for one, so I doubt I’ll ever need the snd-usb-usx2y.ko driver, either.

Yet there they are, and by accident or design, any of those drivers could end up loaded automatically, depending on the software I happen to use, even if I’m not running as a root user at the time.

Worth a second look

The potential risk posed by unloved, unused and mostly overlooked drivers is what made GRIMM look twice at the abovementioned bugs.

The researchers were able to find software that an unprivileged attacker could run in order to activate the buggy driver code they’d found, and they were able to produce working exploits that could variously:

  • Perform privilege escalation to promote a regular user to have kernel-level superpowers.
  • Extract kernel memory addresses in order to facilitate other attacks that need to know where kernel code is loaded in memory.
  • Crash the kernel, and therefore with it the whole system.
  • Read snippets of data out of kernel memory that was supposed to be off-limits.

As uncertain and as limited in scope as the last exploit sounds, it looks as though the data that an unprivileged user might be able to peek at could include fragments of data being transferred during genuine iSCSI device accesses.

If so, this means, in theory, that a crook with an unprivileged account on a server where iSCSI was in use might be able to run an innocent-looking program to sit in the background, sniffing out a random selection of privileged data from memory.

Even a fragmented and unstructured stream of confidential data snatched intermittently out of a privileged process (remember the infamous Heartbleed bug?) could allow dangerous secrets to escape.

Don’t forget how easy it is for computer software to recognise and “scrape up” data patterns as they fly past in RAM, such as credit card numbers and email addresses.

The bugs revisited

Above, we mentioned that the first bug in this set was due to “use of sprintf()“.

That’s a C function that’s short for formatted print into string, and it’s a way of printing out a text message into a block of memory so you can use it later.

For example, this code…

 char buf[64]; /* Reserve a 64-byte block of bytes */ char *str = "42"; /* Actually has 3 bytes, thus: '4' '2' NUL */ /* Trailing zero auto-added: 0x34 0x32 0x00 */ sprintf(buf,"Answer is %s",str)

…would leave the memory block buf containing the 12 characters “Answer is 42“, followed by a zero byte terminator (ASCII NUL), followed by 51 untouched bytes at the end of the 64-byte buffer.

However, sprintf() is always dangerous and should never be used, because it doesn’t check if there’s enough space in the final memory block for the printed data to fit.

Above, if the string stored in the variable str is longer than 54 bytes, including the zero byte at the end, then it won’t fit into buf along with the extra text “Answer is “.

Even worse, if the text data str doesn’t have a zero byte at the end, which is how C denotes when to stop copying a string, you might accidentally copy thousands or even millions of bytes that follow str in memory until you just happen to hit a zero byte, by which time you would almost certainly have crashed the kernel.

Modern code shouldn’t use C functions that can perform memory copies of unlimited length – use snprintf(), which means format and print at most N bytes into string, and its friends instead.

Don’t give out your address

The second bug above arose from using memory addresses as unique identifiers.

That sounds like a good idea: if you need to denote a data object in your kernel code with an ID number that won’t clash with any other object in your code, you can just use the numbers 1, 2, 3 and so on, adding one every time, and solve the problem.

But if you want a unique identifier that won’t clash with any other numbered object in the kernel, you might think, “Why not use the memory address where my object is stored, because it’s obviously unique, given that two objects can’t be at the same place in kernel RAM at the same time?” (Not unless there’s a already a crisis with memory usage.)

The problem is that if your object ID is ever visible outside the kernel, for example so that untrusted programs in so-called userland can refer to it, you’ve just given away information about the internal layout of kernel memory, and that’s not supposed to happen.

Modern kernels use what’s called KASLR, short for kernel address space layout randomisation, specifically to stop unprivileged users from figuring out the exact internal layout of the kernel.

If you’ve ever done any lock-picking (it’s a popular and surprisingly relaxing hobby amongst hackers and cybersecurity researchers – you can even buy transparent locks for educational fun), you’ll know it’s a lot easier if you already know how the lock’s mechanism is laid out internally.

Similarly, knowing exactly what’s been loaded where inside the kernel almost always makes other bugs such as buffer overflows much easier to exploit.

What to do?

  • Update your kernel. If you rely on your distro creator for new kernels, be sure to get the latest update. See above for the version numbers in which these bugs were patched.
  • Don’t use C programming functions that are known to be troublesome. Avoid any memory accessing function that doesn’t keep track of the maximum amout of data to use. For example, use variants that have an -n- in their name to denote “read or copy at most N bytes”, or -l- to denote “use a maximum length of L bytes. This gives you a better chance of preventing memory overruns. Examples: use strlcpy(), not strcpy(); strnlen(), not strlen(); and strlcat(), not strcat()).
  • Don’t use memory addresses as handles or “unique” IDs. If you can’t use a counter that you just increase by 1 every time, use a random number of at least 128 bits instead. These are sometimes known as UUIDs, for univerally unique identifiers. Use a high-quality random source such as /dev/urandom on Linux and macOS, or BCryptGenRandom() on Windows.
  • Consider locking down kernel module loading to prevent surprises. If you set the Linux system variable kernel.modules_disable=1 once your server has booted up and is running correctly, no more modules can be loaded, whether by accident or by design, and this setting can only be turned off by rebooting. Use sysctl -w kernel.modules_disable=1 or echo 1 > /proc/sys/kernel/modules_disable.
  • Consider identifying and keeping only the kernel modules you need. You can either build a static kernel with only the required modules compiled in, or create a kernel package for your servers with all unnecessary modules removed. With a static kernel, you can turn off module loading altogether if you wish.

S3 Ep 23.5: An interview with cybersecurity expert John Noble CBE

Can we regulate cyberspace? Is GDPR working? What about encryption? And how to protect healthcare at this critical time?

In this special episode of the Naked Security Podcast, we talk to an insightful cybersecurity expert with a storied history in the industry, John Noble CBE:

About the expert

John Noble was Director of Incident Management at the UK’s National Cyber Security Centre (NCSC) until his retirement in 2018. During his 40 years of Government service, John specialised in operational delivery and strategic business change. For his work in creating effective partnerships in the run up to the London Olympics, he was made a Commander of the British Empire (CBE) in 2012.

John helped to establish the NCSC and led the response to nearly 800 significant cyberincidents. This work has given him unrivalled experience in dealing with and understanding the causes of cyberattacks.

John is currently a non-executive director at NHS Digital, where he chairs the Information Assurance and Cyber Security Committee. NHS Digital is the national information and technology partner to the health and social care system in England.


WHERE TO FIND THE PODCAST ONLINE

You can listen to us on Soundcloud, Apple Podcasts, Google Podcasts, Spotify, Stitcher, Overcast and anywhere that good podcasts are found.

Or just drop the URL of our RSS feed into your favourite podcatcher software.

If you have any questions that you’d like us to answer on the podcast, you can contact us at tips@sophos.com, or simply leave us a comment below

Original music in the podcast by Edith Mudge (https://www.edithmudge.com)

Naked Security Live – HAFNIUM explained in plain English

The word “Hafnium” can refer [a] to a gang currently involved in a bunch of attacks, [b] to the exploits they’re using at the moment, and [c] to the malware they are deploying after they get in.

Lots of things to think about – we run you through them all:

[embedded content]

Watch directly on YouTube if the video won’t play here.
Click the on-screen Settings cog to speed up playback or show subtitles.

Articles mentioned in the video

Why not join us live next time?

Don’t forget that these talks are streamed weekly on our Facebook page, where you can catch us live every Friday.

We’re normally on air some time between 18:00 and 19:00 in the UK (late morning/early afternoon in North America).

Just keep an eye on the @NakedSecurity Twitter feed or check our Facebook page on Fridays to find out the time we’ll be live.

go top