Hi all,
Recently,when I ported some linux drivers to genode, occasionally, there will be such an error "somebody tries to fake us!". To find the cause of the error,I analysed the communication between client and server.
First, client creats the connection to the server, then the server will creat a server object with an valid id, also an Ipc_gate object(binding to the entry_point thread) is created and the id is set as the gate-label. Last, the server returns the cap of the ipc_gate.
I grab the session capability the client obtained after the connection, and get the idŁ¨local nameŁ©of the session capability. Once I call the interface function the server provided, the id will be encapsulated into Message Register(mr[0]). When the server receives the requesting message, it will compare the id(the server recevied) and label of the gate. I tried to illustrate it by making a simple diagram.Is this correct?
Now I know the value of the id on client side is 0x14dc,the label of the gate is 0x14dc, but the id on server side is 0x4. My doubt is:where the object id could be tampered?