Virus Jumps to RFID 109
MrShaggy writes "According to a BBC article, researchers have been able to make the jump between RFID tags and viruses. They found that the mere act of scanning a mere 127 bytes could cause an attack vector that would corrupt databases. From the article;'"This is intended as a wake-up call," said Andrew Tanenbaum, one of the researchers in the computer science department at Amsterdam's Free University that did the work revealing the weaknesses on smart tags.
"We ask the RFID industry to design systems that are secure," he said.'"
FUD? (Score:5, Insightful)
It is the software running on the host machine which does not validate the data coming from the tag that has major issues.
If I can corrupt a database by entering an invalid lookup code then theres something severely fucked up.
My bet is its something like the sql injection attacks we see on the web, and you don't see people blaming the input box in those cases.
quote from the article:
In some cases, said the researchers, viruses could be spread by household pets such as cats and dogs that are injected with the tags to help identify their owner.
The pets aren't going to be spreading this "virus" themselves its not sexually transmitted, it cannot be passed by rubbing up against your leg. It will be the vets computer which gets infected because of crappy validation.
MEOOOOOOOOEEEEEEEEOOOOOOOOOOOWWWWWWWWWWWWW!
Charlie says: always validate your external inputs before doing any data processing.
Smart tags, dumb research.
(and thats coming from someone who doesn't like RFID)
Re:FUD? (Score:5, Insightful)
Re:FUD? (Score:4, Interesting)
The trouble with RFID is that anyone scanning can pick up your tag without you knowing about it. This includes secure and non-secure software. If 99% of software reading these tags are secure, there is still that 1% that isn't and you wouldn't know that it picked up your personal info until you get the bogus credit card bills in the mail.
Re:FUD? (Score:4, Informative)
I walk up to the reader with a crafted RFID and infect the database.
This is "I can to read ANYONE's card" not "anyone can read MY card".
Bit obvious really : "don't trust random stranger's data" - Film at 11
Re:FUD? (Score:2)
Re:FUD? (Score:5, Informative)
this can be used (incorrectly) to produce a raw piece of SQL:
select * from Customers where Code='Slashdot_LiquidCoooled_634315'
if that code contains quotes and they are not being handled correctly then it is certainly possible to corrupt the database.
Suppose my RFID was programmed with something like this and it was not being validated correctly:
'; Drop table [customers];
The resulting SQL could end up something like:
select * from Customers where Code=''; Drop table [customers];'
bye bye customers table (if permissions set at defaults and the wind is blowing your way)
Re:FUD? (Score:2)
In java (and hey, could be similar with RoR, etc), you write your web tier stuff to a middleware layer. There, we use Hibernate and HQL. That sort of crap 'just wouldn't parse' in HQL or criterion queries, as it would not be a valid parameter for "?".
Heck, even writing SQL, why aren't you writing parameterized prepared statements? Doesn't that also make you immune to this sort of crap?
"Select * from customers where Code = ?"
setParam(1, myCraptasticUntextedVariable)
Re:FUD? (Score:1)
- an hierarchical query (Oracle style)
- a bulk update having a sub-select in the SET clausule
So yeah, HQL can't do everything for you, and when you have to go beyond what HQL can do, you end up hand coding SQL. At this point there are two types of programmers:
- Those that escape single quotes
- Those that don't
And no, prepared statements aren't always the right option.
"More dangerous than those which are totally ignorant are those which do not yet know enough to be
Re:FUD? (Score:1)
Lets introduce the RFID devs to error handling... (Score:1)
Re:FUD? (Score:2)
Barcodes typically contain short, fixed-length information. It's very hard to get a system to handle such data wrong to the point where it can be infected by a worm. In fact, I think you'd have to be trying.
RFID tags implement a computer-controlled bi-directional communication protocol with a host machine to enable the host to identify the tags that are close to it. Many include writable storage space for storing end-user de
Re:FUD? (Score:2)
catch exception(e);
{
this.output("Cannot understand tag");
}
Re:FUD? (Score:2)
Re:FUD? (Score:2)
I actually asked the same question when I read TFA.
Like the JPEG "virus" (Score:5, Interesting)
Absolutely. This is just like the Windows JPEG "virus" that was due to buggy JPEG parsing. Describing RFIDs as an attack vector is appropriate, but inert data can not be a virus. You typically don't execute images or identification information. Perhaps there needs to be some catchy name for this type of attack, but really it's just a new example of the common overflow bug.
Re:Like the JPEG "virus" (Score:4, Insightful)
How's about "programmer dumbass attack"? Seems quite apt, to me. Any programmer worth his salt knows that he has to check for invalid data, yet so many software developers (both open source and closed source) let code go to production levels that fails to perform even the most basic of validations.
Maybe we need to send a bunch of programmers back to basic training! "Security boot camp"! Only let's make it real tough: make them all write basic currency conversion programs and for every piece of invalid data that makes it through without being validated, that program's author loses a finger! That'll teach 'em!
Re:Like the JPEG "virus" - secure C code How to... (Score:2)
Doesn't do any good if your boss doesn't want you to spend the extra time coding the data validation code in order to get the job done now to keep expenses down. As we all know, time *is* money. (as is paying labor/brainpower/both)
So much for an ounce of prevention is worth a
Re:Like the JPEG "virus" (Score:5, Insightful)
Inert data can certainly be a virus: that's especially true in biology, where the entire virus metaphor arose in the first place. After all, virus is an piece of inert genetic data. When in contact with a live host, it alters the behaviour of the host; but without a host system to carry it, viruses are inert. Some people like to characterize them as the boundry case between "living" and "non-living": they're an inert substance that alter living beings in a self-replicating way to make more of themselves; in that sense, they "reproduce", despite not being "alive".[1]
As for your original point, you're right that it's probably not correct to call RFID tag exploits "viruses": but not because viruses are inert. It's because the RFID virus is not being copied on by the host system it contacts; although, it sounds like it should be possible to craft a virus that does, assuming you could infect the RFID code writing software.
--
AC
[1] People debate terms like "alive", "dead", "reproduce" for hours on end, until they realize they're arguing over definitions, which by definition is pointless....
Re:Like the JPEG "virus" (Score:3, Funny)
No it isn't.
Re:Like the JPEG "virus" (Score:4, Insightful)
How about "poison" instead of "virus", since its presence may cause illness or death but does not self replicate. As in "attackers injected poison RFID tags into system, which is now inoperable until repairs are made."
Re:Like the JPEG "virus" (Score:1)
RFID injection attack?
Re:FUD? (Score:2, Insightful)
Re:FUD? (Score:5, Insightful)
"We ask the RFID industry to design systems that are secure"
If the "RFID industry" creates the reader software as well, and if the vulnerability is in that reader software (which is what it sounds like), then the criticism is perfectly valid.
FTA:
""Everyone working on RFID technology has tacitly assumed that the mere act of scanning an RFID tag cannot modify back-end software and certainly not in a malicious way. Unfortunately, they are wrong," wrote the trio in their research paper."
and
"The researchers urged companies working on RFID systems to start thinking seriously about security measures to protect against future threats."
No one's really saying the tags are inherently insecure, any more than they might say that a floppy disk or a CD are insecure. If the reader software currently has many vulnerabilities, no matter how obvious it might seem in hindsight, this seems like valuable research to me.
Re:FUD? (Score:3, Insightful)
If the reader software currently has many vulnerabilities, no matter how obvious it might seem in hindsight, this seems like valuable research to me.
No hindsight required. Any programmer not validating input, particularly from an untrusted source, is simply incompetent.
This isn't "research" as such, merely exposure of incompetents.
The fact that RFID is the vector is irrelevant. Though if the programmers and testers were this incompetent with something as simple as RFID data I hate to think how badly
Re:FUD? (Score:1)
Impossible. Andrew Tannenbaum did the research:)
Re:FUD? (Score:2, Insightful)
Who said the lookup code had to be invalid? Simply broadcasting a valid signal for a product would be sufficent to corrupt the database. You can trick inventory systems into thinking they have 500,000 razor blades, when they only have 100,000.
Is it data, or is it code? (Score:2, Insightful)
The minute you start interpreting data you have to treat it as potentially hostile. This goes for computers AND people. There's not much difference between a "hostile" data-set that the attacker knows will be interpreted as SQL code that he can use to corrupt an automated-supply-ordering system, a hostile data set that the attacker knows will be interpreted as a false we-are-low-on-inventory-order-more or we-ha
Re:Is it data, or is it code? (Score:2)
If you merely store and read data - ANY DATA - and do not interpret it, it cannot carry a virus.
Storing is enough to enable a buffer overflow, which is enough to make the payload active
Re:FUD? (Score:2)
Re:FUD? It's both the SW and the tag. (Score:2)
The tags shouldn't be able to be overwritten without the change being detected as corrupt data. In other words, strong encryption. This is available, but more expensive, so customers are being marketed cheaper insecure solutions without becoming aware of the risks they are incurring.
If the patient ID tag in your hospital bracelet can be modified to show you as a different patient (say one needing a leg amputated for
Good thing this was not in the US (Score:3, Insightful)
They could have been sued for violation of the DMCA. We don't want any weaknesses exposed by researchers in the early stages... we'd rather have them exposed maliciously after its too late!
http://religiousfreaks.com/ [religiousfreaks.com]Re:Good thing this was not in the US (Score:3, Interesting)
While I doubt that anyone would have been charged for this in the USA, I agree that the DMCA hampers some meaningful research. To be fair, however, all this project did was prove something that most of us could have figured out on our own: GIGO!
Correction on the University name (Score:3, Informative)
Re:Correction on the University name (Score:1)
The university policy seems to be not to translate the name, so the newspaper should have followed that, but the translation certainly is correct. Many organisations (including universities) translate their names in an international context and some of the personal homepages on the VU translate the name, so I wouldn't be t
Re:Correction on the University name (Score:2)
Free University Compiler Kit (VUCK) (Score:2)
The Amsterdam Compiler Kit was originally known as the Free University Compiler Kit (or VUCK, since V stands for Free in Dutch). RMS wrote: [gnu.org]
Makes me kind of glad (Score:2, Interesting)
I, for one, would rather not have electronics malfunctioning in my body. Sometimes I have a hard enough time just k
Re:Makes me kind of glad (Score:1, Insightful)
Erm (Score:5, Informative)
This article can be summed up in the following sentance:
OH NO! Anyone can put ANYTHING on a tag that might be read by database software! Horrors!
C'mon people, this is basic data security 101 - never trust inputs without validation. This isn't a problem with insecure tags, it's a problem with import software/database code.
Re:Erm (Score:1)
Re:Erm (Score:2)
#1 - "Virus" implies code that can be executed to create a security breach.
#2 - Incorrect Data (what you're talking about). There are ways around this problem, but the article is talking about using the very small amount of data that can be stored on RFID chips as a vector for attack on the software/database it is stored in, and the above comment applies to this.
Stupidity can open the door for malice (Score:2)
Of course, one problem is that it looks like most programmers never took Data Security 101.
This isn't a problem with RFID tags, per se, of course. But it does bring up an interesting point: Even if some [walmart.com] big [homedepot.com] company [staples.com] intends to be completely nice about their RFID tag usage (and that is far from a given), some bad guy might be able to subvert the system to do bad things. The more data big companies have on you, the worse those bad thin
#ERROR (Score:4, Informative)
Noooooooooooooooooo!!!
Re:#ERROR (Score:1)
Re:#ERROR (Score:2)
Wooo, the horrors! And so can Slashdot, an image, a DVD or the email your mother just sent to you. If a programmer does not do input validation or leaves its code open to buffer overruns, everything can be the carrier of a virus. There is no particular danger coming from RFID, only from dumb developers of reader software.
read only (Score:4, Informative)
But read-only RFID tags and RFID readers are much cheaper than the writable kind, so this is not very practical. And RFID tags typically can't hold bit strings which are long enough to contain useful software. So, again, this is a bit silly.
useful software in small packages (Score:1)
Imagine a machine that had the following library routines:
Routine #1: Alert user to input a blank CD and copy x bytes of data from Y location, perhaps a location on the internet, to the CD
Routine #2: Erase the hard disk
Routine #3: Reboot the system from the CD
With only 3 function calls - probably well under 127 bytes of code, I can cause the machine to reboot and load
Re:read only (Score:3, Informative)
"So a specially-crafted RFID tag could cause code to execute on a vulnerable RFID reader. That's not a virus. But if this code causes the RFID reader to begin writing copies of the bad data to tags, then we have a virus."
The real article [rfidvirus.org] (not the lame BBC article) describes how to construct a self-replicating virus that copies itself to RFID tags as they are written. They also describe how to create RFID worms. The attack vectors are basically SQL injection, cross-site scripting, and buffer overflows.
Re:Hillarious (Score:2)
This may explain why I keep finding Petsmart price lists and my Phidgets RFID Kit next to the cat food bowl.
oh no!! (Score:3, Funny)
Re:oh no!! (Score:2)
I'm sorry Uncle Kent; I lost my thesaurus (Score:4, Funny)
fevered rivalry between Springfield U. and
Springfield A&M spreads like wildfever. [looks
offstage] This is writing?
Intern: I'm sorry Uncle Kent; I lost my thesaurus.
What about other forms of external data? (Score:4, Insightful)
I'd be willing to bet that someone with enough cleverness and free time could come up with a 'credit card virus' that could compromise specific vulnerable payment systems/credit card processing devices when swiped. For all we know, there may already be such exploits out there now. At least in the case of credit card processing, it's financial code so hopefully there are some stringent security processes along with multiple layers of verification, but still - pretty scary to think about.
Re:What about other forms of external data? (Score:1)
Re:What about other forms of external data? (Score:2)
Making something too stupid to be hacked is an excellent line of defense where this kind of hacking is concerned...You can't trick it into doing something it can't do.
Re:Slash Dot gets another scoop (Score:1)
I am getting sick and tired of the anonymous coward bullshit out there... so a couple of things that I feel need to be said
Rather than trolling over /
oh no! (Score:3, Informative)
Re:oh no! - Same story (Score:1)
Not a RFID problem, more a database flaw (Score:4, Insightful)
It's not really new news either. I think I remember that report from about a year ago when RFIDs in our passports became an issue and Tanenbaum raised those concerns. So is this something new or do the old news get repeated for a lack of anything new?
Must be summer, all the politicians are on holiday...
Old News... (Score:1)
Re:Old News... (Score:2)
A mere 127 bytes? If only they had more (Score:2, Insightful)
Re:A mere 127 bytes? If only they had more (Score:3, Funny)
Considering Andy Tannenbaum is involved, I imagine they would probably port Minix to it.
look out. (Score:1)
No expects an RFID tag to send a SQL injection... (Score:3, Interesting)
I think the point of the research is that many RFID tags are read by closed or theortically isolated systems like inventory control devices and pet identity scanners that probably have not been examined for the kinds of vulnerabilities that we (theoretically) look for Internet accessible servers.
While we have a mediocre system for updating Internet-based applications in the face of vulnerabilties, the prospect of updating piles of non-Internet accessible devices is indeed an issue.
The full article -- it's legit (Score:5, Informative)
There is a PDF and also a complete discussion at http://www.rfidvirus.org/virus.html [rfidvirus.org], breifly outlining "Replication Using Self-Referential Queries" and "Replication Using Quines".
For example,
Database systems usually offer a way to obtain the currently running queries for system administration purposes. However, these functions return queries as an normal string, which makes it possible to store them in the database, thereby replicating the query.
We have developed two versions of the virus, one that is contained in a single query, and one the requires multiple queries. The virus using a single query requires less features from the database, but cannot carry SQL code as a payload. The virus using multiple queries requires a database that supports this, but it does allow SQL code as a payload.
Details on the virus using self-referential queries can be found athttp://www.rfidvirus.org/exploits/sql_self/index .html
Maybe they're trying to hide the real problems (Score:3, Interesting)
The real security issue is that it's trivial to clone an RFID tag. Using it for identification is like using a piece of paper that can be photocopied, except that the attacker doesn't have to swipe the paper to copy it. But if people only think about the non-fundamental and insignificant flaws with RFID, they can be distracted from the fact that it's entirely inappropriate in the first place.
Where can I get one of these? (Score:2)
I really want to know, though, where can I get just such a "viral" RFID tag to stick to the inside cover of my passport?
I just need to wrap the real passport in a modified tinfoil beanie, put the fake one on the outside of the beanie, and laugh heartily as people scan me and then go white in horror at the realization of what they just did to themselves. Bwa-hahahah!
/ only half kidding - I'd do this in a heartbeat if I had the hardware to program my own tags.
Barcodes next ? (Score:1)
Re:Barcodes next ? (Score:1)
That's what I thought.
And since most systems which READ Barcodes also PRINT barcodes at some point You could even spread it on paper that way. ;-)
Re:Barcodes next ? (Score:2)
Memory Spot (Score:1)
RFID is read-only, a read-only virus can't spread, so it isn't a virus!
Unless you write a really really bad RFID-chip reader which can buffer-overflow and write in memory a simple RFID chip can't do any harm. So its also pretty safe to use...
Don't go thinking about infecting your local supermarket with a new RFID-virus, it'll never happen.
But while we're on it, have you guys heard ab
Completely Innacurate (Score:4, Informative)
First off this is basically a dupe of http://it.slashdot.org/article.pl?sid=06/03/15/132 4233 [slashdot.org]. It was innacurate when it was first reported and it's innacurate now.
Here is my reply from the original post and it applies here:
"There are a variety of standards on how RFID tags are encoded, all of which break down into partitioning the tag's data into segments to form the unique identifier
For the sake of argument I'll use EPC SGTIN96. In the SGTIN tag has four partitions: Filter, Company Prefix, Item Reference, and Serial Number. Each of these fields is of varying size depending on how big tag is. Typically RFID tags are 96 bits (although some tags can get up to 1Kbit), even using 7 bit ascii there's not a whole lot you can fit in 96 bits. When I poll the reader, or the middleware I'm getting back a number, e.g. 12345 and it's my responsibility to parse through that number to get the fields I'm interested in. In this scenario I would have to be doing some *very* sloppy programming to open myself to an SQL injection attack (something along the lines of treating known numeric data as a string).
ISO and EPC Gen 2 tags do support custom data, which I suppose could be used to store strings but since it is severely space constrained (typically in the range of 2-32 bytes) I question the viability of such an attack. Not to mention that the field will likely be used to writing in ids instead of human readable data. Finally, it is common to encrypt the custom payload on an rfid tag. So even if somebody were to change it to "AND 1 = 1" it would be caught when the program tries to decrypt the tag."
An RFID tag contains just a number; newer RFID tags have support for custom payload but 99% of RFID tags are so space constrained that nobody would put raw strings in the tag. I spent a good chunk of last year devleloping RFID applications and not once did I do a straight lookup on the database from data I pulled from the RFID tag. So while I guess this classifies as a vulnerability somebody who does straight database lookups using RFID tag data will bring down the company long before an RFID tag exploit will.
"The" Andrew S. Tannenbaum (Score:2, Insightful)
Personally, I would not have posted that article without attaching these links. Tannenbaum is a key player in modern computer science research and education.
Check out his homepage [cs.vu.nl]
and his Wiki [wikipedia.org] biography.
Do RFID tags run Minix? (Score:1)
Not really possible on modern RFID systems. (Score:2, Informative)
1) Most malicious SQL statements (i.e ";DELETE FROM USERS;") require more than 64-96 bits, the current standard for RFID tags.
2) Any RFID software system that is compliant with EPCglobal's Tag Data Specification (http://www.epcglobalinc.org) is inherently "immune" to this issue. The TDS spec defines several tag formats for use in software systems that require the tag's binary data to be in hexadecimal or decimal format
And the last time you checked your mail was . . . (Score:1)
Re: (Score:2)
That's Odd.... (Score:1)
Tag data no different than web input boxes. (Score:2)
The Java application I work on uses prepared statements, and according to the Java specs, input data are checked for invalid SQL...therefore code injection is not possible.
I assume other frameworks will offer similar techniques.
Consumer Groups? (Score:1)
Just think of all of the evil things you could do. (Score:2)
Ya, damned RFID (Score:2)
I wish they would build a more secure keyboard.
Who ever wrote that crap? (Score:1)
Whoever wrote the RFID reading code needs to be shot. Or at least fired and sent back to college.
"Oh yeah, we have an externally read binary string here, let's rely on its structure and assume it is always what we expect." Sweet.
However, if 1000 people walked into a walmart (Score:1)
Re:Bad news (Score:2)